diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9b3891c66c0..a6cf328f257 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,9 +1,15 @@ +2012-09-03 Richard Guenther + + PR tree-optimization/54362 + * tree-ssa-structalias.c (find_func_aliases): Handle COND_EXPR. + 2012-09-03 Andreas Krebbel * config/s390/s390.c (s390_loadrelative_operand_p): New function. (s390_check_qrst_address, print_operand_address): Use s390_loadrelative_operand_p instead of s390_symref_operand_p. - (s390_check_symref_alignment): Accept pointer size alignment for GOT slots. + (s390_check_symref_alignment): Accept pointer size alignment for + GOT slots. (legitimize_pic_address): Use load relative on z10 or later. 2012-09-03 Jakub Jelinek diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c index 609ee2c56b3..6e71d5504dc 100644 --- a/gcc/tree-ssa-structalias.c +++ b/gcc/tree-ssa-structalias.c @@ -4527,6 +4527,18 @@ find_func_aliases (gimple origt) && !POINTER_TYPE_P (TREE_TYPE (rhsop)))) || gimple_assign_single_p (t)) get_constraint_for_rhs (rhsop, &rhsc); + else if (code == COND_EXPR) + { + /* The result is a merge of both COND_EXPR arms. */ + VEC (ce_s, heap) *tmp = NULL; + struct constraint_expr *rhsp; + unsigned i; + get_constraint_for_rhs (gimple_assign_rhs2 (t), &rhsc); + get_constraint_for_rhs (gimple_assign_rhs3 (t), &tmp); + FOR_EACH_VEC_ELT (ce_s, tmp, i, rhsp) + VEC_safe_push (ce_s, heap, rhsc, rhsp); + VEC_free (ce_s, heap, tmp); + } else if (truth_value_p (code)) /* Truth value results are not pointer (parts). Or at least very very unreasonable obfuscation of a part. */