target/6869: G++ 3.1 generates incorrect assembler instructions for HPPA 2.0
Stefan.Becker@nokia.com
Stefan.Becker@nokia.com
Thu May 30 08:06:00 GMT 2002
>Number: 6869
>Category: target
>Synopsis: G++ 3.1 generates incorrect assembler instructions for HPPA 2.0
>Confidential: no
>Severity: critical
>Priority: medium
>Responsible: unassigned
>State: open
>Class: wrong-code
>Submitter-Id: net
>Arrival-Date: Thu May 30 08:06:01 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator: Stefan Becker
>Release: gcc-3.1, binutils-2.12.1
>Organization:
>Environment:
hppa2.0-hp-hpux11.11
>Description:
g++ generates in static initialization code:
addil LR%L$3244-$global$,%r27
ldw RR%L$3244-$global$(%r1),%r22
ldil L%$$dyncall,%r2
- ble R%$$dyncall(%sr4,%r2) <- for PA1.1
+ be,l R%$$dyncall(%sr4,%r2) <- for PA2.0
copy %r31,%r2
ldw 12(%r3),%r19
GNU as complains about the "be,l" lines with the following error message:
xxxx.s:197656: Error: Invalid Nullification: (l)
>How-To-Repeat:
Unfortunately I couldn't create a small test file and the original file contains confidential information.
>Fix:
I checked the HPPA configuration and could only two places in pa.c which generate "be,l":
pa.c:5924: output_asm_insn ("{ble|be,l} R%%%0(%%sr4,%3)", xoperands);
pa.c:6169: output_asm_insn ("{ble|be,l} R%%$$dyncall(%%sr4,%%r2)",
The second one is the one which generates the offending code in my case.
I don't have a HPPA manual, but I guess either a) "be,l" is a wrong instruction or b) GNU as is broken.
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the Gcc-bugs
mailing list