+2015-12-10 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/68806
+ * tree-vect-loop.c (vect_analyze_loop_2): Properly detect
+ reduction chains and ignore SLP reductions.
+
2015-12-10 Richard Biener <rguenther@suse.de>
* tree-if-conv.c (if_convertible_loop_p_1): Do not compute
+2015-12-10 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/68806
+ * gcc.dg/torture/pr68806.c: New testcase.
+
2015-12-08 Jan Hubicka <hubicka@ucw.cz>
PR ipa/61886
--- /dev/null
+/* { dg-do compile } */
+
+int sad(const unsigned char *p1, long p2)
+{
+ int a = 0;
+ for (int y = 0; y < 16; y++)
+ {
+ for (int x = 0; x < 12; x++)
+ a += p1[x];
+ p1 += p2;
+ }
+ return a;
+}
if (!slp)
return false;
+ /* If there are reduction chains re-trying will fail anyway. */
+ if (! LOOP_VINFO_REDUCTION_CHAINS (loop_vinfo).is_empty ())
+ return false;
+
/* Likewise if the grouped loads or stores in the SLP cannot be handled
- via interleaving or lane instructions or if there were any SLP
- reductions. */
+ via interleaving or lane instructions. */
slp_instance instance;
slp_tree node;
unsigned i, j;
vinfo = vinfo_for_stmt
(SLP_TREE_SCALAR_STMTS (SLP_INSTANCE_TREE (instance))[0]);
if (! STMT_VINFO_GROUPED_ACCESS (vinfo))
- return false;
+ continue;
vinfo = vinfo_for_stmt (STMT_VINFO_GROUP_FIRST_ELEMENT (vinfo));
unsigned int size = STMT_VINFO_GROUP_SIZE (vinfo);
tree vectype = STMT_VINFO_VECTYPE (vinfo);