Commit a54d04b7 by Michael Meissner

Fix bugs in last changes

From-SVN: r11103
parent 154079fe
...@@ -857,6 +857,11 @@ small_data_operand (op, mode) ...@@ -857,6 +857,11 @@ small_data_operand (op, mode)
{ {
rtx sym_ref, const_part; rtx sym_ref, const_part;
#ifdef TARGET_SDATA
if (!TARGET_SDATA)
return 0;
#endif
if (DEFAULT_ABI != ABI_V4) if (DEFAULT_ABI != ABI_V4)
return 0; return 0;
...@@ -2086,9 +2091,11 @@ print_operand (file, x, code) ...@@ -2086,9 +2091,11 @@ print_operand (file, x, code)
we have already done it, we can just use an offset of four. */ we have already done it, we can just use an offset of four. */
if (GET_CODE (XEXP (x, 0)) == PRE_INC if (GET_CODE (XEXP (x, 0)) == PRE_INC
|| GET_CODE (XEXP (x, 0)) == PRE_DEC) || GET_CODE (XEXP (x, 0)) == PRE_DEC)
print_operand_address (file, plus_constant (XEXP (XEXP (x, 0), 0), 4)); output_address (plus_constant (XEXP (XEXP (x, 0), 0), 4));
else else
print_operand_address (file, plus_constant (XEXP (x, 0), 4)); output_address (plus_constant (XEXP (x, 0), 4));
if (DEFAULT_ABI == ABI_V4 && small_data_operand (x, GET_MODE (x)))
fprintf (file, "@sda21(%s)", reg_names[0]);
} }
return; return;
...@@ -2296,9 +2303,11 @@ print_operand (file, x, code) ...@@ -2296,9 +2303,11 @@ print_operand (file, x, code)
{ {
if (GET_CODE (XEXP (x, 0)) == PRE_INC if (GET_CODE (XEXP (x, 0)) == PRE_INC
|| GET_CODE (XEXP (x, 0)) == PRE_DEC) || GET_CODE (XEXP (x, 0)) == PRE_DEC)
print_operand_address (file, plus_constant (XEXP (XEXP (x, 0), 0), 8)); output_address (plus_constant (XEXP (XEXP (x, 0), 0), 8));
else else
print_operand_address (file, plus_constant (XEXP (x, 0), 8)); output_address (plus_constant (XEXP (x, 0), 8));
if (DEFAULT_ABI == ABI_V4 && small_data_operand (x, GET_MODE (x)))
fprintf (file, "@sda21(%s)", reg_names[0]);
} }
return; return;
...@@ -2342,9 +2351,11 @@ print_operand (file, x, code) ...@@ -2342,9 +2351,11 @@ print_operand (file, x, code)
{ {
if (GET_CODE (XEXP (x, 0)) == PRE_INC if (GET_CODE (XEXP (x, 0)) == PRE_INC
|| GET_CODE (XEXP (x, 0)) == PRE_DEC) || GET_CODE (XEXP (x, 0)) == PRE_DEC)
print_operand_address (file, plus_constant (XEXP (XEXP (x, 0), 0), 12)); output_address (plus_constant (XEXP (XEXP (x, 0), 0), 12));
else else
print_operand_address (file, plus_constant (XEXP (x, 0), 12)); output_address (plus_constant (XEXP (x, 0), 12));
if (DEFAULT_ABI == ABI_V4 && small_data_operand (x, GET_MODE (x)))
fprintf (file, "@sda21(%s)", reg_names[0]);
} }
return; return;
...@@ -2362,10 +2373,10 @@ print_operand (file, x, code) ...@@ -2362,10 +2373,10 @@ print_operand (file, x, code)
fprintf (file, "%d(%d)", - GET_MODE_SIZE (GET_MODE (x)), fprintf (file, "%d(%d)", - GET_MODE_SIZE (GET_MODE (x)),
REGNO (XEXP (XEXP (x, 0), 0))); REGNO (XEXP (XEXP (x, 0), 0)));
else else
print_operand_address (file, XEXP (x, 0)); output_address (XEXP (x, 0));
} }
else else
print_operand_address (file, x); output_addr_const (file, x);
return; return;
default: default:
......
...@@ -4733,7 +4733,7 @@ ...@@ -4733,7 +4733,7 @@
/* Use default pattern for address of ELF small data */ /* Use default pattern for address of ELF small data */
if (TARGET_ELF if (TARGET_ELF
&& TARGET_SDATA && DEFAULT_ABI == ABI_V4
&& (GET_CODE (operands[1]) == SYMBOL_REF || GET_CODE (operands[1]) == CONST) && (GET_CODE (operands[1]) == SYMBOL_REF || GET_CODE (operands[1]) == CONST)
&& !small_data_operand (operands[1], SImode)) && !small_data_operand (operands[1], SImode))
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment