------- 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