Displaying 5 results from an estimated 5 matches for "outlined_handl".
2014 Nov 24
1
[LLVMdev] RFC: How to represent SEH (__try / __except) in LLVM IR
...ost-catch cleanup
lpad: ; preds = %if.end, %entry
%2 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__CxxFrameHandler3 to i8*)
cleanup
catch i8* bitcast (i8** @_ZTIi to i8*)
%eh.cont.label = call i8* (...)* @llvm.eh.outlined_handlers(
i8* @_ZTIi, i8* (i8*, i8*)* @do_some_thing_catch0,
void (i8*, i8*)* @do_some_thing_cleanup0)
indirectbr i8* %eh.cont.label
; From 'if.then' invoke of do_thing_one()
; Or from 'if.else' invoke of Inner constructor
; Or from 'invoke.cont5 invoke of Inner destruc...
2014 Nov 14
2
[LLVMdev] RFC: How to represent SEH (__try / __except) in LLVM IR
...s an idea, just to brainstorm:
define void @parent() {
invoke ... unwind to %lpad
...
lpad:
%eh_vals = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__C_specific_handler to i8*)
cleanup
catch i8* @typeid1
catch i8* @typeid2
%label = call i8* (...)* @llvm.eh.outlined_handlers(
void (i8*, i8*)* @my_cleanup,
i8* @typeid1, i8* (i8*, i8*)* @my_catch1,
i8* @typeid2, i8* (i8*, i8*)* @my_catch2)
indirectbr i8* %label
endcatch:
...
}
define void @my_cleanup(i8*, i8*) {
...
ret void ; unwinder will keep going for cleanups
}
define i8* @my_catch1(i...
2014 Nov 13
2
[LLVMdev] RFC: How to represent SEH (__try / __except) in LLVM IR
Thanks for the additional information.
Right now I’m experimenting with a mix of code compiled with MSVC and code compiled with clang, trying to get a C++ exception thrown and caught by the MSVC-compiled code across a function in the clang-compiled code. My goal here is to isolate a small part of what needs to be done in a way that lends itself to tinkering. I think this might lead me to the
2014 Nov 18
2
[LLVMdev] RFC: How to represent SEH (__try / __except) in LLVM IR
...o %lpad
>
> ...
>
> lpad:
>
> %eh_vals = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__C_specific_handler to i8*)
>
> cleanup
>
> catch i8* @typeid1
>
> catch i8* @typeid2
>
> %label = call i8* (...)* @llvm.eh.outlined_handlers(
>
> void (i8*, i8*)* @my_cleanup,
>
> i8* @typeid1, i8* (i8*, i8*)* @my_catch1,
>
> i8* @typeid2, i8* (i8*, i8*)* @my_catch2)
>
> indirectbr i8* %label
>
>
>
> endcatch:
>
> ...
>
> }
>
>
>
> define...
2014 Dec 03
1
[LLVMdev] RFC: How to represent SEH (__try / __except) in LLVM IR
Hi Reid,
I saw your patch but haven’t looked closely at it yet.
I do have a work in progress for the outlining. I expect to have something ready to share pretty soon, hopefully by the end of the week. It won’t be ready for primetime, as it’s making a whole lot of assumptions about the structure of the IR, but I think it will work with a sample IR file based on what you posted in your earlier