summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2010-03-10 07:51:17 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2010-03-10 07:51:17 +0000
commit53d337172925a81f0f6086760c675ac0834d764d (patch)
tree3df078d8e8ff43ad56384c5b357b7015d940037a
parentca69963ba4d3178f7a43a3d23581ed3420145e6c (diff)
downloadgcc-53d337172925a81f0f6086760c675ac0834d764d.tar.gz
PR bootstrap/43287
* config/rs6000/rs6000.c (rs6000_delegitimize_address): Handle UNSPEC_MACHOPIC_OFFSET. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@157334 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/rs6000/rs6000.c10
2 files changed, 16 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 20e0b7290f4..ae224caf4c4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2010-03-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR bootstrap/43287
+ * config/rs6000/rs6000.c (rs6000_delegitimize_address): Handle
+ UNSPEC_MACHOPIC_OFFSET.
+
2010-03-09 Andreas Schwab <schwab@linux-m68k.org>
PR target/43294
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 7bcc0866887..82850658731 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -5298,6 +5298,16 @@ rs6000_delegitimize_address (rtx orig_x)
return orig_x;
}
+ if (TARGET_MACHO
+ && GET_CODE (orig_x) == LO_SUM
+ && GET_CODE (XEXP (x, 1)) == CONST)
+ {
+ y = XEXP (XEXP (x, 1), 0);
+ if (GET_CODE (y) == UNSPEC
+ && XINT (y, 1) == UNSPEC_MACHOPIC_OFFSET)
+ return XVECEXP (y, 0, 0);
+ }
+
return orig_x;
}