blob: dbbe7e41edb80968e2b33c66b0d865dc52f381f7 [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:
66 catchret label %bb
67}
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
75 to label %bb unwind label %bb2
David Majnemer654e1302015-07-31 17:58:14 +000076bb:
David Majnemer85a549d2015-08-11 02:48:30 +000077 ret i8 0
David Majnemer654e1302015-07-31 17:58:14 +000078bb2:
79 %cbv = catchpad i8 [i7 4] to label %bb unwind label %bb2
80}
81
82define void @terminatepad0() personality i32 (...)* @__gxx_personality_v0 {
83entry:
David Majnemer85a549d2015-08-11 02:48:30 +000084 br label %try.cont
85
86try.cont:
87 invoke void @_Z3quxv() optsize
88 to label %try.cont unwind label %bb
David Majnemer654e1302015-07-31 17:58:14 +000089bb:
90 terminatepad [i7 4] unwind label %bb
91}
92
93define void @terminatepad1() personality i32 (...)* @__gxx_personality_v0 {
94entry:
David Majnemer85a549d2015-08-11 02:48:30 +000095 br label %try.cont
96
97try.cont:
98 invoke void @_Z3quxv() optsize
99 to label %try.cont unwind label %bb
100bb:
David Majnemer654e1302015-07-31 17:58:14 +0000101 terminatepad [i7 4] unwind to caller
102}
103
104define void @cleanuppad() personality i32 (...)* @__gxx_personality_v0 {
105entry:
David Majnemer85a549d2015-08-11 02:48:30 +0000106 br label %try.cont
107
108try.cont:
109 invoke void @_Z3quxv() optsize
110 to label %try.cont unwind label %bb
111bb:
David Majnemer654e1302015-07-31 17:58:14 +0000112 cleanuppad void [i7 4]
113 ret void
114}
115
116define void @catchendpad0() personality i32 (...)* @__gxx_personality_v0 {
117entry:
David Majnemer85a549d2015-08-11 02:48:30 +0000118 br label %try.cont
119
120try.cont:
121 invoke void @_Z3quxv() optsize
122 to label %try.cont unwind label %bb
David Majnemer654e1302015-07-31 17:58:14 +0000123bb:
124 catchendpad unwind label %bb
125}
126
127define void @catchendpad1() personality i32 (...)* @__gxx_personality_v0 {
128entry:
David Majnemer85a549d2015-08-11 02:48:30 +0000129 br label %try.cont
130
131try.cont:
132 invoke void @_Z3quxv() optsize
133 to label %try.cont unwind label %bb
134bb:
David Majnemer654e1302015-07-31 17:58:14 +0000135 catchendpad unwind to caller
136}