diff options
author | Kai Tietz <ktietz@redhat.com> | 2012-02-24 17:31:41 +0100 |
---|---|---|
committer | Kai Tietz <ktietz@gcc.gnu.org> | 2012-02-24 17:31:41 +0100 |
commit | 15498cfa4ee495c125aaf847a77bf1001505178b (patch) | |
tree | 027d1fd870e3186814d86965217207d0b68d3f8c | |
parent | 39e73abcec49d4f6320bb2524c60c0c3ea3543df (diff) | |
download | gcc-15498cfa4ee495c125aaf847a77bf1001505178b.zip gcc-15498cfa4ee495c125aaf847a77bf1001505178b.tar.gz gcc-15498cfa4ee495c125aaf847a77bf1001505178b.tar.bz2 |
i386.c (ix86_delegitimize_address): Handle UNSPEC_PCREL plus displacement.
* config/i386/i386.c (ix86_delegitimize_address): Handle
UNSPEC_PCREL plus displacement.
From-SVN: r184560
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 13 |
2 files changed, 18 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5e0c1e6..121d74a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2012-02-23 Kai Tietz <ktietz@redhat.com> + + * config/i386/i386.c (ix86_delegitimize_address): Handle + UNSPEC_PCREL plus displacement. + 2012-02-24 Georg-Johann Lay <avr@gjlay.de> PR target/52261 diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 24dbc49..52fcb61 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -13241,6 +13241,19 @@ ix86_delegitimize_address (rtx x) if (TARGET_64BIT) { + if (GET_CODE (x) == CONST + && GET_CODE (XEXP (x, 0)) == PLUS + && GET_MODE (XEXP (x, 0)) == Pmode + && CONST_INT_P (XEXP (XEXP (x, 0), 1)) + && GET_CODE (XEXP (XEXP (x, 0), 0)) == UNSPEC + && XINT (XEXP (XEXP (x, 0), 0), 1) == UNSPEC_PCREL) + { + rtx x2 = XVECEXP (XEXP (XEXP (x, 0), 0), 0, 0); + x = gen_rtx_PLUS (Pmode, XEXP (XEXP (x, 0), 1), x2); + if (MEM_P (orig_x)) + x = replace_equiv_address_nv (orig_x, x); + return x; + } if (GET_CODE (x) != CONST || GET_CODE (XEXP (x, 0)) != UNSPEC || (XINT (XEXP (x, 0), 1) != UNSPEC_GOTPCREL |