search for: ehprepare

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