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