X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Ftree-ssa-structalias.c;h=28bb0bb3e57bf72ba47e1f39a635d6208beb0466;hb=61cf0658435c1b14a727d5478fa0dd7b0ac5434c;hp=88fa3729fee8400938445573078f09523bc405e1;hpb=3f9da5596a39ec1c557502bf3f559aaeaf48fc0d;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c index 88fa3729fee..28bb0bb3e57 100644 --- a/gcc/tree-ssa-structalias.c +++ b/gcc/tree-ssa-structalias.c @@ -3351,6 +3351,26 @@ get_constraint_for_1 (tree t, VEC (ce_s, heap) **results, bool address_p) get_constraint_for_ssa_var (t, results, address_p); return; } + case CONSTRUCTOR: + { + unsigned int i; + tree val; + VEC (ce_s, heap) *tmp = NULL; + FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (t), i, val) + { + struct constraint_expr *rhsp; + unsigned j; + get_constraint_for_1 (val, &tmp, address_p); + for (j = 0; VEC_iterate (ce_s, tmp, j, rhsp); ++j) + VEC_safe_push (ce_s, heap, *results, rhsp); + VEC_truncate (ce_s, tmp, 0); + } + VEC_free (ce_s, heap, tmp); + /* We do not know whether the constructor was complete, + so technically we have to add &NOTHING or &ANYTHING + like we do for an empty constructor as well. */ + return; + } default:; } break;