[AArch64][sibcall]Tighten direct call pattern to repair -fno-plt
Jiong Wang
jiong.wang@arm.com
Tue Jul 21 12:52:00 GMT 2015
Jiong Wang writes:
> Alexander Monakov writes:
>
>>> Attachment is the patch which repair -fno-plt support for AArch64.
>>>
>>> aarch64_is_noplt_call_p will only be true if:
>>>
>>> * gcc is generating position independent code.
>>> * function symbol has declaration.
>>> * either -fno-plt or "(no_plt)" attribute specified.
>>> * it's a external function.
>>>
>>> OK for trunk?
>>>
>>> 2015-07-16 Jiong Wang <jiong.wang@arm.com>
>>>
>>> gcc/
>>> * config/aarch64/aarch64-protos.h (aarch64_is_noplt_call_p): New
>>> declaration.
>>> * config/aarch64/aarch64.c (aarch64_is_noplt_call_p): New function.
>>> * config/aarch64/aarch64.md (call_value_symbol): Check noplt
>>> scenarios.
>>> (call_symbol): Ditto.
>>
>> Shouldn't the same treatment be applied to tailcall (sibcall_{,value_}symbol)
>> patterns? I guess it could be done as a followup patch, but would be nice if
>> that isn't forgotten.
>
> Thanks for the remaind, that will be done as a followup patch.
Patch attached.
Added one more restriction to "Usf" constraint which is used by sibcall
pattern when matching direct call.
given example like
void
cal_novalue (int a)
{
dec (a);
}
when -fpic -fno-plt specified we now generate:
cal:
adrp x1, :got:dec
ldr x1, [x1, #:got_lo12:dec]
br x1
instead of:
cal:
b dec
2015-07-20 Jiong Wang <jiong.wang@arm.com>
gcc/
* config/aarch64/constraints.md (Usf): Add the test of
aarch64_is_noplt_call_p.
gcc/testsuite/
* gcc.target/aarch64/noplt_3.c: New test.
--
Regards,
Jiong
-------------- next part --------------
A non-text attachment was scrubbed...
Name: noplt_sib.patch
Type: text/x-diff
Size: 1154 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20150721/9babd153/attachment.bin>
More information about the Gcc-patches
mailing list