+2014-05-13 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2014-03-04 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/60382
+ * tree-vect-loop.c (vect_is_simple_reduction_1): Do not consider
+ dead PHIs a reduction.
+
2014-05-09 Georg-Johann Lay <avr@gjlay.de>
Backport from 2014-05-09 trunk r210267
+2014-05-13 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2014-03-04 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/60382
+ * gcc.dg/vect/pr60382.c: New testcase.
+
2014-05-09 Georg-Johann Lay <avr@gjlay.de>
Backport from 2014-05-09 trunk r210267
--- /dev/null
+#include "tree-vect.h"
+
+int a, b, c, e, f;
+
+void
+foo ()
+{
+ for (b = 0; b < 3; b++)
+ if (e)
+ {
+ for (c = 0; c < 4; c++)
+ {
+ if (b)
+ continue;
+ f = 1;
+ for (a = 0; a < 2; a++)
+ f |= 1;
+ }
+ for (;;)
+ ;
+ }
+}
+
+int
+main ()
+{
+ check_vect ();
+ foo ();
+ return 0;
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */
|| (!check_reduction && flow_loop_nested_p (vect_loop, loop)));
name = PHI_RESULT (phi);
+ /* ??? If there are no uses of the PHI result the inner loop reduction
+ won't be detected as possibly double-reduction by vectorizable_reduction
+ because that tries to walk the PHI arg from the preheader edge which
+ can be constant. See PR60382. */
+ if (has_zero_uses (name))
+ return NULL;
nloop_uses = 0;
FOR_EACH_IMM_USE_FAST (use_p, imm_iter, name)
{