diff options
author | Diego Novillo <dnovillo@redhat.com> | 2004-09-17 21:30:23 +0000 |
---|---|---|
committer | Diego Novillo <dnovillo@gcc.gnu.org> | 2004-09-17 17:30:23 -0400 |
commit | 823f0809e616d4de3347dce1dec5f5a897f841ad (patch) | |
tree | 6785cb84202c00e716d03fe97bfca3a1951193dd /gcc/tree-ssa-alias.c | |
parent | b5fefcf63de2696b73921ba0aeb12c46b085e34b (diff) | |
download | gcc-823f0809e616d4de3347dce1dec5f5a897f841ad.zip gcc-823f0809e616d4de3347dce1dec5f5a897f841ad.tar.gz gcc-823f0809e616d4de3347dce1dec5f5a897f841ad.tar.bz2 |
re PR tree-optimization/17319 (-fno-tree-dce cause ICE)
PR tree-optimization/17319
* tree-ssa-alias.c (compute_points_to_and_addr_escape): Also
examine pointers on the LHS of an assignment.
(collect_points_to_info_r): Handle RETURN_EXPR.
testsuite/ChangeLog
PR tree-optimization/17319
* gcc.dg/pr17319.c: New test.
From-SVN: r87673
Diffstat (limited to 'gcc/tree-ssa-alias.c')
-rw-r--r-- | gcc/tree-ssa-alias.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c index d30dc38..2fe4069 100644 --- a/gcc/tree-ssa-alias.c +++ b/gcc/tree-ssa-alias.c @@ -694,6 +694,9 @@ compute_points_to_and_addr_escape (struct alias_info *ai) bitmap_set_bit (ai->written_vars, ann->uid); if (may_be_aliased (var)) (VARRAY_UINT (ai->num_references, ann->uid))++; + + if (POINTER_TYPE_P (TREE_TYPE (op))) + collect_points_to_info_for (ai, op); } /* Mark variables in V_MAY_DEF operands as being written to. */ @@ -1831,6 +1834,12 @@ collect_points_to_info_r (tree var, tree stmt, void *data) switch (TREE_CODE (stmt)) { + case RETURN_EXPR: + if (TREE_CODE (TREE_OPERAND (stmt, 0)) != MODIFY_EXPR) + abort (); + stmt = TREE_OPERAND (stmt, 0); + /* FALLTHRU */ + case MODIFY_EXPR: { tree rhs = TREE_OPERAND (stmt, 1); |