[Bug tree-optimization/79666] [7 Regression] wrong code (SIGFPE) at -O2 on x86_64-linux-gnu (in both 32-bit and 64-bit modes)
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Feb 22 09:41:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79666
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
And it's fine, but re-writing -1 - _107 to -_107 + -1 is not valid. Negating
_107, that is, as done by build_symbolic_expr via
/* If the result lower bound is constant, we're done;
otherwise, build the symbolic lower bound. */
if (sym_min_op0 == sym_min_op1)
;
else if (sym_min_op0)
min = build_symbolic_expr (expr_type, sym_min_op0,
neg_min_op0, min);
else if (sym_min_op1)
min = build_symbolic_expr (expr_type, sym_min_op1,
neg_min_op1 ^ minus_p, min);
/* Likewise for the upper bound. */
if (sym_max_op0 == sym_max_op1)
;
else if (sym_max_op0)
max = build_symbolic_expr (expr_type, sym_max_op0,
neg_max_op0, max);
else if (sym_max_op1)
max = build_symbolic_expr (expr_type, sym_max_op1,
neg_max_op1 ^ minus_p, max);
esp. for the case of when minus_p causes the negation to happen.
More information about the Gcc-bugs
mailing list