[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