diff options
author | Richard Biener <rguenther@suse.de> | 2017-06-01 08:05:24 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2017-06-01 08:05:24 +0000 |
commit | 48932682a54f1a4a97fd8fc026f2d816519fdb7a (patch) | |
tree | 84cab82818172c6a30cd70ae641506e23050e0b2 /gcc/c | |
parent | 58cdd35b95418d0112e8c030d50e63df6a3e6a30 (diff) | |
download | gcc-48932682a54f1a4a97fd8fc026f2d816519fdb7a.zip gcc-48932682a54f1a4a97fd8fc026f2d816519fdb7a.tar.gz gcc-48932682a54f1a4a97fd8fc026f2d816519fdb7a.tar.bz2 |
re PR middle-end/66313 (Unsafe factorization of a*b+a*c)
2017-06-01 Richard Biener <rguenther@suse.de>
PR middle-end/66313
* fold-const.c (fold_plusminus_mult_expr): If the factored
factor may be zero use a wrapping type for the inner operation.
* tree-tailcall.c (independent_of_stmt_p): Pass in to_move bitmap
and handle moved defs.
(process_assignment): Properly guard the unary op case. Return a
tri-state indicating that moving the stmt before the call may allow
to continue. Pass through to_move.
(find_tail_calls): Handle moving unrelated defs before
the call.
* c-c++-common/ubsan/pr66313.c: New testcase.
* gcc.dg/tree-ssa/loop-15.c: Adjust.
From-SVN: r248771
Diffstat (limited to 'gcc/c')
0 files changed, 0 insertions, 0 deletions