Backport from mainline
2012-06-18 Richard Guenther <rguenther@suse.de>
PR tree-optimization/53693
* tree-vect-patterns.c (vect_operation_fits_smaller_type):
Reject operands with more than one use.
* g++.dg/torture/pr53693.C: New testcase.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@189313
138bc75d-0d04-0410-961f-
82ee72b054a4
2012-07-06 Richard Guenther <rguenther@suse.de>
Backport from mainline
+ 2012-06-18 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/53693
+ * tree-vect-patterns.c (vect_operation_fits_smaller_type):
+ Reject operands with more than one use.
+
+2012-07-06 Richard Guenther <rguenther@suse.de>
+
+ Backport from mainline
2012-04-11 Richard Guenther <rguenther@suse.de>
PR middle-end/52621
2012-07-06 Richard Guenther <rguenther@suse.de>
Backport from mainline
+ 2012-06-18 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/53693
+ * g++.dg/torture/pr53693.C: New testcase.
+
+2012-07-06 Richard Guenther <rguenther@suse.de>
+
+ Backport from mainline
2012-04-11 Richard Guenther <rguenther@suse.de>
PR middle-end/52621
--- /dev/null
+// { dg-do compile }
+
+void
+filter_scanlines (void *src_buffer, void *dst_buffer, int dst_pitch, int width)
+{
+ int x;
+ unsigned short *src, *dst_a, *dst_b;
+
+ src = (unsigned short *) src_buffer;
+ dst_a = (unsigned short *) dst_buffer;
+ dst_b = ((unsigned short *) dst_buffer) + (dst_pitch >> 1);
+
+ for (x = 0; x < width; x++)
+ {
+ unsigned char gs, gh;
+ gs = src[x];
+ gh = gs + (gs >> 1);
+ dst_a[x] = (gh << 5) | (gh);
+ dst_b[x] = ((gs - gh) << 5) | (gs - gh);
+ }
+}
|| TREE_CODE (const_oprnd) != INTEGER_CST)
return false;
+ /* If oprnd has other uses besides that in stmt we cannot mark it
+ as being part of a pattern only. */
+ if (!has_single_use (oprnd))
+ return false;
+
/* If we are in the middle of a sequence, we use DEF from a previous
statement. Otherwise, OPRND has to be a result of type promotion. */
if (*new_type)