The attached change fixes build error on trunk and makes the argument types for various constant checks more consistent.
Tested on hppa2.0w-hp-hpux11.11 and hppa-unknown-linux-gnu. Committed to trunk. Dave -- John David Anglin dave.ang...@bell.net
2014-09-18 John David Anglin <dang...@gcc.gnu.org> * config/pa/pa-protos.h (pa_cint_ok_for_move): Change argument type to unsigned. (pa_ldil_cint_p): Likewise. * config/pa/pa.c (pa_cint_ok_for_move): likewise. (pa_ldil_cint_p): Likewise. Change signed casts to unsigned. Update callers. * config/pa/pa.md: Likewise. Index: config/pa/pa-protos.h =================================================================== --- config/pa/pa-protos.h (revision 227798) +++ config/pa/pa-protos.h (working copy) @@ -82,9 +82,9 @@ #endif /* RTX_CODE */ extern int pa_and_mask_p (unsigned HOST_WIDE_INT); -extern int pa_cint_ok_for_move (HOST_WIDE_INT); +extern int pa_cint_ok_for_move (unsigned HOST_WIDE_INT); extern int pa_ior_mask_p (unsigned HOST_WIDE_INT); -extern int pa_ldil_cint_p (HOST_WIDE_INT); +extern int pa_ldil_cint_p (unsigned HOST_WIDE_INT); extern int pa_mem_shadd_constant_p (int); extern int pa_shadd_constant_p (int); extern int pa_zdepi_cint_p (unsigned HOST_WIDE_INT); Index: config/pa/pa.c =================================================================== --- config/pa/pa.c (revision 227798) +++ config/pa/pa.c (working copy) @@ -707,7 +707,7 @@ /* Accept any constant that can be moved in one instruction into a general register. */ int -pa_cint_ok_for_move (HOST_WIDE_INT ival) +pa_cint_ok_for_move (unsigned HOST_WIDE_INT ival) { /* OK if ldo, ldil, or zdepi, can be used. */ return (VAL_14_BITS_P (ival) @@ -719,11 +719,12 @@ significant 11 bits of the value must be zero and the value must not change sign when extended from 32 to 64 bits. */ int -pa_ldil_cint_p (HOST_WIDE_INT ival) +pa_ldil_cint_p (unsigned HOST_WIDE_INT ival) { - HOST_WIDE_INT x = ival & (((HOST_WIDE_INT) -1 << 31) | 0x7ff); + unsigned HOST_WIDE_INT x; - return x == 0 || x == ((HOST_WIDE_INT) -1 << 31); + x = ival & (((unsigned HOST_WIDE_INT) -1 << 31) | 0x7ff); + return x == 0 || x == ((unsigned HOST_WIDE_INT) -1 << 31); } /* True iff zdepi can be used to generate this CONST_INT. @@ -1858,7 +1859,7 @@ if (register_operand (operand1, mode) || (GET_CODE (operand1) == CONST_INT - && pa_cint_ok_for_move (INTVAL (operand1))) + && pa_cint_ok_for_move (UINTVAL (operand1))) || (operand1 == CONST0_RTX (mode)) || (GET_CODE (operand1) == HIGH && !symbolic_operand (XEXP (operand1, 0), VOIDmode)) @@ -2134,7 +2135,7 @@ operands[1] = tmp; } else if (GET_CODE (operand1) != CONST_INT - || !pa_cint_ok_for_move (INTVAL (operand1))) + || !pa_cint_ok_for_move (UINTVAL (operand1))) { rtx temp; rtx_insn *insn; @@ -10252,7 +10253,7 @@ && !reload_in_progress && !reload_completed && !LEGITIMATE_64BIT_CONST_INT_P (INTVAL (x)) - && !pa_cint_ok_for_move (INTVAL (x))) + && !pa_cint_ok_for_move (UINTVAL (x))) return false; if (function_label_operand (x, mode)) Index: config/pa/pa.md =================================================================== --- config/pa/pa.md (revision 227798) +++ config/pa/pa.md (working copy) @@ -5035,7 +5035,7 @@ (plus:SI (match_operand:SI 1 "register_operand" "") (match_operand:SI 2 "const_int_operand" ""))) (clobber (match_operand:SI 4 "register_operand" ""))] - "! pa_cint_ok_for_move (INTVAL (operands[2])) + "! pa_cint_ok_for_move (UINTVAL (operands[2])) && VAL_14_BITS_P (INTVAL (operands[2]) >> 1)" [(set (match_dup 4) (plus:SI (match_dup 1) (match_dup 2))) (set (match_dup 0) (plus:SI (match_dup 4) (match_dup 3)))] @@ -5054,13 +5054,13 @@ (plus:SI (match_operand:SI 1 "register_operand" "") (match_operand:SI 2 "const_int_operand" ""))) (clobber (match_operand:SI 4 "register_operand" ""))] - "! pa_cint_ok_for_move (INTVAL (operands[2]))" + "! pa_cint_ok_for_move (UINTVAL (operands[2]))" [(set (match_dup 4) (match_dup 2)) (set (match_dup 0) (plus:SI (ashift:SI (match_dup 4) (match_dup 3)) (match_dup 1)))] " { - HOST_WIDE_INT intval = INTVAL (operands[2]); + unsigned HOST_WIDE_INT intval = UINTVAL (operands[2]); /* Try dividing the constant by 2, then 4, and finally 8 to see if we can get a constant which can be loaded into a register