[Bug testsuite/48727] FAIL: g++.dg/opt/devirt2.C scan-assembler-times xyzzy 2
ro at CeBiTec dot Uni-Bielefeld.DE
gcc-bugzilla@gcc.gnu.org
Thu Jul 7 13:05:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48727
--- Comment #5 from ro at CeBiTec dot Uni-Bielefeld.DE <ro at CeBiTec dot Uni-Bielefeld.DE> 2011-07-07 13:04:18 UTC ---
> --- Comment #4 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2011-07-06 19:15:49 UTC ---
>> This also fails on 32-bit Solaris/SPARC with Sun as, which has:
>>
>> sethi %hi(_ZN1S5xyzzyEv), %g1
>> jmp %g1 + %lo(_ZN1S5xyzzyEv)
>> sethi %hi(_ZN1S5xyzzyEv), %g1
>> jmp %g1 + %lo(_ZN1S5xyzzyEv)
>>
>> On the other hand, both 64-bit with Sun as and 32-bit with gas have
>>
>> call _ZN1S5xyzzyEv, 0
>> call _ZN1S5xyzzyEv, 0
>
> This is OK, these are the 2 forms of a direct tail call on the SPARC: sethi/jmp
> or call, depending on the capability of the assembler (HAVE_AS_RELAX_OPTION).
Then it's probably best to only look for
(jmp|call)[^\n]*xyzzy
on SPARC, and ignore the sethi, so the count still matches? Or, perhaps safer:
(sethi[^\n]*xyzzy[^\n]*\n)?[^\n]*(jmp|call)[^\n]*xyzzy
Rainer
More information about the Gcc-bugs
mailing list