From 4fbbe6941cb824dc2defe3172263efac648ec27a Mon Sep 17 00:00:00 2001 From: Stuart Hastings Date: Tue, 1 Aug 2006 16:17:53 +0000 Subject: [PATCH] * rtl.h (UINTVAL) New. * config/rs6000/rs6000.c (SMALL_INT) Use it. * testsuite/gcc.dg/20060801-1.c: New. From-SVN: r115855 --- gcc/ChangeLog | 6 ++++++ gcc/config/rs6000/rs6000.c | 2 +- gcc/rtl.h | 1 + gcc/testsuite/gcc.dg/20060801-1.c | 9 +++++++++ 4 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/20060801-1.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b8aee3b467c..8cf26707b74 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2006-08-01 Stuart Hastings + + * rtl.h (UINTVAL) New. + * config/rs6000/rs6000.c (SMALL_INT) Use it. + * testsuite/gcc.dg/20060801-1.c: New. + 2006-08-01 Daniel Jacobowitz PR debug/23336 diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index c42bb9f1e63..c9888579c76 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -18105,7 +18105,7 @@ machopic_output_stub (FILE *file, const char *symb, const char *stub) position-independent addresses go into a reg. This is REG if non zero, otherwise we allocate register(s) as necessary. */ -#define SMALL_INT(X) ((unsigned) (INTVAL (X) + 0x8000) < 0x10000) +#define SMALL_INT(X) ((UINTVAL (X) + 0x8000) < 0x10000) rtx rs6000_machopic_legitimize_pic_address (rtx orig, enum machine_mode mode, diff --git a/gcc/rtl.h b/gcc/rtl.h index 42c4db6524a..75a89b63df1 100644 --- a/gcc/rtl.h +++ b/gcc/rtl.h @@ -996,6 +996,7 @@ enum label_kind /* For a CONST_INT rtx, INTVAL extracts the integer. */ #define INTVAL(RTX) XCWINT(RTX, 0, CONST_INT) +#define UINTVAL(RTX) ((unsigned HOST_WIDE_INT) INTVAL (RTX)) /* For a CONST_DOUBLE: For a VOIDmode, there are two integers CONST_DOUBLE_LOW is the diff --git a/gcc/testsuite/gcc.dg/20060801-1.c b/gcc/testsuite/gcc.dg/20060801-1.c new file mode 100644 index 00000000000..7181f6bb95e --- /dev/null +++ b/gcc/testsuite/gcc.dg/20060801-1.c @@ -0,0 +1,9 @@ +/* { dg-do compile { target { lp64 } } */ +/* { dg-options "-fPIC" } */ +char *ptr = 0; +char array[100]; +void +f() +{ + ptr = &array[0x100000000ULL]; /* A 33-bit constant. */ +}