aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-alias.c
diff options
context:
space:
mode:
authorDiego Novillo <dnovillo@redhat.com>2004-09-17 21:30:23 +0000
committerDiego Novillo <dnovillo@gcc.gnu.org>2004-09-17 17:30:23 -0400
commit823f0809e616d4de3347dce1dec5f5a897f841ad (patch)
tree6785cb84202c00e716d03fe97bfca3a1951193dd /gcc/tree-ssa-alias.c
parentb5fefcf63de2696b73921ba0aeb12c46b085e34b (diff)
downloadgcc-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.c9
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);