diff options
author | Richard Sandiford <rsandifo@nildram.co.uk> | 2007-10-09 11:05:33 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2007-10-09 11:05:33 +0000 |
commit | 05c42b11e64489819f65e0daec4679f311ec3632 (patch) | |
tree | 94d4249b124b7d6332c42eef3d7a4bddeec5583c /gcc/tree-ssa-pre.c | |
parent | 94172876940bd493e6c193e46dfacaa77d1f8606 (diff) | |
download | gcc-05c42b11e64489819f65e0daec4679f311ec3632.zip gcc-05c42b11e64489819f65e0daec4679f311ec3632.tar.gz gcc-05c42b11e64489819f65e0daec4679f311ec3632.tar.bz2 |
re PR tree-optimization/33615 (Hoisting of potentially-throwing values for -fnon-call-exceptions)
gcc/
PR tree-optimization/33615
* tree-ssa-pre.c (compute_avail): Don't call make_values_for_stmt
if the statement might throw. Fix formatting.
gcc/testsuite/
PR tree-optimization/33615
* g++.dg/tree-ssa/pr33615-2.C: New test.
From-SVN: r129164
Diffstat (limited to 'gcc/tree-ssa-pre.c')
-rw-r--r-- | gcc/tree-ssa-pre.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c index 33c44ee..6203467 100644 --- a/gcc/tree-ssa-pre.c +++ b/gcc/tree-ssa-pre.c @@ -3555,10 +3555,11 @@ compute_avail (void) } else if (TREE_CODE (stmt) == GIMPLE_MODIFY_STMT - && !ann->has_volatile_ops - && TREE_CODE (GIMPLE_STMT_OPERAND (stmt, 0)) == SSA_NAME - && !SSA_NAME_OCCURS_IN_ABNORMAL_PHI - (GIMPLE_STMT_OPERAND (stmt, 0))) + && !ann->has_volatile_ops + && TREE_CODE (GIMPLE_STMT_OPERAND (stmt, 0)) == SSA_NAME + && (!SSA_NAME_OCCURS_IN_ABNORMAL_PHI + (GIMPLE_STMT_OPERAND (stmt, 0))) + && !tree_could_throw_p (stmt)) { if (make_values_for_stmt (stmt, block)) continue; |