search for: __clang_call_terminate

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...