diff options
author | Tom de Vries <tdevries@suse.de> | 2018-06-21 12:44:38 +0000 |
---|---|---|
committer | Tom de Vries <vries@gcc.gnu.org> | 2018-06-21 12:44:38 +0000 |
commit | 494e75321f6ce62918be661ef6b38c5888f0acaf (patch) | |
tree | c363c86b863b7d2748adf44928a3d1c67fdfec12 /gcc/tree-ssa-tail-merge.c | |
parent | 8732dd82418090d9bb0f6279d0e5a5af52266d6b (diff) | |
download | gcc-494e75321f6ce62918be661ef6b38c5888f0acaf.zip gcc-494e75321f6ce62918be661ef6b38c5888f0acaf.tar.gz gcc-494e75321f6ce62918be661ef6b38c5888f0acaf.tar.bz2 |
[tail-merge] Fix side-effect test in stmt_local_def
2018-06-21 Tom de Vries <tdevries@suse.de>
PR tree-optimization/85859
* tree-ssa-tail-merge.c (stmt_local_def): Copy gimple_is_call
test with comment from bb_no_side_effects_p.
* gcc.dg/pr85859.c: New test.
From-SVN: r261844
Diffstat (limited to 'gcc/tree-ssa-tail-merge.c')
-rw-r--r-- | gcc/tree-ssa-tail-merge.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/gcc/tree-ssa-tail-merge.c b/gcc/tree-ssa-tail-merge.c index f482ce1..1583881 100644 --- a/gcc/tree-ssa-tail-merge.c +++ b/gcc/tree-ssa-tail-merge.c @@ -301,7 +301,15 @@ stmt_local_def (gimple *stmt) if (gimple_vdef (stmt) != NULL_TREE || gimple_has_side_effects (stmt) || gimple_could_trap_p_1 (stmt, false, false) - || gimple_vuse (stmt) != NULL_TREE) + || gimple_vuse (stmt) != NULL_TREE + /* Copied from tree-ssa-ifcombine.c:bb_no_side_effects_p(): + const calls don't match any of the above, yet they could + still have some side-effects - they could contain + gimple_could_trap_p statements, like floating point + exceptions or integer division by zero. See PR70586. + FIXME: perhaps gimple_has_side_effects or gimple_could_trap_p + should handle this. */ + || is_gimple_call (stmt)) return false; def_p = SINGLE_SSA_DEF_OPERAND (stmt, SSA_OP_DEF); |