--- /dev/null
+/* { dg-do compile } */
+/* { dg-add-options vect_early_break } */
+/* { dg-require-effective-target vect_early_break } */
+/* { dg-require-effective-target vect_int } */
+
+struct PixelWeight {
+ int m_SrcStart;
+ int m_Weights[16];
+};
+char h;
+void f(struct PixelWeight *pPixelWeights) {
+ int dest_g_m;
+ long tt;
+ for (int j = 0; j < 16; j++) {
+ int *p = 0;
+ if (j < pPixelWeights->m_SrcStart)
+ p = tt ? &pPixelWeights->m_Weights[0] : 0;
+ int pWeight = *p;
+ dest_g_m += pWeight;
+ }
+ h = dest_g_m;
+}
--- /dev/null
+/* { dg-do compile } */
+/* { dg-add-options vect_early_break } */
+/* { dg-require-effective-target vect_early_break } */
+/* { dg-require-effective-target vect_int } */
+/* { dg-additional-options "-std=gnu99 -fpermissive -fgnu89-inline -Ofast -fprofile-generate -w" } */
+
+extern int replace_reg_with_saved_mem_i, replace_reg_with_saved_mem_nregs,
+ replace_reg_with_saved_mem_mem_1;
+replace_reg_with_saved_mem_mode() {
+ if (replace_reg_with_saved_mem_i)
+ return;
+ while (++replace_reg_with_saved_mem_i < replace_reg_with_saved_mem_nregs)
+ if (replace_reg_with_saved_mem_i)
+ break;
+ if (replace_reg_with_saved_mem_i)
+ if (replace_reg_with_saved_mem_mem_1)
+ adjust_address_1();
+ replace_reg_with_saved_mem_mem_1 ? fancy_abort() : 0;
+}
phi = create_phi_node (new_def, exit_bb);
if (j)
def = gimple_get_lhs (vec_stmts[j]);
- SET_PHI_ARG_DEF (phi, loop_exit->dest_idx, def);
+ if (LOOP_VINFO_IV_EXIT (loop_vinfo) == loop_exit)
+ SET_PHI_ARG_DEF (phi, loop_exit->dest_idx, def);
+ else
+ {
+ for (unsigned k = 0; k < gimple_phi_num_args (phi); k++)
+ SET_PHI_ARG_DEF (phi, k, def);
+ }
new_def = gimple_convert (&stmts, vectype, new_def);
reduc_inputs.quick_push (new_def);
}