aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-alias.c
diff options
context:
space:
mode:
authorMarc Glisse <marc.glisse@inria.fr>2013-10-25 14:35:51 +0200
committerMarc Glisse <glisse@gcc.gnu.org>2013-10-25 12:35:51 +0000
commitbb362135e2d0fa4bf0290d0b403a3c1fc591da9e (patch)
treec7bd71aba38c9fb4a911f81de0767b37d0035766 /gcc/tree-ssa-alias.c
parent447f3223806b2e90f4b13ad934063fdea4768cdb (diff)
downloadgcc-bb362135e2d0fa4bf0290d0b403a3c1fc591da9e.zip
gcc-bb362135e2d0fa4bf0290d0b403a3c1fc591da9e.tar.gz
gcc-bb362135e2d0fa4bf0290d0b403a3c1fc591da9e.tar.bz2
tree-ssa-alias.c (ao_ref_init_from_ptr_and_size): Look for an ADDR_EXPR in the defining statement.
2013-10-25 Marc Glisse <marc.glisse@inria.fr> gcc/ * tree-ssa-alias.c (ao_ref_init_from_ptr_and_size): Look for an ADDR_EXPR in the defining statement. gcc/testsuite/ * gcc.dg/tree-ssa/alias-23.c: New file. From-SVN: r204065
Diffstat (limited to 'gcc/tree-ssa-alias.c')
-rw-r--r--gcc/tree-ssa-alias.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c
index 2fdd3d7..5d3c792 100644
--- a/gcc/tree-ssa-alias.c
+++ b/gcc/tree-ssa-alias.c
@@ -568,6 +568,14 @@ ao_ref_init_from_ptr_and_size (ao_ref *ref, tree ptr, tree size)
{
HOST_WIDE_INT t1, t2;
ref->ref = NULL_TREE;
+ if (TREE_CODE (ptr) == SSA_NAME)
+ {
+ gimple stmt = SSA_NAME_DEF_STMT (ptr);
+ if (gimple_assign_single_p (stmt)
+ && gimple_assign_rhs_code (stmt) == ADDR_EXPR)
+ ptr = gimple_assign_rhs1 (stmt);
+ }
+
if (TREE_CODE (ptr) == ADDR_EXPR)
ref->base = get_ref_base_and_extent (TREE_OPERAND (ptr, 0),
&ref->offset, &t1, &t2);