On 01/25/2018 06:38 AM, H.J. Lu wrote:
> On Mon, Jan 22, 2018 at 4:21 AM, Florian Weimer wrote:
>> I tried this:
>>
>> struct C {
>> virtual ~C();
>> virtual void f();
>> };
>>
>> void
>> f (C *p)
>> {
>> p->f();
>> p->f();
>> }
>>
>> with r256939 and -mindirect-branch=thunk -O2 on x86-64
On 01/25/2018 02:38 PM, H.J. Lu wrote:
On Thu, Jan 25, 2018 at 12:32 AM, Florian Weimer wrote:
On 01/22/2018 01:21 PM, Florian Weimer wrote:
There is a different issue with the think itself.
__x86_indirect_thunk_rax:
.LFB2:
.cfi_startproc
call.LIND5
.LIND4:
On Thu, Jan 25, 2018 at 12:32 AM, Florian Weimer wrote:
> On 01/22/2018 01:21 PM, Florian Weimer wrote:
>
>> There is a different issue with the think itself.
>>
>> __x86_indirect_thunk_rax:
>> .LFB2:
>> .cfi_startproc
>> call.LIND5
>> .LIND4:
>> pause
>> lf
On Mon, Jan 22, 2018 at 4:21 AM, Florian Weimer wrote:
> I tried this:
>
> struct C {
> virtual ~C();
> virtual void f();
> };
>
> void
> f (C *p)
> {
> p->f();
> p->f();
> }
>
> with r256939 and -mindirect-branch=thunk -O2 on x86-64 GNU/Linux, and got
> this:
>
> _Z1fP1C:
> .LFB0:
>
On 01/22/2018 01:21 PM, Florian Weimer wrote:
There is a different issue with the think itself.
__x86_indirect_thunk_rax:
.LFB2:
.cfi_startproc
call .LIND5
.LIND4:
pause
lfence
jmp .LIND4
.LIND5:
mov %rax, (%rsp)
ret
I tried this:
struct C {
virtual ~C();
virtual void f();
};
void
f (C *p)
{
p->f();
p->f();
}
with r256939 and -mindirect-branch=thunk -O2 on x86-64 GNU/Linux, and
got this:
_Z1fP1C:
.LFB0:
.cfi_startproc
pushq %rbx
.cfi_def_cfa_offset 16
.cfi_offset