diff options
author | Uros Bizjak <uros@gcc.gnu.org> | 2007-10-23 22:15:04 +0200 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2007-10-23 22:15:04 +0200 |
commit | 881ef7be466c6ff0a88bd2a7be3bb91008388795 (patch) | |
tree | c8de088b6563dbffb0a24a9e77ae009ab5aa7612 /gcc | |
parent | 68cba9eee7fe480459a7277a38ab61f1b5fa2af6 (diff) | |
download | gcc-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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/combine.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 12 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/pr33846.c | 22 |
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" } } */ |