Displaying 3 results from an estimated 3 matches for "my_cleanup".
Did you mean:
do_cleanup
2014 Nov 14
2
[LLVMdev] RFC: How to represent SEH (__try / __except) in LLVM IR
...@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(i8*, i8*) {
ret i8* blockaddress(@pare...
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
...%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*) {
>
> ...
>...