On Wed, Nov 19, 2014 at 04:24:25PM +0100, Markus Trippelsdorf wrote: > --- a/gcc/config/rs6000/constraints.md > +++ b/gcc/config/rs6000/constraints.md > @@ -140,7 +140,7 @@ > (define_constraint "I" > "A signed 16-bit constant" > (and (match_code "const_int") > - (match_test "(unsigned HOST_WIDE_INT) (ival + 0x8000) < 0x10000"))) > + (match_test "((unsigned HOST_WIDE_INT) ival + 0x8000) < 0x10000")))
Use IN_RANGE instead? > --- a/gcc/config/rs6000/predicates.md > +++ b/gcc/config/rs6000/predicates.md > @@ -392,8 +392,8 @@ > ;; Return 1 if op is a constant integer valid for addition with addis, addi. > (define_predicate "add_cint_operand" > (and (match_code "const_int") > - (match_test "(unsigned HOST_WIDE_INT) > - (INTVAL (op) + (mode == SImode ? 0x80000000 : 0x80008000)) > + (match_test "((unsigned HOST_WIDE_INT) INTVAL (op) > + + (mode == SImode ? 0x80000000 : 0x80008000)) > < (unsigned HOST_WIDE_INT) 0x100000000ll"))) Same here. Best readable if you make it two IN_RANGE conditions, one for SImode and one for the other :-) Rest looks fine. Segher