Displaying 7 results from an estimated 7 matches for "eh_select".
2007 Dec 12
0
[LLVMdev] Darwin vs exceptions
...ch(A) { i = 1; } }
void h() { try { g(); } catch(B) { i = 2; } }
Without catch-alls this compiles to something like:
define void @_Z1gv() {
entry:
invoke void @_Z1fv( )
to label %UnifiedReturnBlock unwind label %lpad
...
lpad: ; preds = %entry
%eh_ptr = tail call i8* @llvm.eh.exception( )
%eh_select = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr, i32 (...)* @__gxx_personality_v0, i8* A)
%eh_typeid = tail call i32 @llvm.eh.typeid.for.i32( i8* A )
%tmp15 = icmp eq i32 %eh_select, %eh_typeid
br i1 %tmp15, label %bb, label %Unwind
...
Unwind: ; preds = %lpad
tail call i32...
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 som...
2009 May 12
1
[LLVMdev] How distinguish Catch all llvm-IR from other catch type ?
...14 to label %invcont unwind label %lpad
15
16 invcont: ; preds = %entry
17 unreachable
18
19 lpad: ; preds = %entry
20 %eh_ptr = tail call i8* @llvm.eh.exception()
; <i8*> [#uses=2]
21 %eh_select = tail call i32 (i8*, i8*, ...)*
@llvm.eh.selector.i32(i8* %eh_ptr, i8* bitcast (i32 (...)*
@__gxx_personality_sj0 to i8*)) ; <i32> [#uses=0]
22 %2 = tail call i8* @__cxa_begin_catch(i8* %eh_ptr)
nounwind ; <i8*> [#uses=0]
23 tail call void...
2009 May 12
2
[LLVMdev] catch all
Hi,
that's right ! catch(all) has extra null arg,
eh_select = tail call i32 (i8*, i8*, ...)*
@llvm.eh.selector.i32(i8* %eh_ptr, i8* bitcast (i32 (...)*
@__gxx_personality_v0 to i8*), i8* null) ; <i32> [#uses=0]
I have doubt that :
the llvm-IR like above are all translated from catch(all) statement .
zhangzw
2009 May 12
0
[LLVMdev] catch all
> that's right ! catch(all) has extra null arg,
>
> eh_select = tail call i32 (i8*, i8*, ...)*
> @llvm.eh.selector.i32(i8* %eh_ptr, i8* bitcast (i32 (...)*
> @__gxx_personality_v0 to i8*), i8* null) ; <i32> [#uses=0]
>
> I have doubt that :
> the llvm-IR like above are all translated from catch(all) statement .
I'm not sur...
2009 May 12
1
[LLVMdev] catch all
2009/5/12 Duncan Sands <baldrick at free.fr>:
>> that's right ! catch(all) has extra null arg,
>>
>> eh_select = tail call i32 (i8*, i8*, ...)*
>> @llvm.eh.selector.i32(i8* %eh_ptr, i8* bitcast (i32 (...)*
>> @__gxx_personality_v0 to i8*), i8* null) ; <i32> [#uses=0]
>>
>> I have doubt that :
>> the llvm-IR like above are all translated from catch(all) statement...
2009 Apr 28
3
[LLVMdev] how to resolve llvm exception IR?
...;
>"*> [#uses=0]
61
62 bb6: ; preds = %bb
63 tail call void @__cxa_end_catch()
64 ret i32 0
65
66 lpad: ; preds = %entry
67 %eh_ptr = tail call i8* @llvm.eh.exception()
; <i8*> [#uses=3]
68 %eh_select9 = tail call i32 (i8*, i8*, ...)*
@llvm.eh.selector.i32(i8* %eh_ptr, i8* bitcast (i32 (...)*
@__gxx_personality_v0 to i8*), i8* bitcast
(%struct.__fundamental_type_info_pseudo* @_ZTIi to i8*), i8* null)
; <i32> [#uses=1]
69 %eh_typeid = tail call i32 @llvm.eh.typeid.for.i32(...