Displaying 4 results from an estimated 4 matches for "ehprepare".
2010 Dec 02
5
[LLVMdev] Alternative exception handling proposal
...saved_exception_ptr
you'd have:
rewind void @_Unwind_Resume(i8* %saved_exception_ptr)
or:
rewind void @_cxa_end_cleanup()
or, for targets that want special code sequences for resuming, something like:
rewind void @llvm.crazytarget.end_cleanup()
This also handily eliminates the problem of EHPrepare having to calculate data flow
itself to the rewind instruction.
Since Gabor already made most of the world use CallSite, adding a third
call-like wouldn't be the end of the world, although I think most operations on calls
(inlining, etc.) wouldn't apply to rewinds anyway.
John.
2010 Dec 02
0
[LLVMdev] Alternative exception handling proposal
Two amendments:
> The semantics of the invoke instruction are slightly modified: if an exception
> unwinds and it doesn't match anything in the list of catches and filters,
> and there is no cleanup, then control doesn't branch to the unwind label,
> unwinding simply continues out of the function.
in fact the new semantics would be that if an exception doesn't match then
2010 Dec 02
0
[LLVMdev] Alternative exception handling proposal
...gt; rewind void @_Unwind_Resume(i8* %saved_exception_ptr)
> or:
> rewind void @_cxa_end_cleanup()
> or, for targets that want special code sequences for resuming, something like:
> rewind void @llvm.crazytarget.end_cleanup()
>
> This also handily eliminates the problem of EHPrepare having to calculate data flow
> itself to the rewind instruction.
>
> Since Gabor already made most of the world use CallSite, adding a third
> call-like wouldn't be the end of the world, although I think most operations on calls
> (inlining, etc.) wouldn't apply to rewinds a...
2010 Dec 01
8
[LLVMdev] Alternative exception handling proposal
...ind
declare i8* @llvm.eh.exception() nounwind readonly
declare i32 @llvm.eh.selector() nounwind
declare i32 @__gxx_personality_v0(i32, i64, i8*, i8*)
declare void @_ZSt9terminatev() noreturn nounwind
How is it codegened
-------------------
Code generation is like now, only simpler. The DwarfEHPrepare pass, which
currently has to do crazy things about catch-all's will still exist but much
simpler: it just has to ensure that the value of eh.selector makes sense no
matter where it is declared, like it does already for eh.exception, in fact
the same code could be used for both.
Currently when...