aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2011-03-20 21:50:20 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2011-03-20 21:50:20 +0000
commit806c34923ef7d12cec02a6d86be37abf24bbe393 (patch)
treeb6760233a00ccf7260a04525e394034894e6c838 /gcc
parent65e0a0f3c8867097b20f63a735ff6b5b3e9061f6 (diff)
downloadgcc-806c34923ef7d12cec02a6d86be37abf24bbe393.zip
gcc-806c34923ef7d12cec02a6d86be37abf24bbe393.tar.gz
gcc-806c34923ef7d12cec02a6d86be37abf24bbe393.tar.bz2
re PR bootstrap/48168 (Solaris 2/SPARC bootstrap broken: ICE in sparc_function_arg_1, at config/sparc/sparc.c:5721)
PR bootstrap/48168 * config/sparc/sparc.c (sparc_delegitimize_address): Add new pattern. From-SVN: r171197
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/sparc/sparc.c12
2 files changed, 17 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5549bc1b..bc2728b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2011-03-20 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR bootstrap/48168
+ * config/sparc/sparc.c (sparc_delegitimize_address): Add new pattern.
+
2011-03-20 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/48156
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index 0f137e8b..2060fa2 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -3661,6 +3661,18 @@ sparc_delegitimize_address (rtx x)
gcc_assert (GET_CODE (x) == SYMBOL_REF);
}
+ /* This is generated by mov{si,di}_pic_label_ref in PIC mode. */
+ if (GET_CODE (x) == MINUS
+ && REG_P (XEXP (x, 0))
+ && REGNO (XEXP (x, 0)) == PIC_OFFSET_TABLE_REGNUM
+ && GET_CODE (XEXP (x, 1)) == LO_SUM
+ && GET_CODE (XEXP (XEXP (x, 1), 1)) == UNSPEC
+ && XINT (XEXP (XEXP (x, 1), 1), 1) == UNSPEC_MOVE_PIC_LABEL)
+ {
+ x = XVECEXP (XEXP (XEXP (x, 1), 1), 0, 0);
+ gcc_assert (GET_CODE (x) == LABEL_REF);
+ }
+
return x;
}