aboutsummaryrefslogtreecommitdiff
path: root/gcc/cse.c
diff options
context:
space:
mode:
authorUros Bizjak <uros@gcc.gnu.org>2008-06-06 17:04:51 +0200
committerUros Bizjak <uros@gcc.gnu.org>2008-06-06 17:04:51 +0200
commit88057dc868335e8f59eb0798d605c29de154de6d (patch)
tree213585bbf8dfd4c6d9d250a5e3d911115c057f6d /gcc/cse.c
parent8b34d6c2bfcf7e70d3ab0909cb73ba347f47160e (diff)
downloadgcc-88057dc868335e8f59eb0798d605c29de154de6d.zip
gcc-88057dc868335e8f59eb0798d605c29de154de6d.tar.gz
gcc-88057dc868335e8f59eb0798d605c29de154de6d.tar.bz2
re PR rtl-optimization/36438 (gcc ICE compiling code with mmx builtin)
PR rtl-optimization/36438 * cse.c (fold_rtx) [ASHIFT, LSHIFTRT, ASHIFTRT]: Break out early for vector shifts with constant scalar shift operands. From-SVN: r136486
Diffstat (limited to 'gcc/cse.c')
-rw-r--r--gcc/cse.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/cse.c b/gcc/cse.c
index ffe7efb..73eb1c6 100644
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -3489,6 +3489,11 @@ fold_rtx (rtx x, rtx insn)
&& exact_log2 (- INTVAL (const_arg1)) >= 0)))
break;
+ /* ??? Vector mode shifts by scalar
+ shift operand are not supported yet. */
+ if (is_shift && VECTOR_MODE_P (mode))
+ break;
+
if (is_shift
&& (INTVAL (inner_const) >= GET_MODE_BITSIZE (mode)
|| INTVAL (inner_const) < 0))