aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-forwprop.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2006-01-11 19:44:57 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2006-01-11 19:44:57 +0000
commita40d3497d07afb3419c8b62322029d6af579b52f (patch)
treea9fcef8a8a45e353d52dccac8670eeec074c2021 /gcc/tree-ssa-forwprop.c
parent68f9b84438d3ad84f1baf6413723a205e6a49b07 (diff)
downloadgcc-a40d3497d07afb3419c8b62322029d6af579b52f.zip
gcc-a40d3497d07afb3419c8b62322029d6af579b52f.tar.gz
gcc-a40d3497d07afb3419c8b62322029d6af579b52f.tar.bz2
re PR tree-optimization/25734 (ice for legal kernel code with -Os)
2006-01-11 Richard Guenther <rguenther@suse.de> PR tree-optimization/25734 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not stop propagation after successful propagation to the LHS. * gcc.dg/tree-ssa/pr25734.c: New testcase. From-SVN: r109598
Diffstat (limited to 'gcc/tree-ssa-forwprop.c')
-rw-r--r--gcc/tree-ssa-forwprop.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c
index 2f857dc..892edde 100644
--- a/gcc/tree-ssa-forwprop.c
+++ b/gcc/tree-ssa-forwprop.c
@@ -686,7 +686,6 @@ forward_propagate_addr_expr_1 (tree stmt, tree use_stmt)
TREE_OPERAND (lhs, 0) = unshare_expr (TREE_OPERAND (stmt, 1));
fold_stmt_inplace (use_stmt);
tidy_after_forward_propagate_addr (use_stmt);
- return true;
}
/* Trivial case. The use statement could be a trivial copy. We
@@ -696,7 +695,7 @@ forward_propagate_addr_expr_1 (tree stmt, tree use_stmt)
we can catch some cascading effects, ie the single use is
in a copy, and the copy is used later by a single INDIRECT_REF
for example. */
- if (TREE_CODE (lhs) == SSA_NAME && TREE_OPERAND (use_stmt, 1) == name)
+ else if (TREE_CODE (lhs) == SSA_NAME && TREE_OPERAND (use_stmt, 1) == name)
{
TREE_OPERAND (use_stmt, 1) = unshare_expr (TREE_OPERAND (stmt, 1));
tidy_after_forward_propagate_addr (use_stmt);