aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2011-05-22 20:10:54 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2011-05-22 20:10:54 +0000
commit145f6c5b88265139d88220b741d2f74ce9cc0332 (patch)
tree4257d25188bc2940553d1baa4e79cf6807343bc6
parent8ac798357ff48a4d68f04e1bff98aef4bb73a5b0 (diff)
downloadgcc-145f6c5b88265139d88220b741d2f74ce9cc0332.zip
gcc-145f6c5b88265139d88220b741d2f74ce9cc0332.tar.gz
gcc-145f6c5b88265139d88220b741d2f74ce9cc0332.tar.bz2
sparc.c (sparc_delegitimize_address): Handle UNSPEC_MOVE_PIC pattern.
* config/sparc/sparc.c (sparc_delegitimize_address): Handle UNSPEC_MOVE_PIC pattern. From-SVN: r174043
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/sparc/sparc.c18
2 files changed, 16 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b09e751..ef29e49 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2011-05-22 Eric Botcazou <ebotcazou@adacore.com>
+ * config/sparc/sparc.c (sparc_delegitimize_address): Handle
+ UNSPEC_MOVE_PIC pattern.
+
+2011-05-22 Eric Botcazou <ebotcazou@adacore.com>
+
* config.gcc (sparc-*-elf*): Add sparc/t-crtin.
(sparc-*-rtems*): Likewise.
(sparc64-*-elf*): Likewise.
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index 22f641d..bd7d12a 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -3615,13 +3615,17 @@ sparc_delegitimize_address (rtx x)
{
x = delegitimize_mem_from_attrs (x);
- if (GET_CODE (x) == LO_SUM
- && GET_CODE (XEXP (x, 1)) == UNSPEC
- && XINT (XEXP (x, 1), 1) == UNSPEC_TLSLE)
- {
- x = XVECEXP (XEXP (x, 1), 0, 0);
- gcc_assert (GET_CODE (x) == SYMBOL_REF);
- }
+ if (GET_CODE (x) == LO_SUM && GET_CODE (XEXP (x, 1)) == UNSPEC)
+ switch (XINT (XEXP (x, 1), 1))
+ {
+ case UNSPEC_MOVE_PIC:
+ case UNSPEC_TLSLE:
+ x = XVECEXP (XEXP (x, 1), 0, 0);
+ gcc_assert (GET_CODE (x) == SYMBOL_REF);
+ break;
+ default:
+ break;
+ }
/* This is generated by mov{si,di}_pic_label_ref in PIC mode. */
if (GET_CODE (x) == MINUS