aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl@gcc.gnu.org>2012-02-10 10:23:12 -0800
committerH.J. Lu <hjl@gcc.gnu.org>2012-02-10 10:23:12 -0800
commit877fb4507b254f536cbe3aa19e346092e0bf2661 (patch)
treeaa391aa4dbf472f6762b9b05a97e50d40cce216e
parent75cee7c62ab4a51c1e9c18f1c06febbd38b8021b (diff)
downloadgcc-877fb4507b254f536cbe3aa19e346092e0bf2661.zip
gcc-877fb4507b254f536cbe3aa19e346092e0bf2661.tar.gz
gcc-877fb4507b254f536cbe3aa19e346092e0bf2661.tar.bz2
Disallow negative constant address for x32
gcc/ 2012-02-10 Uros Bizjak <ubizjak@gmail.com> PR target/52146 * config/i386/i386.c (ix86_legitimate_address_p): Disallow negative constant address for x32. gcc/testsuite/ 2012-02-10 H.J. Lu <hongjiu.lu@intel.com> PR target/52146 * gcc.target/i386/pr52146.c: New. From-SVN: r184111
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/i386/i386.c7
-rw-r--r--gcc/testsuite/ChangeLog5
3 files changed, 18 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d3ca6b5..abe8c61 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2012-02-10 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/52146
+ * config/i386/i386.c (ix86_legitimate_address_p): Disallow
+ negative constant address for x32.
+
2012-02-10 Richard Henderson <rth@redhat.com>
* tree-ssa-dce.c (propagate_necessity): Handle GIMPLE_TRANSACTION.
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index b901ee6..fad5e66 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -11932,6 +11932,13 @@ ix86_legitimate_address_p (enum machine_mode mode ATTRIBUTE_UNUSED,
rtx base, index, disp;
HOST_WIDE_INT scale;
+ /* Since constant address in x32 is signed extended to 64bit,
+ we have to prevent addresses from 0x80000000 to 0xffffffff. */
+ if (TARGET_X32
+ && CONST_INT_P (addr)
+ && INTVAL (addr) < 0)
+ return false;
+
if (ix86_decompose_address (addr, &parts) <= 0)
/* Decomposition failed. */
return false;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 86ea212..ecf16a1 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2012-02-10 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/52146
+ * gcc.target/i386/pr52146.c: New.
+
2012-02-10 Jakub Jelinek <jakub@redhat.com>
PR middle-end/52177