James Greenhalgh writes: > On Tue, Jul 21, 2015 at 01:42:35PM +0100, Jiong Wang wrote: >> >> 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 >> >>> >> >>> 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 > > OK. > > Thanks, > James > Committed the following patch which done minor adjustments so the testcases can work well on any of tiny, small, large model. Thanks.