llvm.org GIT mirror llvm / 1a9a2d0
Update to the new EH scheme. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138606 91177308-0d34-0410-b5e6-96231b3b80d8 Bill Wendling 8 years ago
9 changed file(s) with 47 addition(s) and 12 deletion(s). Raw diff Collapse all Expand all
0 ; RUN: llvm-as < %s | llvm-dis
11
22 define void @test() {
3 invoke void @test( )
4 to label %Next unwind label %Next
3 invoke void @test( )
4 to label %Next unwind label %Next
55
66 Next: ; preds = %0, %0
7 ret void
7 %lpad = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
8 cleanup
9 ret void
810 }
11
12 declare i32 @__gxx_personality_v0(...)
1111 ret i32 1
1212
1313 EH: ; preds = %0
14 ret i32 0
14 %lpad = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
15 cleanup
16 ret i32 0
1517 }
1618
19 declare i32 @__gxx_personality_v0(...)
77 invcont:
88 ret i32 %A
99 blat:
10 ret i32 0
10 %lpad = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
11 cleanup
12 ret i32 0
1113 }
14
15 declare i32 @__gxx_personality_v0(...)
4444 ret void
4545
4646 cond_true1402: ; preds = %invcont282, %cond_false280, %cond_true235, %cond_true
47 ret void
47 %lpad = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
48 cleanup
49 ret void
4850 }
4951
5052 declare void @_ZNSs14_M_replace_auxEjjjc()
5658 declare void @_ZNSs7reserveEj()
5759
5860 declare void @_ZNSs6appendEPKcj()
61
62 declare i32 @__gxx_personality_v0(...)
11
22 define fastcc void @bc__support__high_resolution_time__initialize_clock_rate() {
33 entry:
4 invoke void asm "rdtsc\0A\09movl %eax, $0\0A\09movl %edx, $1", "=*imr,=*imr,~{dirflag},~{fpsr},~{flags},~{dx},~{ax}"( i32* null, i32* null )
5 to label %.noexc unwind label %cleanup144
4 invoke void asm "rdtsc\0A\09movl %eax, $0\0A\09movl %edx, $1", "=*imr,=*imr,~{dirflag},~{fpsr},~{flags},~{dx},~{ax}"( i32* null, i32* null )
5 to label %.noexc unwind label %cleanup144
66
77 .noexc: ; preds = %entry
8 ret void
8 ret void
99
1010 cleanup144: ; preds = %entry
11 unwind
11 %exn = landingpad {i8*, i32} personality i32 (...)* @__gxx_personality_v0
12 cleanup
13 unwind
1214 }
15
16 declare i32 @__gxx_personality_v0(...)
1313 unreachable
1414
1515 lpad: ; preds = %entry
16 %lpad1 = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
17 catch i8* null
1618 invoke void @__cxa_end_catch( )
1719 to label %bb14 unwind label %lpad17
1820
1921 lpad17: ; preds = %lpad
20 %eh_select20 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* null, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i8* null ) ; [#uses=0]
22 %lpad2 = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
23 catch i8* null
2124 unreachable
2225
2326 UnifiedUnreachableBlock: ; preds = %entry
1010 invoke i32 @b() to label %reg unwind label %reg
1111
1212 reg:
13 %lpad = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
14 catch i8* null
1315 ret void
1416 }
17
18 declare i32 @__gxx_personality_v0(...)
6363
6464 lpad: ; preds = %bb.i93, %invcont24, %bb1.i, %invcont8
6565 %__extracted.1 = phi i32 [ 0, %invcont8 ], [ %2, %bb1.i ], [ undef, %bb.i93 ], [ undef, %invcont24 ] ; [#uses=0]
66 %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=1]
66 %lpad1 = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
67 catch i8* null
68 %eh_ptr = extractvalue { i8*, i32 } %lpad1, 0
6769 %6 = call i8* @__cxa_begin_catch(i8* %eh_ptr) nounwind ; [#uses=0]
6870 unreachable
6971
7072 lpad74: ; preds = %entry
73 %lpad2 = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
74 cleanup
7175 unreachable
7276 }
77
78 declare i32 @__gxx_personality_v0(...)
1212 ret void
1313
1414 handler:
15 %exn = landingpad {i8*, i32} personality i32 (...)* @__gxx_personality_v0
16 catch i8* null
1517 ret void
1618 }
1719
20 declare i32 @__gxx_personality_v0(...)