diff --git a/gcc/testsuite/gcc.dg/vect/vect-early-break_131-pr118269.c b/gcc/testsuite/gcc.dg/vect/vect-early-break_131-pr118269.c new file mode 100644 index 0000000000000000000000000000000000000000..5f7abcee57c90a983ce713d253af0d93fb098dbb --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/vect-early-break_131-pr118269.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-add-options vect_early_break } */ +/* { dg-additional-options "-O3" } */ + +short g_113; +int func_1_l_1273, func_1_l_1370, func_1_l_1258; +void func_1() { + int l_1375; + for (; l_1375; l_1375--) { + for (; func_1_l_1370;) + ; + func_1_l_1273 &= !0; + func_1_l_1273 &= g_113; + if (func_1_l_1258) + break; + } +} diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc index 2b9d5956635752df790725eb7713fbf81b7dcee6..bb1138bfcfba11b9fd16f9dd321ac0aadf33663c 100644 --- a/gcc/tree-vect-loop.cc +++ b/gcc/tree-vect-loop.cc @@ -6039,7 +6039,9 @@ vect_create_epilog_for_reduction (loop_vec_info loop_vinfo, # b1 = phi <b2, b0> a2 = operation (a1) b2 = operation (b1) */ - bool slp_reduc = (slp_node && !REDUC_GROUP_FIRST_ELEMENT (stmt_info)); + bool slp_reduc + = (slp_node + && !REDUC_GROUP_FIRST_ELEMENT (STMT_VINFO_REDUC_DEF (reduc_info))); bool direct_slp_reduc; tree induction_index = NULL_TREE; @@ -6331,7 +6333,7 @@ vect_create_epilog_for_reduction (loop_vec_info loop_vinfo, a multiple of the SLP group size. The same is true if we couldn't use a single defuse cycle. */ - if (REDUC_GROUP_FIRST_ELEMENT (stmt_info) + if (REDUC_GROUP_FIRST_ELEMENT (STMT_VINFO_REDUC_DEF (reduc_info)) || direct_slp_reduc || (slp_reduc && constant_multiple_p (TYPE_VECTOR_SUBPARTS (vectype), group_size)) @@ -6632,7 +6634,7 @@ vect_create_epilog_for_reduction (loop_vec_info loop_vinfo, if (slp_node) { tree initial_value = NULL_TREE; - if (REDUC_GROUP_FIRST_ELEMENT (stmt_info)) + if (REDUC_GROUP_FIRST_ELEMENT (STMT_VINFO_REDUC_DEF (reduc_info))) initial_value = reduc_info->reduc_initial_values[0]; neutral_op = neutral_op_for_reduction (TREE_TYPE (vectype), code, initial_value, false);