* arm.h (FUNCTION_ARG_REGNO_P): Use IN_RANGE.
authorghazi <ghazi@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 21 Oct 2001 19:44:08 +0000 (19:44 +0000)
committerghazi <ghazi@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 21 Oct 2001 19:44:08 +0000 (19:44 +0000)
* system.h (IN_RANGE): New macro.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@46395 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/arm/arm.h
gcc/system.h

index 056e39d..9e8abcc 100644 (file)
@@ -1,3 +1,9 @@
+2001-10-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * arm.h (FUNCTION_ARG_REGNO_P): Use IN_RANGE.
+
+       * system.h (IN_RANGE): New macro.
+
 2001-10-21  Zack Weinberg  <zack@codesourcery.com>
 
        * aclocal.m4 (AM_WITH_NLS): Also create and substitute
index fcd3d42..7347298 100644 (file)
@@ -1505,8 +1505,7 @@ typedef struct
 
 /* 1 if N is a possible register number for function argument passing.
    On the ARM, r0-r3 are used to pass args.  */
-#define FUNCTION_ARG_REGNO_P(REGNO)  \
-  ((REGNO) >= 0 && (REGNO) <= 3)
+#define FUNCTION_ARG_REGNO_P(REGNO)    (IN_RANGE ((REGNO), 0, 3))
 
 \f
 /* Tail calling.  */
index 55a9370..7cf3b5f 100644 (file)
@@ -168,6 +168,16 @@ extern int errno;
 /* Get definitions of HOST_WIDE_INT and HOST_WIDEST_INT.  */
 #include "hwint.h"
 
+/* A macro to determine whether a VALUE lies inclusively within a
+   certain range without evaluating the VALUE more than once.  This
+   macro won't warn if the VALUE is unsigned and the LOWER bound is
+   zero, as it would e.g. with "VALUE >= 0 && ...".  Note the LOWER
+   bound *is* evaluated twice, and LOWER must not be greater than
+   UPPER.  However the bounds themselves can be either positive or
+   negative.  */
+#define IN_RANGE(VALUE, LOWER, UPPER) \
+  ((unsigned HOST_WIDE_INT)((VALUE) - (LOWER)) <= ((UPPER) - (LOWER)))
+
 /* Infrastructure for defining missing _MAX and _MIN macros.  Note that
    macros defined with these cannot be used in #if.  */