From 6cadda8be2f75200026930e24075868718f4843e Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Mon, 3 Sep 2012 13:24:07 +0000 Subject: re PR middle-end/54362 (COND_EXPR not understood by either alias or ITM) 2012-09-03 Richard Guenther PR tree-optimization/54362 * tree-ssa-structalias.c (find_func_aliases): Handle COND_EXPR. From-SVN: r190889 --- gcc/tree-ssa-structalias.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'gcc/tree-ssa-structalias.c') diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c index 609ee2c..6e71d55 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. */ -- cgit v1.1