@@ -5784,7 +5784,12 @@ pa_output_global_address (FILE *file, rtx x, int round_constant)
if (GET_CODE (x) == HIGH)
x = XEXP (x, 0);
- if (GET_CODE (x) == SYMBOL_REF && read_only_operand (x, VOIDmode))
+ if (GET_CODE (x) == UNSPEC && XINT (x, 1) == UNSPEC_DLTIND14R)
+ {
+ x = XVECEXP (x, 0, 0);
+ output_addr_const (file, x);
+ }
+ else if (GET_CODE (x) == SYMBOL_REF && read_only_operand (x, VOIDmode))
output_addr_const (file, x);
else if (GET_CODE (x) == SYMBOL_REF && !flag_pic)
{
@@ -1247,12 +1247,15 @@ do { \
reg_names [REGNO (XEXP (addr, 0))]); \
break; \
case LO_SUM: \
- if (!symbolic_operand (XEXP (addr, 1), VOIDmode)) \
+ if (GET_CODE (XEXP (addr, 1)) == UNSPEC \
+ && XINT (XEXP (addr, 1), 1) == UNSPEC_DLTIND14R) \
+ fputs ("RT'", FILE); \
+ else if (!symbolic_operand (XEXP (addr, 1), VOIDmode)) \
fputs ("R'", FILE); \
else if (flag_pic == 0) \
fputs ("RR'", FILE); \
else \
- fputs ("RT'", FILE); \
+ gcc_unreachable (); \
pa_output_global_address (FILE, XEXP (addr, 1), 0); \
fputs ("(", FILE); \
output_operand (XEXP (addr, 0), 0); \