blob: e2635c2de427fe3ff57c39a92074db41db680970 [file] [log] [blame]
Bill Wendlingb37db202011-08-25 01:19:13 +00001; 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
David Majnemer7fddecc2015-06-17 20:52:32 +00009define void @_Z3barv() uwtable optsize ssp personality i32 (...)* @__gxx_personality_v0 {
Bill Wendlingb37db202011-08-25 01:19:13 +000010entry:
11 invoke void @_Z3quxv() optsize
12 to label %try.cont unwind label %lpad
13
14try.cont: ; preds = %entry, %invoke.cont4
15 ret void
16
17lpad: ; preds = %entry
David Majnemer7fddecc2015-06-17 20:52:32 +000018 %exn = landingpad {i8*, i32}
Bill Wendlingb37db202011-08-25 01:19:13 +000019 cleanup
20 catch i8** @_ZTIc
21 filter [2 x i8**] [i8** @_ZTIPKc, i8** @_ZTId]
22 resume { i8*, i32 } %exn
23}
24
25declare void @_Z3quxv() optsize
26
27declare i32 @__gxx_personality_v0(...)
David Majnemer654e1302015-07-31 17:58:14 +000028
29define void @cleanupret0() personality i32 (...)* @__gxx_personality_v0 {
30entry:
David Majnemer85a549d2015-08-11 02:48:30 +000031 br label %try.cont
32
33try.cont:
34 invoke void @_Z3quxv() optsize
35 to label %try.cont unwind label %bb
David Majnemer654e1302015-07-31 17:58:14 +000036bb:
37 cleanuppad void [i7 4]
38 cleanupret i8 0 unwind label %bb
39}
40
41define void @cleanupret1() personality i32 (...)* @__gxx_personality_v0 {
42entry:
David Majnemer85a549d2015-08-11 02:48:30 +000043 br label %try.cont
44
45try.cont:
46 invoke void @_Z3quxv() optsize
47 to label %try.cont unwind label %bb
David Majnemer654e1302015-07-31 17:58:14 +000048bb:
49 cleanuppad void [i7 4]
50 cleanupret void unwind label %bb
51}
52
53define void @cleanupret2() personality i32 (...)* @__gxx_personality_v0 {
54entry:
55 cleanupret i8 0 unwind to caller
56}
57
58define void @cleanupret3() personality i32 (...)* @__gxx_personality_v0 {
59 cleanupret void unwind to caller
60}
61
62define void @catchret() personality i32 (...)* @__gxx_personality_v0 {
63entry:
64 br label %bb
65bb:
David Majnemer0bc0eef2015-08-15 02:46:08 +000066 catchret void to label %bb
David Majnemer654e1302015-07-31 17:58:14 +000067}
68
69define i8 @catchpad() personality i32 (...)* @__gxx_personality_v0 {
70entry:
David Majnemer85a549d2015-08-11 02:48:30 +000071 br label %try.cont
72
73try.cont:
74 invoke void @_Z3quxv() optsize
David Majnemer0bc0eef2015-08-15 02:46:08 +000075 to label %exit unwind label %bb2
David Majnemer654e1302015-07-31 17:58:14 +000076bb:
David Majnemer0bc0eef2015-08-15 02:46:08 +000077 catchret token %cbv to label %exit
78
79exit:
David Majnemer85a549d2015-08-11 02:48:30 +000080 ret i8 0
David Majnemer654e1302015-07-31 17:58:14 +000081bb2:
David Majnemer0bc0eef2015-08-15 02:46:08 +000082 %cbv = catchpad token [i7 4] to label %bb unwind label %bb3
83bb3:
84 catchendpad unwind to caller
David Majnemer654e1302015-07-31 17:58:14 +000085}
86
87define void @terminatepad0() personality i32 (...)* @__gxx_personality_v0 {
88entry:
David Majnemer85a549d2015-08-11 02:48:30 +000089 br label %try.cont
90
91try.cont:
92 invoke void @_Z3quxv() optsize
93 to label %try.cont unwind label %bb
David Majnemer654e1302015-07-31 17:58:14 +000094bb:
95 terminatepad [i7 4] unwind label %bb
96}
97
98define void @terminatepad1() personality i32 (...)* @__gxx_personality_v0 {
99entry:
David Majnemer85a549d2015-08-11 02:48:30 +0000100 br label %try.cont
101
102try.cont:
103 invoke void @_Z3quxv() optsize
104 to label %try.cont unwind label %bb
105bb:
David Majnemer654e1302015-07-31 17:58:14 +0000106 terminatepad [i7 4] unwind to caller
107}
108
109define void @cleanuppad() personality i32 (...)* @__gxx_personality_v0 {
110entry:
David Majnemer85a549d2015-08-11 02:48:30 +0000111 br label %try.cont
112
113try.cont:
114 invoke void @_Z3quxv() optsize
115 to label %try.cont unwind label %bb
116bb:
David Majnemer654e1302015-07-31 17:58:14 +0000117 cleanuppad void [i7 4]
118 ret void
119}
120
121define void @catchendpad0() personality i32 (...)* @__gxx_personality_v0 {
122entry:
David Majnemer85a549d2015-08-11 02:48:30 +0000123 br label %try.cont
124
125try.cont:
126 invoke void @_Z3quxv() optsize
127 to label %try.cont unwind label %bb
David Majnemer654e1302015-07-31 17:58:14 +0000128bb:
129 catchendpad unwind label %bb
130}
131
132define void @catchendpad1() personality i32 (...)* @__gxx_personality_v0 {
133entry:
David Majnemer85a549d2015-08-11 02:48:30 +0000134 br label %try.cont
135
136try.cont:
137 invoke void @_Z3quxv() optsize
138 to label %try.cont unwind label %bb
139bb:
David Majnemer654e1302015-07-31 17:58:14 +0000140 catchendpad unwind to caller
141}