Displaying 9 results from an estimated 9 matches for "__clang_call_terminate".
2014 May 11
2
[LLVMdev] [cfe-dev] Code generation for noexcept functions
...exit
> .Ltmp3:
> callq *%rbx
> .Ltmp4:
> # BB#2: # %_Z4testPFvvE.exit3
> popq %rbx
> retq
> .LBB0_3: # %terminate.lpad.i
> .Ltmp2:
> movq %rax, %rdi
> callq __clang_call_terminate
> .LBB0_4: # %terminate.lpad.i2
> .Ltmp5:
> movq %rax, %rdi
> callq __clang_call_terminate
> .Ltmp8:
> .size _Z5test2PFvvE, .Ltmp8-_Z5test2PFvvE
> .cfi_endproc
> .Leh_func_end0:
> .section...
2018 Jan 10
0
LLVM EH tables much larger than GCC's
On Fri, Jan 5, 2018 at 9:58 PM, Ryan Prichard via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
> 2. *Termination landing pads.*
>
> Clang sometimes uses a landing pad that calls __clang_call_terminate to
> terminate the program. GCC instead leaves a gap in the call site table,
> and the personality routine calls std::terminate. For the 4MB
> libQt5Core.so sample I'm looking at, I think it'd reduce the size of .text
> and .ARM.extab by maybe 7000 bytes (about 0.18%). (I see ab...
2018 Jan 06
2
LLVM EH tables much larger than GCC's
...sure what other
assemblers do, but I'm inclined to think the change is still OK -- we're
simply matching what GCC does.
Is there another problem I'm not seeing? Has anyone else noticed this size
difference?
2. *Termination landing pads.*
Clang sometimes uses a landing pad that calls __clang_call_terminate to
terminate the program. GCC instead leaves a gap in the call site table, and
the personality routine calls std::terminate. For the 4MB libQt5Core.so
sample I'm looking at, I think it'd reduce the size of .text and .ARM.extab
by maybe 7000 bytes (about 0.18%). (I see about 500 calls to
__c...
2014 Nov 24
1
[LLVMdev] RFC: How to represent SEH (__try / __except) in LLVM IR
...esume { i8*, i32 } %lpad.val14
terminate.lpad: ; preds = %ehcleanup10, %ehcleanup, %lpad4
%16 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__CxxFrameHandler3 to i8*)
catch i8* null
%17 = extractvalue { i8*, i32 } %16, 0
call void @__clang_call_terminate(i8* %17) #5
unreachable
}
If I've understood your intentions correctly, we'll have an outlining pass that transforms the above IR to this:
%struct.do_some_thing.captureblock = type { %class.Outer, %class.Middle, %class.Inner, %i32* }
; Uncaught exception cleanup for lpad, lpad1 and l...
2018 Jan 11
1
LLVM EH tables much larger than GCC's
...0, 2018 at 5:21 AM, James Y Knight <jyknight at google.com> wrote:
>
> On Fri, Jan 5, 2018 at 9:58 PM, Ryan Prichard via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
>> 2. *Termination landing pads.*
>>
>> Clang sometimes uses a landing pad that calls __clang_call_terminate to
>> terminate the program. GCC instead leaves a gap in the call site table,
>> and the personality routine calls std::terminate. For the 4MB
>> libQt5Core.so sample I'm looking at, I think it'd reduce the size of .text
>> and .ARM.extab by maybe 7000 bytes (about 0...
2014 Nov 25
4
[LLVMdev] RFC: How to represent SEH (__try / __except) in LLVM IR
> We should also think about how to call std::terminate when cleanup dtors throw. The current representation for Itanium is inefficient. As a strawman, I propose making @__clang_call_terminate an intrinsic:
…
That sounds like a good starting point.
> Chandler expressed strong concerns about this design, however, as @llvm.eh.get_capture_block adds an ordering constraint on CodeGen. Once you add this intrinsic, we *have* to do frame layout of @_Z13do_some_thingRi *before* we can emit...
2016 Oct 11
2
Landing Pad bug?
...0
invoke void @_ZN8CryptoPP19UnalignedDeallocateEPv(i8* nonnull %3)
to label %13 unwind label %10
; <label>:10: ; preds = %8, %6
%11 = landingpad { i8*, i32 }
catch i8* null
%12 = extractvalue { i8*, i32 } %11, 0
tail call void @__clang_call_terminate(i8* %12) #59
unreachable
; <label>:13: ; preds = %8
resume { i8*, i32 } %4
}
----------------------
I was not able to understand which optimisation transforms the code like this.
I have attached the IR code from the function in O0 and O2.
Greetings...
2014 Dec 03
1
[LLVMdev] RFC: How to represent SEH (__try / __except) in LLVM IR
...ue, Nov 25, 2014 at 3:09 PM, Kaylor, Andrew <andrew.kaylor at intel.com<mailto:andrew.kaylor at intel.com>> wrote:
> We should also think about how to call std::terminate when cleanup dtors throw. The current representation for Itanium is inefficient. As a strawman, I propose making @__clang_call_terminate an intrinsic:
…
That sounds like a good starting point.
> Chandler expressed strong concerns about this design, however, as @llvm.eh.get_capture_block adds an ordering constraint on CodeGen. Once you add this intrinsic, we *have* to do frame layout of @_Z13do_some_thingRi *before* we can emit...
2014 Dec 03
3
[LLVMdev] RFC: How to represent SEH (__try / __except) in LLVM IR
...n Tue, Nov 25, 2014 at 3:09 PM, Kaylor, Andrew <andrew.kaylor at intel.com>
> wrote:
>
>> > We should also think about how to call std::terminate when cleanup
>> dtors throw. The current representation for Itanium is inefficient. As a
>> strawman, I propose making @__clang_call_terminate an intrinsic:
>>
>> …
>>
>>
>>
>> That sounds like a good starting point.
>>
>>
>>
>>
>>
>> > Chandler expressed strong concerns about this design, however, as
>> @llvm.eh.get_capture_block adds an ordering constraint...