diff options
Diffstat (limited to 'gcc/tree-vect-loop.c')
-rw-r--r-- | gcc/tree-vect-loop.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index 113dc0f..b322213 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -1705,8 +1705,13 @@ vect_is_simple_reduction (loop_vec_info loop_info, gimple phi, return NULL; } - op3 = TREE_OPERAND (TREE_OPERAND (gimple_assign_rhs1 (def_stmt), 0), 0); - op4 = TREE_OPERAND (TREE_OPERAND (gimple_assign_rhs1 (def_stmt), 0), 1); + op3 = TREE_OPERAND (gimple_assign_rhs1 (def_stmt), 0); + if (COMPARISON_CLASS_P (op3)) + { + op4 = TREE_OPERAND (op3, 1); + op3 = TREE_OPERAND (op3, 0); + } + op1 = TREE_OPERAND (gimple_assign_rhs1 (def_stmt), 1); op2 = TREE_OPERAND (gimple_assign_rhs1 (def_stmt), 2); @@ -1750,10 +1755,14 @@ vect_is_simple_reduction (loop_vec_info loop_info, gimple phi, print_generic_expr (vect_dump, TREE_TYPE (op1), TDF_SLIM); fprintf (vect_dump, ","); print_generic_expr (vect_dump, TREE_TYPE (op2), TDF_SLIM); - if (op3 && op4) + if (op3) { fprintf (vect_dump, ","); print_generic_expr (vect_dump, TREE_TYPE (op3), TDF_SLIM); + } + + if (op4) + { fprintf (vect_dump, ","); print_generic_expr (vect_dump, TREE_TYPE (op4), TDF_SLIM); } |