+2015-01-14 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/64493
+ PR tree-optimization/64495
+ * tree-vect-loop.c (vect_finalize_reduction): For double-reductions
+ assign the proper vectorized PHI to the inner loop exit PHIs.
+
2015-01-14 Joey Ye <joey.ye@arm.com>
* config/arm/arm.c (arm_compute_save_reg_mask):
+2015-01-14 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/64493
+ PR tree-optimization/64495
+ * gcc.dg/vect/pr64493.c: New testcase.
+ * gcc.dg/vect/pr64495.c: Likewise.
+
2015-01-13 Martin Uecker <uecker@eecs.berkeley.edu>
* gcc.dg/Warray-bounds-11.c: New test-case.
--- /dev/null
+/* { dg-do run } */
+
+#include "tree-vect.h"
+
+int a, b, c, d, e, f, g, h;
+
+int
+main ()
+{
+ check_vect ();
+
+ for (; a; a--)
+ for (d = 1; d <= 0; d++)
+ for (; d;)
+ if (h)
+ {
+ if (!g) __builtin_abort ();
+ if (!0) __builtin_abort ();
+ }
+
+ for (f = 4; f; f--)
+ {
+ for (b = 0; b < 2; b++)
+ c |= 1;
+ e |= c;
+ }
+
+ return 0;
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */
--- /dev/null
+/* { dg-do run } */
+
+#include <assert.h>
+#include "tree-vect.h"
+
+int a, b, c, d, e, f, g, i, j;
+static int *h = &e;
+
+int
+main ()
+{
+ check_vect ();
+
+ for (; a;)
+ for (; g; g++)
+ for (; f; f++)
+ if (j)
+ {
+ assert(b);
+ assert(0);
+ }
+ for (i = 24; i; i--)
+ {
+ for (c = 0; c < 6; c++)
+ d |= 1;
+ *h |= d;
+ }
+
+ if (e != 1)
+ __builtin_abort ();
+
+ return 0;
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */
&& !STMT_VINFO_LIVE_P (exit_phi_vinfo))
|| double_reduc);
- STMT_VINFO_VEC_STMT (exit_phi_vinfo) = epilog_stmt;
+ if (double_reduc)
+ STMT_VINFO_VEC_STMT (exit_phi_vinfo) = inner_phi;
+ else
+ STMT_VINFO_VEC_STMT (exit_phi_vinfo) = epilog_stmt;
if (!double_reduc
|| STMT_VINFO_DEF_TYPE (exit_phi_vinfo)
!= vect_double_reduction_def)