------- Comment #5 from ubizjak at gmail dot com 2007-10-22 06:45 -------
I'm testing following patch:
--cut here--
Index: combine.c
===================================================================
--- combine.c (revision 129547)
+++ combine.c (working copy)
@@ -9386,7 +9386,9 @@ simplify_shift_const_1 (enum rtx_code co
constant has its sign bit set in shift_mode. */
&& !(code == ASHIFTRT && GET_CODE (varop) == XOR
&& 0 > trunc_int_for_mode (INTVAL (XEXP (varop, 1)),
- shift_mode))
+ VECTOR_MODE_P (shift_mode)
+ ? GET_MODE_INNER (shift_mode)
+ : shift_mode))
&& (new = simplify_const_binary_operation (code, result_mode,
XEXP (varop, 1),
GEN_INT (count))) != 0
@@ -9405,7 +9407,9 @@ simplify_shift_const_1 (enum rtx_code co
if (GET_CODE (XEXP (varop, 1)) == CONST_INT
&& !(code == ASHIFTRT && GET_CODE (varop) == XOR
&& 0 > trunc_int_for_mode (INTVAL (XEXP (varop, 1)),
- shift_mode)))
+ VECTOR_MODE_P (shift_mode)
+ ? GET_MODE_INNER (shift_mode)
+ : shift_mode)))
{
rtx lhs = simplify_shift_const (NULL_RTX, code, shift_mode,
XEXP (varop, 0), count);
--cut here--
--
ubizjak at gmail dot com changed:
What |Removed |Added
----------------------------------------------------------------------------
AssignedTo|unassigned at gcc dot gnu |ubizjak at gmail dot com
|dot org |
Status|NEW |ASSIGNED
Last reconfirmed|2007-10-21 11:02:08 |2007-10-22 06:45:38
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33846