Message ID | 20130807145803.GE17022@redhat.com |
---|---|
State | New |
Headers | show |
--- a/gcc/c/c-typeck.c +++ b/gcc/c/c-typeck.c @@ -10493,9 +10493,12 @@ build_binary_op (location_t location, enum tree_code code, && (doing_div_or_mod || doing_shift)) { /* OP0 and/or OP1 might have side-effects. */ - op0 = c_save_expr (op0); + if (!doing_shift || flag_isoc99) + { + op0 = c_save_expr (op0); + op0 = c_fully_fold (op0, false, NULL); + } op1 = c_save_expr (op1); - op0 = c_fully_fold (op0, false, NULL); op1 = c_fully_fold (op1, false, NULL); if (doing_div_or_mod) instrument_expr = ubsan_instrument_division (location, op0, op1);