Displaying 5 results from an estimated 5 matches for "eh_select8".
Did you mean:
eh_select
2007 Dec 09
0
[LLVMdev] Darwin vs exceptions
...t artificially add catch-alls to selectors. Then
the above example compiles to:
define void @_Z1fv() {
...
invoke void @__cxa_throw( something ) noreturn
to label %somewhere unwind label %lpad
...
lpad:
%eh_ptr = tail call i8* @llvm.eh.exception( )
%eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*))
tail call i32 (...)* @_Unwind_Resume( i8* %eh_ptr )
unreachable
...
}
define i32 @main() {
entry:
invoke void @_Z1fv( )
to lab...
2007 Dec 09
3
[LLVMdev] Darwin vs exceptions
(Mail system seems to have eaten this, sorry if it's a repeat)
On Dec 8, 2007, at 12:48 AM, Duncan Sands wrote:
> Hi Dale,
>
>> - Why was C++ claiming that every selector has a catch-all handler?
>
> this is easy: because the semantics of invoke require it. Yes,
> really.
> If unwinding reaches an invoke then control is required to jump to the
> unwind basic
2007 Dec 10
3
[LLVMdev] Darwin vs exceptions
...Then
> the above example compiles to:
>
> define void @_Z1fv() {
> ...
> invoke void @__cxa_throw( something ) noreturn
> to label %somewhere unwind label %lpad
> ...
> lpad:
> %eh_ptr = tail call i8* @llvm.eh.exception( )
> %eh_select8 = tail call i32 (i8*, i8*, ...)*
> @llvm.eh.selector.i32( i8* %eh_ptr, i8* bitcast (i32 (...)*
> @__gxx_personality_v0 to i8*))
I wasn't advocating this; agree it is wrong.
> tail call i32 (...)* @_Unwind_Resume( i8* %eh_ptr )
> unreachable
> ...
> }
>
&...
2007 Dec 10
0
[LLVMdev] Darwin vs exceptions
...compiles to:
> > ...
> I wasn't advocating this; agree it is wrong.
it's maybe not as wrong as it seems since having an empty
selector is equivalent to having a cleanup (IIRC) :)
> > ... If you force a "cleanup" by changing the selector call to:
> > %eh_select8.i = tail call i32 (i8*, i8*, ...)*
> > @llvm.eh.selector.i32( i8* %eh_ptr.i, i8* bitcast (i32 (...)*
> > @__gxx_personality_v0 to i8*), i32 0)
> > then it doesn't work either: the unwinder observes that there is
> > only a cleanup, and
> > using some special...
2007 Dec 10
3
[LLVMdev] Darwin vs exceptions
On Dec 10, 2007, at 11:38 AM, Duncan Sands wrote:
>>> ... If you force a "cleanup" by changing the selector call to:
>>> %eh_select8.i = tail call i32 (i8*, i8*, ...)*
>>> @llvm.eh.selector.i32( i8* %eh_ptr.i, i8* bitcast (i32 (...)*
>>> @__gxx_personality_v0 to i8*), i32 0)
>>> then it doesn't work either: the unwinder observes that there is
>>> only a cleanup, and
>>> using some...