diff options
Diffstat (limited to 'gcc/tree-ssa-structalias.c')
-rw-r--r-- | gcc/tree-ssa-structalias.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c index c7ee8aa..42099dd 100644 --- a/gcc/tree-ssa-structalias.c +++ b/gcc/tree-ssa-structalias.c @@ -2327,8 +2327,11 @@ process_constraint (constraint_t t) varinfo_t vi; gcc_assert (rhs.offset == 0); - for (vi = get_varinfo (rhs.var); vi != NULL; vi = vi->next) - vi->address_taken = true; + /* No need to mark address taken simply because of escaped vars + constraints. */ + if (lhs.var != escaped_vars_id) + for (vi = get_varinfo (rhs.var); vi != NULL; vi = vi->next) + vi->address_taken = true; VEC_safe_push (constraint_t, heap, constraints, t); } |