aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStuart Hastings <stuart@apple.com>2006-08-01 16:17:53 +0000
committerStuart Hastings <stuart@gcc.gnu.org>2006-08-01 16:17:53 +0000
commit4fbbe6941cb824dc2defe3172263efac648ec27a (patch)
tree0404f507b2c1b0a334fec96e68cd3a10c4e8d0cd
parent6193b8b7edb139ddf475352a0822482f16be4a2d (diff)
downloadgcc-4fbbe6941cb824dc2defe3172263efac648ec27a.zip
gcc-4fbbe6941cb824dc2defe3172263efac648ec27a.tar.gz
gcc-4fbbe6941cb824dc2defe3172263efac648ec27a.tar.bz2
* rtl.h (UINTVAL) New.
* config/rs6000/rs6000.c (SMALL_INT) Use it. * testsuite/gcc.dg/20060801-1.c: New. From-SVN: r115855
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/rs6000/rs6000.c2
-rw-r--r--gcc/rtl.h1
-rw-r--r--gcc/testsuite/gcc.dg/20060801-1.c9
4 files changed, 17 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b8aee3b..8cf2670 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2006-08-01 Stuart Hastings <stuart@apple.com>
+
+ * rtl.h (UINTVAL) New.
+ * config/rs6000/rs6000.c (SMALL_INT) Use it.
+ * testsuite/gcc.dg/20060801-1.c: New.
+
2006-08-01 Daniel Jacobowitz <dan@codesourcery.com>
PR debug/23336
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index c42bb9f..c988857 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 42c4db6..75a89b6 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 0000000..7181f6b
--- /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. */
+}