This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH i386] Allow sibcalls in no-PLT PIC
- From: Alexander Monakov <amonakov at ispras dot ru>
- To: gcc-patches at gcc dot gnu dot org
- Cc: Rich Felker <dalias at libc dot org>, Jan Hubicka <hubicka at ucw dot cz>, Uros Bizjak <ubizjak at gmail dot com>
- Date: Fri, 15 May 2015 19:27:52 +0300 (MSK)
- Subject: Re: [PATCH i386] Allow sibcalls in no-PLT PIC
- Authentication-results: sourceware.org; auth=none
- References: <1430757479-14241-1-git-send-email-amonakov at ispras dot ru> <1430757479-14241-5-git-send-email-amonakov at ispras dot ru>
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
> 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.
> * 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)