diff options
author | Michael Meissner <meissner@gcc.gnu.org> | 1996-01-25 20:33:51 +0000 |
---|---|---|
committer | Michael Meissner <meissner@gcc.gnu.org> | 1996-01-25 20:33:51 +0000 |
commit | a54d04b7dd9a4e14f1eb47a1678160497b4ae02d (patch) | |
tree | 3bf8a5c06a29a473727c4974eccb3803c17c3d34 /gcc | |
parent | 154079fee5ff53e621ad5bfb566af20856dead24 (diff) | |
download | gcc-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.c | 27 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.md | 2 |
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)) { |