diff options
author | Richard Biener <rguenther@suse.de> | 2021-10-11 12:27:10 +0200 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2021-10-13 13:11:12 +0200 |
commit | 3c0194d7ff21d61c02f3c6b111c83ef24a69e1f0 (patch) | |
tree | 8ffe45c73c7ed019e0f9f1eea777ed3eb47e9b9f /libgcc | |
parent | 77c7abe3588d407ed820224f8d1b1a17a16831a0 (diff) | |
download | gcc-3c0194d7ff21d61c02f3c6b111c83ef24a69e1f0.zip gcc-3c0194d7ff21d61c02f3c6b111c83ef24a69e1f0.tar.gz gcc-3c0194d7ff21d61c02f3c6b111c83ef24a69e1f0.tar.bz2 |
tree-optimization/102659 - avoid undefined overflow after if-conversion
The following makes sure to rewrite arithmetic with undefined behavior
on overflow to a well-defined variant when moving them to be always
executed as part of doing if-conversion for loop vectorization.
2021-10-11 Richard Biener <rguenther@suse.de>
PR tree-optimization/102659
* tree-if-conv.c (need_to_rewrite_undefined): New flag.
(if_convertible_gimple_assign_stmt_p): Mark the loop for
rewrite when stmts with undefined behavior on integer
overflow appear.
(combine_blocks): Predicate also when we need to rewrite stmts.
(predicate_statements): Rewrite affected stmts to something
with well-defined behavior on overflow.
(tree_if_conversion): Initialize need_to_rewrite_undefined.
* gcc.dg/torture/pr69760.c: Adjust the testcase.
* gcc.target/i386/avx2-vect-mask-store-move1.c: Expect to move
the conversions to unsigned as well.
Diffstat (limited to 'libgcc')
0 files changed, 0 insertions, 0 deletions