comparison llvm/test/Feature/exception.ll @ 252:1f2b6ac9f198 llvm-original

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