===================================================================
@@ -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;
}