...as I've not managed to build such a gcc. If so, is there any chance you could please test check-ada with the following patch (in gcc/ directory), which rolls back r76965:

Index: combine.c
===================================================================
--- combine.c   (revision 212523)
+++ combine.c   (working copy)
@@ -10218,9 +10218,6 @@
            if (CONST_INT_P (XEXP (varop, 1))
                /* We can't do this if we have (ashiftrt (xor))  and the
                   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))
                && (new_rtx = simplify_const_binary_operation
                    (code, result_mode,
                     gen_int_mode (INTVAL (XEXP (varop, 1)), result_mode),
@@ -10237,10 +10234,7 @@
               logical expression, make a new logical expression, and apply
               the inverse distributive law.  This also can't be done
               for some (ashiftrt (xor)).  */
-         if (CONST_INT_P (XEXP (varop, 1))
-            && !(code == ASHIFTRT && GET_CODE (varop) == XOR
-                 && 0 > trunc_int_for_mode (INTVAL (XEXP (varop, 1)),
-                                            shift_mode)))
+         if (CONST_INT_P (XEXP (varop, 1)))
              {
                rtx lhs = simplify_shift_const (NULL_RTX, code, shift_mode,
                                                XEXP (varop, 0), count);

Many thanks if so!

--Alan

Reply via email to