From 806c34923ef7d12cec02a6d86be37abf24bbe393 Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Sun, 20 Mar 2011 21:50:20 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 +++++ gcc/config/sparc/sparc.c | 12 ++++++++++++ 2 files changed, 17 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5549bc1b1af..bc2728b7a46 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2011-03-20 Eric Botcazou + + PR bootstrap/48168 + * config/sparc/sparc.c (sparc_delegitimize_address): Add new pattern. + 2011-03-20 Jakub Jelinek PR rtl-optimization/48156 diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c index 0f137e8b68f..2060fa2eccb 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; } -- 2.30.2