diff options
author | geoffk <geoffk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-04-01 01:37:44 +0000 |
---|---|---|
committer | geoffk <geoffk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-04-01 01:37:44 +0000 |
commit | 4056df148de02a0d6f6d0053819dfe07e83623b1 (patch) | |
tree | fa9da7f2814525757605e3d99e147973b6232129 /gcc/config | |
parent | f626df99fc2d46384ed63ec0655b3eddb32a7266 (diff) | |
download | gcc-4056df148de02a0d6f6d0053819dfe07e83623b1.tar.gz |
* config/rs6000/rs6000.c (print_operand): Don't use %l for 'low
part', it's already in use. Use %K instead. Add a return at the
end of what is now %K.
* config/rs6000/rs6000.md (elf_low): Use %K instead of %l.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@32853 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 12 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.md | 2 |
2 files changed, 12 insertions, 2 deletions
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 04539ee0c13..83eb642f251 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -3325,6 +3325,8 @@ print_operand (file, x, code) putc ((DEFAULT_ABI == ABI_SOLARIS) ? '.' : '$', file); return; + /* %a is output_address. */ + case 'A': /* If X is a constant integer whose low-order 5 bits are zero, write 'l'. Otherwise, write 'r'. This is a kludge to fix a bug @@ -3350,6 +3352,9 @@ print_operand (file, x, code) putc (((INT_LOWPART(x) & 1) == 0 ? 'r' : 'l'), file); return; + /* %c is output_addr_const if a CONSTANT_ADDRESS_P, otherwise + output_operand. */ + case 'C': { enum rtx_code code = GET_CODE (x); @@ -3496,7 +3501,7 @@ print_operand (file, x, code) fprintf (file, HOST_WIDE_INT_PRINT_DEC, ~ INT_LOWPART (x)); return; - case 'l': + case 'K': /* X must be a symbolic constant on ELF. Write an expression suitable for an 'addi' that adds in the low 16 bits of the MEM. */ @@ -3516,6 +3521,9 @@ print_operand (file, x, code) fputs ("@l", file); print_operand (file, XEXP (XEXP (x, 0), 1), 0); } + return; + + /* %l is output_asm_label. */ case 'L': /* Write second word of DImode or DFmode reference. Works on register @@ -3610,6 +3618,8 @@ print_operand (file, x, code) fprintf (file, "%d", i); return; + /* %n outputs the negative of its operand. */ + case 'N': /* Write the number of elements in the vector times 4. */ if (GET_CODE (x) != PARALLEL) diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 8d9d8a70f83..4573330a820 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -7923,7 +7923,7 @@ "TARGET_ELF && ! TARGET_64BIT" "@ {cal|la} %0,%2@l(%1) - {ai|addic} %0,%1,%l2") + {ai|addic} %0,%1,%K2") ;; Set up a register with a value from the GOT table |