summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/arm/pr52633.c
diff options
context:
space:
mode:
authorUlrich Weigand <ulrich.weigand@linaro.org>2012-05-04 12:46:04 +0000
committerUlrich Weigand <uweigand@gcc.gnu.org>2012-05-04 12:46:04 +0000
commit33018845ebb6f93f8d664253b5d77f0c0187b74c (patch)
tree56c691e07c1a6e95679faaa805e2259418d41bbd /gcc/testsuite/gcc.target/arm/pr52633.c
parent9a7a4398d3b33eb4ea3be8094e7a381921f6a4f6 (diff)
downloadgcc-33018845ebb6f93f8d664253b5d77f0c0187b74c.tar.gz
re PR tree-optimization/52633 (Compiler ICE in vect_is_simple_use_1 (ARM))
gcc/ PR tree-optimization/52633 * tree-vect-patterns.c (vect_vect_recog_func_ptrs): Swap order of vect_recog_widen_shift_pattern and vect_recog_over_widening_pattern. (vect_recog_over_widening_pattern): Remove handling of code that was already detected as over-widening pattern. Remove special handling of "unsigned" cases. Instead, support general case of conversion of the shift result to another type. gcc/testsuite/ PR tree-optimization/52633 * gcc.dg/vect/vect-over-widen-1.c: Two patterns should now be recognized as widening shifts instead of over-widening. * gcc.dg/vect/vect-over-widen-1-big-array.c: Likewise. * gcc.dg/vect/vect-over-widen-4.c: Likewise. * gcc.dg/vect/vect-over-widen-4-big-array.c: Likewise. * gcc.target/arm/pr52633.c: New test. From-SVN: r187158
Diffstat (limited to 'gcc/testsuite/gcc.target/arm/pr52633.c')
-rw-r--r--gcc/testsuite/gcc.target/arm/pr52633.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/arm/pr52633.c b/gcc/testsuite/gcc.target/arm/pr52633.c
new file mode 100644
index 00000000000..b904d59d95c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/pr52633.c
@@ -0,0 +1,13 @@
+/* PR tree-optimization/52633 */
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_neon_ok } */
+/* { dg-options "-march=armv7-a -mfloat-abi=softfp -mfpu=neon -O -ftree-vectorize" } */
+
+void
+test (unsigned short *x, signed char *y)
+{
+ int i;
+ for (i = 0; i < 32; i++)
+ x[i] = (short) (y[i] << 5);
+}
+