diff options
author | H.J. Lu <hjl@gcc.gnu.org> | 2012-02-10 10:23:12 -0800 |
---|---|---|
committer | H.J. Lu <hjl@gcc.gnu.org> | 2012-02-10 10:23:12 -0800 |
commit | 877fb4507b254f536cbe3aa19e346092e0bf2661 (patch) | |
tree | aa391aa4dbf472f6762b9b05a97e50d40cce216e | |
parent | 75cee7c62ab4a51c1e9c18f1c06febbd38b8021b (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 |
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 |