new file mode 100644
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-O" } */
+
+struct spa_buffer {
+ __UINT32_TYPE__ *metas;
+};
+void do_port_use_buffers(struct spa_buffer **buffers, void *endptr, void *mem)
+{
+ for (int i = 0; i < 128; i++)
+ {
+ for (int j = 0; j < 128; j++)
+ endptr = (void *)((__UINTPTR_TYPE__)endptr + buffers[i]->metas[j]);
+ if (endptr > mem)
+ return;
+ }
+}
@@ -6297,9 +6297,12 @@ vect_create_epilog_for_reduction (loop_vec_info loop_vinfo,
{
new_temp = scalar_results[0];
gcc_assert (TREE_CODE (TREE_TYPE (adjustment_def)) != VECTOR_TYPE);
- adjustment_def = gimple_convert (&stmts, scalar_type, adjustment_def);
- new_temp = gimple_build (&stmts, code, scalar_type,
+ adjustment_def = gimple_convert (&stmts, TREE_TYPE (vectype),
+ adjustment_def);
+ new_temp = gimple_convert (&stmts, TREE_TYPE (vectype), new_temp);
+ new_temp = gimple_build (&stmts, code, TREE_TYPE (vectype),
new_temp, adjustment_def);
+ new_temp = gimple_convert (&stmts, scalar_type, new_temp);
}
epilog_stmt = gimple_seq_last_stmt (stmts);