aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMichael Meissner <meissner@gcc.gnu.org>1996-01-25 20:33:51 +0000
committerMichael Meissner <meissner@gcc.gnu.org>1996-01-25 20:33:51 +0000
commita54d04b7dd9a4e14f1eb47a1678160497b4ae02d (patch)
tree3bf8a5c06a29a473727c4974eccb3803c17c3d34 /gcc
parent154079fee5ff53e621ad5bfb566af20856dead24 (diff)
downloadgcc-a54d04b7dd9a4e14f1eb47a1678160497b4ae02d.zip
gcc-a54d04b7dd9a4e14f1eb47a1678160497b4ae02d.tar.gz
gcc-a54d04b7dd9a4e14f1eb47a1678160497b4ae02d.tar.bz2
Fix bugs in last changes
From-SVN: r11103
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/rs6000/rs6000.c27
-rw-r--r--gcc/config/rs6000/rs6000.md2
2 files changed, 20 insertions, 9 deletions
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 24cbc81..86cdc25 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -857,6 +857,11 @@ small_data_operand (op, mode)
{
rtx sym_ref, const_part;
+#ifdef TARGET_SDATA
+ if (!TARGET_SDATA)
+ return 0;
+#endif
+
if (DEFAULT_ABI != ABI_V4)
return 0;
@@ -2086,9 +2091,11 @@ print_operand (file, x, code)
we have already done it, we can just use an offset of four. */
if (GET_CODE (XEXP (x, 0)) == PRE_INC
|| 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
- 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;
@@ -2296,9 +2303,11 @@ print_operand (file, x, code)
{
if (GET_CODE (XEXP (x, 0)) == PRE_INC
|| 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
- 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;
@@ -2342,9 +2351,11 @@ print_operand (file, x, code)
{
if (GET_CODE (XEXP (x, 0)) == PRE_INC
|| 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
- 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;
@@ -2362,10 +2373,10 @@ print_operand (file, x, code)
fprintf (file, "%d(%d)", - GET_MODE_SIZE (GET_MODE (x)),
REGNO (XEXP (XEXP (x, 0), 0)));
else
- print_operand_address (file, XEXP (x, 0));
+ output_address (XEXP (x, 0));
}
else
- print_operand_address (file, x);
+ output_addr_const (file, x);
return;
default:
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index daaec51..0fed011 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -4733,7 +4733,7 @@
/* Use default pattern for address of ELF small data */
if (TARGET_ELF
- && TARGET_SDATA
+ && DEFAULT_ABI == ABI_V4
&& (GET_CODE (operands[1]) == SYMBOL_REF || GET_CODE (operands[1]) == CONST)
&& !small_data_operand (operands[1], SImode))
{