aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUros Bizjak <uros@gcc.gnu.org>2007-10-23 22:15:04 +0200
committerUros Bizjak <uros@gcc.gnu.org>2007-10-23 22:15:04 +0200
commit881ef7be466c6ff0a88bd2a7be3bb91008388795 (patch)
treec8de088b6563dbffb0a24a9e77ae009ab5aa7612
parent68cba9eee7fe480459a7277a38ab61f1b5fa2af6 (diff)
downloadgcc-881ef7be466c6ff0a88bd2a7be3bb91008388795.zip
gcc-881ef7be466c6ff0a88bd2a7be3bb91008388795.tar.gz
gcc-881ef7be466c6ff0a88bd2a7be3bb91008388795.tar.bz2
re PR rtl-optimization/33846 (ICE in trunc_int_for_mode, at explow.c:55)
PR rtl-optimization/33846 * combine.c (simplify_shift_const_1) [NOT]: Skip vector modes. testsuite/ChangeLog: PR rtl-optimization/33846 * gcc.dg/vect/pr33846.c: New testcase. From-SVN: r129589
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/combine.c3
-rw-r--r--gcc/testsuite/ChangeLog12
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr33846.c22
4 files changed, 42 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a8d8a9f..3fb2fef 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2007-10-23 Uros Bizjak <ubizjak@gmail.com>
+
+ PR rtl-optimization/33846
+ * combine.c (simplify_shift_const_1) [NOT]: Skip vector modes.
+
2007-10-23 Dorit Nuzman <dorit@il.ibm.com>
PR tree-optimization/33860
@@ -32,8 +37,8 @@
PR tree-optimization/33834
PR tree-optimization/33835
- * tree-vect-analyze.c (vect_analyze_operations): RELEVANT and LIVE stmts
- need to be checked for success seperately.
+ * tree-vect-analyze.c (vect_analyze_operations): RELEVANT and LIVE
+ stmts need to be checked for success seperately.
* tree-vect-transform.c (vectorizable_call, vectorizable_conversion):
Remove the check that stmt is not LIVE.
(vectorizable_assignment, vectorizable_induction): Likewise.
@@ -899,7 +904,7 @@
IX86_BUILTIN_PSRADI128, IX86_BUILTIN_PSRLWI128,
IX86_BUILTIN_PSRLDI128, IX86_BUILTIN_PSRLQI128]: Do not require
immediate shift value.
- config/i386/emmintrin.h (_mm_slli_epi16, _mm_slli_epi32,
+ * config/i386/emmintrin.h (_mm_slli_epi16, _mm_slli_epi32,
_mm_slli_epi64, _mm_srai_epi16, _mm_srai_epi32, _mm_srli_epi16,
_mm_srli_epi32, _mm_srli_epi64): Remove 'const' from count argument.
Remove macros for !__OPTIMIZE__ case.
diff --git a/gcc/combine.c b/gcc/combine.c
index dae0baf..cfd0ed1 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -9343,6 +9343,9 @@ simplify_shift_const_1 (enum rtx_code code, enum machine_mode result_mode,
break;
case NOT:
+ if (VECTOR_MODE_P (mode))
+ break;
+
/* Make this fit the case below. */
varop = gen_rtx_XOR (mode, XEXP (varop, 0),
GEN_INT (GET_MODE_MASK (mode)));
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a1bf668..c68d6c2 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,4 +1,10 @@
-2007-10-23 Martin Michlmayr <tbm@cyrius.com>
+2007-10-23 Martin Michlmayr <tbm@cyrius.com>
+ Uros Bizjak <ubizjak@gmail.com>
+
+ PR rtl-optimization/33846
+ * gcc.dg/vect/pr33846.c: New testcase.
+
+2007-10-23 Martin Michlmayr <tbm@cyrius.com>
Dorit Nuzman <dorit@il.ibm.com>
PR tree-optimization/33860
@@ -8,13 +14,13 @@
2007-10-23 Tehila Meyzels <tehila@il.ibm.com>
Revital Eres <eres@il.ibm.com>
- * testsuite/gcc.dg/sms-2.c: New testcase.
+ * testsuite/gcc.dg/sms-2.c: New testcase.
2007-10-22 David S. Miller <davem@davemloft.net>
* gcc.dg/globalreg-1.c: New test.
-2007-10-22 Martin Michlmayr <tbm@cyrius.com>
+2007-10-22 Martin Michlmayr <tbm@cyrius.com>
Dorit Nuzman <dorit@il.ibm.com>
PR tree-optimization/33834
diff --git a/gcc/testsuite/gcc.dg/vect/pr33846.c b/gcc/testsuite/gcc.dg/vect/pr33846.c
new file mode 100644
index 0000000..f31e207
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr33846.c
@@ -0,0 +1,22 @@
+/* Testcase by Martin Michlmayr <tbm@cyrius.com> */
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_shift } */
+
+int clamp_val (int i)
+{
+ return ~i >> 31;
+}
+
+void _mix_some_samples (long buf, int *mix_buffer, int mix_size)
+{
+ int i;
+ signed int *p = mix_buffer;
+ for (i = mix_size ; i > 0; i--)
+ {
+ *((short *) buf) = clamp_val ((*p) + 0x800000);
+ buf += 2;
+ p++;
+ }
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */