target/6869: G++ 3.1 generates incorrect assembler instructions
John David Anglin
dave@hiauly1.hia.nrc.ca
Fri May 31 11:40:00 GMT 2002
> > 2002-05-31 John David Anglin <dave@hiauly1.hia.nrc.ca>
> >
> > * pa.c (output_millicode_call): Correct "be,l" insn for TARGET_PA_20.
> > (output_call): Likewise.
> Ah yes. Now I recall. We fixed the assembler to require the explicit
> %sr0,%r31
> per the PA2.0 manuals, but apparently forgot to update GCC at the same time.
> Sigh. It's really annoying when the syntax for an instruction changes like
> this :(
Argh! You need big code to check this.
Dave
--
J. David Anglin dave.anglin@nrc.ca
National Research Council of Canada (613) 990-0752 (FAX: 952-6605)
2002-05-31 John David Anglin <dave@hiauly1.hia.nrc.ca>
* pa.c (output_millicode_call): Add missing '%' characters.
(output_call): Likewise.
Index: config/pa/pa.c
===================================================================
RCS file: /cvsroot/gcc/gcc/gcc/config/pa/pa.c,v
retrieving revision 1.166
diff -u -3 -p -r1.166 pa.c
--- config/pa/pa.c 31 May 2002 05:41:30 -0000 1.166
+++ config/pa/pa.c 31 May 2002 16:16:04 -0000
@@ -6100,7 +6100,7 @@ output_millicode_call (insn, call_dest)
xoperands[0] = call_dest;
output_asm_insn ("ldil L%%%0,%3", xoperands);
if (TARGET_PA_20)
- output_asm_insn ("be,l R%%%0(%%sr4,%3),%sr0,%r31", xoperands);
+ output_asm_insn ("be,l R%%%0(%%sr4,%3),%%sr0,%%r31", xoperands);
else
output_asm_insn ("ble R%%%0(%%sr4,%3)", xoperands);
output_asm_insn ("nop", xoperands);
@@ -6359,7 +6359,7 @@ output_call (insn, call_dest, sibcall)
add in the low part in the branch instruction. */
output_asm_insn ("ldil L%%$$dyncall,%%r2", xoperands);
if (TARGET_PA_20)
- output_asm_insn ("be,l R%%$$dyncall(%%sr4,%%r2),%sr0,%r31",
+ output_asm_insn ("be,l R%%$$dyncall(%%sr4,%%r2),%%sr0,%%r31",
xoperands);
else
output_asm_insn ("ble R%%$$dyncall(%%sr4,%%r2)", xoperands);
More information about the Gcc-patches
mailing list