diff options
author | Alexandre Oliva <aoliva@redhat.com> | 2015-11-03 00:30:07 +0000 |
---|---|---|
committer | Alexandre Oliva <aoliva@gcc.gnu.org> | 2015-11-03 00:30:07 +0000 |
commit | 828ca3d835ac006cbcb2e5b480c6429cc8a75bdd (patch) | |
tree | 97886b9d02ac0ccd0177983b325624a1c00e5f03 /gcc/tree-ssa.h | |
parent | dac7e9b81974a69fc437d5115ebb46de11da14de (diff) | |
download | gcc-828ca3d835ac006cbcb2e5b480c6429cc8a75bdd.zip gcc-828ca3d835ac006cbcb2e5b480c6429cc8a75bdd.tar.gz gcc-828ca3d835ac006cbcb2e5b480c6429cc8a75bdd.tar.bz2 |
[PR68083] don't introduce undefined behavior in ifcombine
The ifcombine pass may move a conditional access to an uninitialized
value before the condition that ensures it is always well-defined,
thus introducing undefined behavior. Stop it from doing so.
for gcc/ChangeLog
PR tree-optimization/68083
* tree-ssa-ifcombine.c: Include tree-ssa.h.
(bb_no_side_effects_p): Test for undefined uses too.
* tree-ssa.c (gimple_uses_undefined_value_p): New.
* tree-ssa.h (gimple_uses_undefined_value_p): Declare.
for gcc/testsuite/ChangeLog
PR tree-optimization/68083
* gcc.dg/torture/pr68083.c: New. From Zhendong Su.
From-SVN: r229690
Diffstat (limited to 'gcc/tree-ssa.h')
-rw-r--r-- | gcc/tree-ssa.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/tree-ssa.h b/gcc/tree-ssa.h index 5a409e5..3b5bd70 100644 --- a/gcc/tree-ssa.h +++ b/gcc/tree-ssa.h @@ -51,6 +51,7 @@ extern bool tree_ssa_useless_type_conversion (tree); extern tree tree_ssa_strip_useless_type_conversions (tree); extern bool ssa_undefined_value_p (tree, bool = true); +extern bool gimple_uses_undefined_value_p (gimple *); extern void execute_update_addresses_taken (void); /* Given an edge_var_map V, return the PHI arg definition. */ |