aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-forwprop.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenth@gcc.gnu.org>2005-05-26 21:07:38 +0000
committerJeff Law <law@gcc.gnu.org>2005-05-26 15:07:38 -0600
commit450c300706be35ba449d1a9d834e108ddcc3e74c (patch)
treef756e596fcc002b13c70d53236c7e41461b341c7 /gcc/tree-ssa-forwprop.c
parenta04323f4cbc780f714ee126c1d7b3953b0c04e44 (diff)
downloadgcc-450c300706be35ba449d1a9d834e108ddcc3e74c.zip
gcc-450c300706be35ba449d1a9d834e108ddcc3e74c.tar.gz
gcc-450c300706be35ba449d1a9d834e108ddcc3e74c.tar.bz2
tree-ssa-forwprop.c (forward_propagate_addr_expr): See through ADDR_EXPR in finding place to propagate into.
* tree-ssa-forwprop.c (forward_propagate_addr_expr): See through ADDR_EXPR in finding place to propagate into. From-SVN: r100223
Diffstat (limited to 'gcc/tree-ssa-forwprop.c')
-rw-r--r--gcc/tree-ssa-forwprop.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c
index 17da0f1..de85b7c 100644
--- a/gcc/tree-ssa-forwprop.c
+++ b/gcc/tree-ssa-forwprop.c
@@ -560,7 +560,8 @@ forward_propagate_addr_expr (tree stmt)
if (bb_for_stmt (use_stmt)->loop_depth > stmt_loop_depth)
return false;
- /* Strip away any outer COMPONENT_REF/ARRAY_REF nodes from the LHS. */
+ /* Strip away any outer COMPONENT_REF/ARRAY_REF nodes from the LHS.
+ ADDR_EXPR will not appear on the LHS. */
lhs = TREE_OPERAND (use_stmt, 0);
while (TREE_CODE (lhs) == COMPONENT_REF || TREE_CODE (lhs) == ARRAY_REF)
lhs = TREE_OPERAND (lhs, 0);
@@ -591,9 +592,12 @@ forward_propagate_addr_expr (tree stmt)
return true;
}
- /* Strip away any outer COMPONENT_REF/ARRAY_REF nodes from the RHS. */
+ /* Strip away any outer COMPONENT_REF, ARRAY_REF or ADDR_EXPR
+ nodes from the RHS. */
rhs = TREE_OPERAND (use_stmt, 1);
- while (TREE_CODE (rhs) == COMPONENT_REF || TREE_CODE (rhs) == ARRAY_REF)
+ while (TREE_CODE (rhs) == COMPONENT_REF
+ || TREE_CODE (rhs) == ARRAY_REF
+ || TREE_CODE (rhs) == ADDR_EXPR)
rhs = TREE_OPERAND (rhs, 0);
/* Now see if the RHS node is an INDIRECT_REF using NAME. If so,