aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-structalias.c
diff options
context:
space:
mode:
authorDaniel Berlin <dberlin@dberlin.org>2005-07-16 22:27:21 +0000
committerDaniel Berlin <dberlin@gcc.gnu.org>2005-07-16 22:27:21 +0000
commitb6e0bdbdc88ebc72ba56130188a0f309c581ea55 (patch)
tree5654d225ad252d8aeea79a498e54899d0baab9e6 /gcc/tree-ssa-structalias.c
parentea900239f40b40cb0b5174fb15818c862b6bb333 (diff)
downloadgcc-b6e0bdbdc88ebc72ba56130188a0f309c581ea55.zip
gcc-b6e0bdbdc88ebc72ba56130188a0f309c581ea55.tar.gz
gcc-b6e0bdbdc88ebc72ba56130188a0f309c581ea55.tar.bz2
tree-ssa-structalias.c (need_to_solve): Need to check for preds, too.
2005-07-16 Daniel Berlin <dberlin@dberlin.org> * tree-ssa-structalias.c (need_to_solve): Need to check for preds, too. From-SVN: r102100
Diffstat (limited to 'gcc/tree-ssa-structalias.c')
-rw-r--r--gcc/tree-ssa-structalias.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c
index cb45a8c..f715ce7 100644
--- a/gcc/tree-ssa-structalias.c
+++ b/gcc/tree-ssa-structalias.c
@@ -3494,7 +3494,8 @@ init_base_vars (void)
/* Return true if we actually need to solve the constraint graph in order to
get our points-to sets. This is false when, for example, no addresses are
taken other than special vars, or all points-to sets with members already
- contain the anything variable. */
+ contain the anything variable and there are no predecessors for other
+ sets. */
static bool
need_to_solve (void)
@@ -3516,6 +3517,9 @@ need_to_solve (void)
&& !bitmap_empty_p (v->solution)
&& !bitmap_bit_p (v->solution, anything_id))
found_non_anything = true;
+ else if (bitmap_empty_p (v->solution)
+ && VEC_length (constraint_edge_t, graph->preds[v->id]) != 0)
+ found_non_anything = true;
if (found_address_taken && found_non_anything)
return true;