Displaying 7 results from an estimated 7 matches for "seh_stackalloc".
2019 Jun 25
3
Potential missed optimisation with SEH funclets
...nwind funclet that destroys ‘x’ is just two lines of asm:
lea rcx, QWORD PTR x$[rdx]
jmp ??1MyClass@@QEAA at XZ
However when compiling with clang-cl, it seems like it sets up an entire function frame just for the destructor call:
mov qword ptr [rsp + 16], rdx
push rbp
.seh_pushreg 5
sub rsp, 32
.seh_stackalloc 32
Lea rbp, [rdx + 48]
.seh_endprologue
Lea rcx, [rbp - 16]
call "??1MyClass@@QEAA at XZ”
nop
add rsp, 32
pop rbp
ret
Both were compiled with “/c /O2 /MD /EHsc”
Is LLVM missing a major optimisation here?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http...
2015 Aug 16
2
[LLVMdev] Adding a stack probe function attribute
...JAE_1 <BB#1>, %EFLAGS<imp-use>; flags: FrameSetup
Successors according to CFG: BB#2 BB#1
BB#2: derived from LLVM BB %0
Predecessors according to CFG: BB#1
%RSP<def,tied1> = SUB64rr %RSP<tied0>, %RAX, %EFLAGS<imp-def>;
flags: FrameSetup
SEH_StackAlloc 40040; flags: FrameSetup
SEH_EndPrologue; flags: FrameSetup
%RCX<def> = LEA64r %RSP, 1, %noreg, 40, %noreg
%EDX<def> = MOV32r0 %EFLAGS<imp-def,dead>
CALL64pcrel32 <ga:@dummy_use>, <regmask>, %RSP<imp-use>,
%RCX<imp-use>, %EDX...
2018 Feb 06
3
What does a dead register mean?
Hi,
My understanding of a "dead" register is a def that is never used. However,
when I dump the MI after reg alloc on a simple program I see the following
sequence:
ADJCALLSTACKDOWN64 0, 0, 0, *implicit-def dead %rsp*, implicit-def dead
%eflags, implicit-def dead %ssp, implicit %rsp, implicit %ssp
CALL64pcrel32 @foo, <regmask %bh %bl %bp %bpl %bx %ebp %ebx %rbp %rbx %r12
%r13 %r14
2015 Oct 27
2
How to create global symbol from record offset
I would like to create something like this (x86_64)
.section __DATA,__data
.align 4
_a:
.long 18
.globl _b
_b:
.long 48
If you like to notice, there is no alignment between _a and _b.
_b is basically offseting into a record structure.
----
When I use two discrete structs, I get .aligns and I also don't trust
the tools to keep the two globals together.
%struct.a = type { i32 }
2017 Nov 21
2
question about xray tls data initialization
...# -- Begin function call
.p2align 4, 0x90
call: # @call
.seh_proc call
# BB#0: # %entry
.p2align 1, 0x90
.Lxray_sled_0:
.ascii "\353\t"
nop word ptr [rax + rax + 512]
sub rsp, 16
.seh_stackalloc 16
.seh_endprologue
mov dword ptr [rsp + 12], ecx
mov dword ptr [rsp + 8], 0
mov dword ptr [rsp + 4], 0
.LBB0_1: # %for.cond
# =>This Inner Loop Header: Depth=1
mov eax, dword ptr [rsp + 4]...
2015 Jul 28
1
[LLVMdev] Adding a stack probe function attribute
On Tue, Jul 28, 2015 at 6:34 PM, Reid Kleckner <rnk at google.com> wrote:
> On Tue, Jul 28, 2015 at 2:25 AM, John Kåre Alsaker
> <john.mailinglists at gmail.com> wrote:
>>
>> On Tue, Jul 28, 2015 at 12:44 AM, Reid Kleckner <rnk at google.com> wrote:
>> > Yeah, the function attributes section of LangRef is a reasonable place
>> > to
>>
2017 Nov 16
2
question about xray tls data initialization
I'm learning the xray library and try if it can be built on windows, in
xray_fdr_logging_impl.h
line 152 , comment written as
// Using pthread_once(...) to initialize the thread-local data structures
but at line 175, 183, code written as
thread_local pthread_key_t key;
// Ensure that we only actually ever do the pthread initialization once.
thread_local bool UNUSED Unused = [] {