On Fri, May 15, 2015 at 9:27 AM, Alexander Monakov <amona...@ispras.ru> wrote: > Ping? Any comment about this patch? > > On Mon, 4 May 2015, Alexander Monakov wrote: > >> With -fno-plt, we don't have to reject even direct calls as sibcall >> candidates. >> >> This patch depends on '-fplt' flag that is introduced in another patch. >> >> This patch requires that with -fno-plt all sibcall candidates go through >> prepare_call_address that transforms the call to a GOT lookup. >> >> OK? >> * config/i386/i386.c (ix86_function_ok_for_sibcall): Check flag_plt. >> >> diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c >> index f29e053..b734350 100644 >> --- a/gcc/config/i386/i386.c >> +++ b/gcc/config/i386/i386.c >> @@ -5448,12 +5448,13 @@ ix86_function_ok_for_sibcall (tree decl, tree exp) >> /* If we are generating position-independent code, we cannot sibcall >> optimize any indirect call, or a direct call to a global function, >> as the PLT requires %ebx be live. (Darwin does not have a PLT.) */ >> if (!TARGET_MACHO >> && !TARGET_64BIT >> && flag_pic >> + && flag_plt >> && (decl && !targetm.binds_local_p (decl))) >> return false; >> >> /* If we need to align the outgoing stack, then sibcalling would >> unalign the stack, which may break the called function. */ >> if (ix86_minimum_incoming_stack_boundary (true) >>
I think it should be done via psABI change similar to https://groups.google.com/forum/#!topic/x86-64-abi/n8GYMpqvBxI which I have implemented on users/hjl/relax branch in binutils. -- H.J.