A recent change to enable signed vs. unsigned comparisons to be flagged as an
error broke the PowerPC bootstrap.

The issue was with the FUNCTION_VALUE_REGNO_P macro.  I changed it and the
FUNCTION_ARG_REGNO_P to both use IN_RANGE instead of doing a subtraction of the
first value and comparing it to the second value minus the first value plus 1.

I committed this patch as obvious to get the PowerPC bootstrapping once again.
Segher, if you want me to reformat it let me know.

2016-12-05  Michael Meissner  <meiss...@linux.vnet.ibm.com>

        PR target/78688
        * config/rs6000/rs6000.h (FUNCTION_VALUE_REGNO_P): Use IN_RANGE
        instead of ((N) >= (X) && (N) <= (Y-X)) to silence warnings about
        comparing signed to unsigned values.
        (FUNCTION_ARG_REGNO_P): Likewise.

Index: gcc/config/rs6000/rs6000.h
===================================================================
--- gcc/config/rs6000/rs6000.h  (revision 243270)
+++ gcc/config/rs6000/rs6000.h  (working copy)
@@ -1866,19 +1866,19 @@ extern enum reg_class rs6000_constraints
    On RS/6000, this is r3, fp1, and v2 (for AltiVec).  */
 #define FUNCTION_VALUE_REGNO_P(N)                                      \
   ((N) == GP_ARG_RETURN                                                        
\
-   || ((N) >= FP_ARG_RETURN && (N) <= FP_ARG_MAX_RETURN                        
\
+   || (IN_RANGE ((N), FP_ARG_RETURN, FP_ARG_MAX_RETURN)                        
\
        && TARGET_HARD_FLOAT && TARGET_FPRS)                            \
-   || ((N) >= ALTIVEC_ARG_RETURN && (N) <= ALTIVEC_ARG_MAX_RETURN      \
+   || (IN_RANGE ((N), ALTIVEC_ARG_RETURN, ALTIVEC_ARG_MAX_RETURN)      \
        && TARGET_ALTIVEC && TARGET_ALTIVEC_ABI))
 
 /* 1 if N is a possible register number for function argument passing.
    On RS/6000, these are r3-r10 and fp1-fp13.
    On AltiVec, v2 - v13 are used for passing vectors.  */
 #define FUNCTION_ARG_REGNO_P(N)                                                
\
-  ((unsigned) (N) - GP_ARG_MIN_REG < GP_ARG_NUM_REG                    \
-   || ((unsigned) (N) - ALTIVEC_ARG_MIN_REG < ALTIVEC_ARG_NUM_REG      \
+  (IN_RANGE ((N), GP_ARG_MIN_REG, GP_ARG_MAX_REG)                      \
+   || (IN_RANGE ((N), ALTIVEC_ARG_MIN_REG, ALTIVEC_ARG_MAX_REG)                
\
        && TARGET_ALTIVEC && TARGET_ALTIVEC_ABI)                                
\
-   || ((unsigned) (N) - FP_ARG_MIN_REG < FP_ARG_NUM_REG                        
\
+   || (IN_RANGE ((N), FP_ARG_MIN_REG, FP_ARG_MAX_REG)                  \
        && TARGET_HARD_FLOAT && TARGET_FPRS))
 
 /* Define a data type for recording info about an argument list

-- 
Michael Meissner, IBM
IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA
email: meiss...@linux.vnet.ibm.com, phone: +1 (978) 899-4797

Reply via email to