re PR tree-optimization/68305 (ICE on valid code at -O3 on x86_64-linux-gnu: tree check: expected class ‘expression’, have ‘exceptional’ (ssa_name) in tree_operand_check, at tree.h:3436)
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
This commit is contained in:
parent
02215d8f13
commit
a989bcc3f5
4 changed files with 37 additions and 11 deletions
|
@ -1,3 +1,9 @@
|
|||
2015-11-12 Ilya Enkovich <enkovich.gnu@gmail.com>
|
||||
|
||||
PR tree-optimization/68305
|
||||
* tree-vect-slp.c (vect_get_constant_vectors): Support
|
||||
COND_EXPR with SSA_NAME as a condition.
|
||||
|
||||
2015-11-12 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* config/visium/visium-protos.h (notice_update_cc): Delete.
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2015-11-12 Ilya Enkovich <enkovich.gnu@gmail.com>
|
||||
|
||||
PR tree-optimization/68305
|
||||
* gcc.dg/vect/pr68305.c: New test.
|
||||
|
||||
2015-11-12 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gcc.target/i386/pr67265-2.c: New test.
|
||||
|
|
13
gcc/testsuite/gcc.dg/vect/pr68305.c
Normal file
13
gcc/testsuite/gcc.dg/vect/pr68305.c
Normal file
|
@ -0,0 +1,13 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-additional-options "-O3" } */
|
||||
/* { dg-additional-options "-mavx2" { target avx_runtime } } */
|
||||
|
||||
int a, b;
|
||||
|
||||
void
|
||||
fn1 ()
|
||||
{
|
||||
int c, d;
|
||||
for (; b; b++)
|
||||
a = a ^ !c ^ !d;
|
||||
}
|
|
@ -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:
|
||||
|
|
Loading…
Add table
Reference in a new issue