comparison llvm/test/Feature/exception.ll @ 150:1d019706d866

LLVM10
author anatofuz
date Thu, 13 Feb 2020 15:10:13 +0900
parents
children 1f2b6ac9f198
comparison
equal deleted inserted replaced
147:c2174574ed3a 150:1d019706d866
1 ; RUN: llvm-as < %s | llvm-dis > %t1.ll
2 ; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
3 ; RUN: diff %t1.ll %t2.ll
4
5 @_ZTIc = external constant i8*
6 @_ZTId = external constant i8*
7 @_ZTIPKc = external constant i8*
8
9 define void @_Z3barv() uwtable optsize ssp personality i32 (...)* @__gxx_personality_v0 {
10 entry:
11 invoke void @_Z3quxv() optsize
12 to label %try.cont unwind label %lpad
13
14 try.cont: ; preds = %entry, %invoke.cont4
15 ret void
16
17 lpad: ; preds = %entry
18 %exn = landingpad {i8*, i32}
19 cleanup
20 catch i8** @_ZTIc
21 filter [2 x i8**] [i8** @_ZTIPKc, i8** @_ZTId]
22 resume { i8*, i32 } %exn
23 }
24
25 declare void @_Z3quxv() optsize
26
27 declare i32 @__gxx_personality_v0(...)
28
29 define void @cleanupret0() personality i32 (...)* @__gxx_personality_v0 {
30 entry:
31 invoke void @_Z3quxv() optsize
32 to label %exit unwind label %pad
33 pad:
34 %cp = cleanuppad within none [i7 4]
35 cleanupret from %cp unwind to caller
36 exit:
37 ret void
38 }
39
40 ; forward ref by name
41 define void @cleanupret1() personality i32 (...)* @__gxx_personality_v0 {
42 entry:
43 invoke void @_Z3quxv() optsize
44 to label %exit unwind label %pad
45 cleanup:
46 cleanupret from %cp unwind to caller
47 pad:
48 %cp = cleanuppad within none []
49 br label %cleanup
50 exit:
51 ret void
52 }
53
54 ; forward ref by ID
55 define void @cleanupret2() personality i32 (...)* @__gxx_personality_v0 {
56 entry:
57 invoke void @_Z3quxv() optsize
58 to label %exit unwind label %pad
59 cleanup:
60 cleanupret from %0 unwind to caller
61 pad:
62 %0 = cleanuppad within none []
63 br label %cleanup
64 exit:
65 ret void
66 }
67
68 define void @catchret0() personality i32 (...)* @__gxx_personality_v0 {
69 entry:
70 invoke void @_Z3quxv() optsize
71 to label %exit unwind label %pad
72 pad:
73 %cs1 = catchswitch within none [label %catch] unwind to caller
74 catch:
75 %cp = catchpad within %cs1 [i7 4]
76 catchret from %cp to label %exit
77 exit:
78 ret void
79 }
80
81 ; forward ref by name
82 define void @catchret1() personality i32 (...)* @__gxx_personality_v0 {
83 entry:
84 invoke void @_Z3quxv() optsize
85 to label %exit unwind label %pad
86 catchret:
87 catchret from %cp to label %exit
88 pad:
89 %cs1 = catchswitch within none [label %catch] unwind to caller
90 catch:
91 %cp = catchpad within %cs1 [i7 4]
92 br label %catchret
93 exit:
94 ret void
95 }
96
97 ; forward ref by ID
98 define void @catchret2() personality i32 (...)* @__gxx_personality_v0 {
99 entry:
100 invoke void @_Z3quxv() optsize
101 to label %exit unwind label %pad
102 catchret:
103 catchret from %0 to label %exit
104 pad:
105 %cs1 = catchswitch within none [label %catch] unwind to caller
106 catch:
107 %0 = catchpad within %cs1 [i7 4]
108 br label %catchret
109 exit:
110 ret void
111 }
112
113 define i8 @catchpad() personality i32 (...)* @__gxx_personality_v0 {
114 entry:
115 invoke void @_Z3quxv() optsize
116 to label %exit unwind label %bb2
117 bb2:
118 %cs1 = catchswitch within none [label %catch] unwind to caller
119 catch:
120 catchpad within %cs1 [i7 4]
121 br label %exit
122 exit:
123 ret i8 0
124 }
125
126 define void @cleanuppad() personality i32 (...)* @__gxx_personality_v0 {
127 entry:
128 br label %try.cont
129
130 try.cont:
131 invoke void @_Z3quxv() optsize
132 to label %try.cont unwind label %bb
133 bb:
134 cleanuppad within none [i7 4]
135 ret void
136 }