> On Mon, Feb 26, 2018 at 2:58 AM, Jan Hubicka <hubi...@ucw.cz> wrote:
> >> On Mon, Feb 26, 2018 at 2:05 AM, Martin Liška <mli...@suse.cz> wrote:
> >> > On 02/25/2018 02:37 AM, H.J. Lu wrote:
> >> >>       PR target/r84530
> >> >
> >> > Just a nit I've noticed:
> >> >
> >> > s/r84530/84530
> >>
> >> Fixed.
> >>
> >> --
> >> H.J.
> >
> >> From f08b8721ed038cefcee5a0bb1329b90a2d322269 Mon Sep 17 00:00:00 2001
> >> From: "H.J. Lu" <hjl.to...@gmail.com>
> >> Date: Sat, 24 Feb 2018 05:05:49 -0800
> >> Subject: [PATCH] i386: Update -mfunction-return= for return with pop
> >>
> >> When -mfunction-return= is used, simple_return_pop_internal should pop
> >> return address into ECX register, adjust stack by bytes to pop from stack
> >> and jump to the return thunk via ECX register.
> >>
> >> Tested on i686 and x86-64.
> >>
> >>       PR target/84530
> >>       * config/i386/i386-protos.h (ix86_output_indirect_jmp): Remove
> >>       the bool argument.
> >>       (ix86_output_indirect_function_return): New prototype.
> >>       (ix86_split_simple_return_pop_internal): Likewise.
> >>       * config/i386/i386.c (indirect_return_via_cx): New.
> >>       (indirect_return_via_cx_bnd): Likewise.
> >>       (indirect_thunk_name): Handle return va CX_REG.
> >>       (output_indirect_thunk_function): Create alias for
> >>       __x86_return_thunk_[re]cx and __x86_return_thunk_[re]cx_bnd.
> >>       (ix86_output_indirect_jmp): Remove the bool argument.
> >>       (ix86_output_indirect_function_return): New function.
> >>       (ix86_split_simple_return_pop_internal): Likewise.
> >>       * config/i386/i386.md (*indirect_jump): Don't pass false
> >>       to ix86_output_indirect_jmp.
> >>       (*tablejump_1): Likewise.
> >>       (simple_return_pop_internal): Change it to define_insn_and_split.
> >>       Call ix86_split_simple_return_pop_internal to split it for
> >>       -mfunction-return=.
> >>       (simple_return_indirect_internal): Call
> >>       ix86_output_indirect_function_return instead of
> >>       ix86_output_indirect_jmp.
> >
> > It seems to make sense. Since LLVM has picked up our thunk names now,
> > I wonder if they have same bug or someohow already assigned a name
> > to this thunk. In the second case we probably ought to match it. Do
> > you know what LLVM uses?
> >
> 
> I don't think LLVM has implemented -mfunction-return=.   I disclosed
> my -mindirect-branch= approach to LLVM last year.  At the time, they
> wanted freedom in their implementation and didn't want to be compatible
> with mine.   Later they added GCC compatibility so that LLVM may be
> used to compile Linux kernel.  I believe it will be the same case if this
> option is used to compile Linux kernel.

Patch is OK then, thanks!

Honza
> 
> BTW, is my patch:
> 
> https://gcc.gnu.org/ml/gcc-patches/2018-01/msg02233.html
> 
> OK for trunk?  The review died at
> 
> https://gcc.gnu.org/ml/gcc-patches/2018-02/msg01355.html
> 
> Thanks.
> 
> -- 
> H.J.

Reply via email to