From a989bcc3f56ee3b90a9c8d78c94d424d1629f2ec Mon Sep 17 00:00:00 2001 From: Ilya Enkovich Date: Thu, 12 Nov 2015 12:59:05 +0000 Subject: =?UTF-8?q?re=20PR=20tree-optimization/68305=20(ICE=20on=20valid?= =?UTF-8?q?=20code=20at=20-O3=20on=20x86=5F64-linux-gnu:=20tree=20check:?= =?UTF-8?q?=20expected=20class=20=E2=80=98expression=E2=80=99,=20have=20?= =?UTF-8?q?=E2=80=98exceptional=E2=80=99=20(ssa=5Fname)=20in=20tree=5Foper?= =?UTF-8?q?and=5Fcheck,=20at=20tree.h:3436)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit gcc/ PR tree-optimization/68305 * tree-vect-slp.c (vect_get_constant_vectors): Support COND_EXPR with SSA_NAME as a condition. gcc/testsuite/ PR tree-optimization/68305 * gcc.dg/vect/pr68305.c: New test. From-SVN: r230252 --- gcc/tree-vect-slp.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) (limited to 'gcc/tree-vect-slp.c') diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c index 75875f3..ab1d40e 100644 --- a/gcc/tree-vect-slp.c +++ b/gcc/tree-vect-slp.c @@ -2740,18 +2740,20 @@ vect_get_constant_vectors (tree op, slp_tree slp_node, switch (code) { case COND_EXPR: - if (op_num == 0 || op_num == 1) - { - tree cond = gimple_assign_rhs1 (stmt); + { + tree cond = gimple_assign_rhs1 (stmt); + if (TREE_CODE (cond) == SSA_NAME) + op = gimple_op (stmt, op_num + 1); + else if (op_num == 0 || op_num == 1) op = TREE_OPERAND (cond, op_num); - } - else - { - if (op_num == 2) - op = gimple_assign_rhs2 (stmt); - else - op = gimple_assign_rhs3 (stmt); - } + else + { + if (op_num == 2) + op = gimple_assign_rhs2 (stmt); + else + op = gimple_assign_rhs3 (stmt); + } + } break; case CALL_EXPR: -- cgit v1.1