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
5 @_ZTIc = external constant i8*
6 @_ZTId = external constant i8*
7 @_ZTIPKc = external constant i8*
9 define void @_Z3barv() uwtable optsize ssp personality i32 (...)* @__gxx_personality_v0 {
11 invoke void @_Z3quxv() optsize
12 to label %try.cont unwind label %lpad
14 try.cont: ; preds = %entry, %invoke.cont4
17 lpad: ; preds = %entry
18 %exn = landingpad {i8*, i32}
21 filter [2 x i8**] [i8** @_ZTIPKc, i8** @_ZTId]
22 resume { i8*, i32 } %exn
25 declare void @_Z3quxv() optsize
27 declare i32 @__gxx_personality_v0(...)
29 define void @cleanupret0() personality i32 (...)* @__gxx_personality_v0 {
31 invoke void @_Z3quxv() optsize
32 to label %exit unwind label %pad
34 %cp = cleanuppad within none [i7 4]
35 cleanupret from %cp unwind to caller
41 define void @cleanupret1() personality i32 (...)* @__gxx_personality_v0 {
43 invoke void @_Z3quxv() optsize
44 to label %exit unwind label %pad
46 cleanupret from %cp unwind to caller
48 %cp = cleanuppad within none []
55 define void @cleanupret2() personality i32 (...)* @__gxx_personality_v0 {
57 invoke void @_Z3quxv() optsize
58 to label %exit unwind label %pad
60 cleanupret from %0 unwind to caller
62 %0 = cleanuppad within none []
68 define void @catchret0() personality i32 (...)* @__gxx_personality_v0 {
70 invoke void @_Z3quxv() optsize
71 to label %exit unwind label %pad
73 %cs1 = catchswitch within none [label %catch] unwind to caller
75 %cp = catchpad within %cs1 [i7 4]
76 catchret from %cp to label %exit
82 define void @catchret1() personality i32 (...)* @__gxx_personality_v0 {
84 invoke void @_Z3quxv() optsize
85 to label %exit unwind label %pad
87 catchret from %cp to label %exit
89 %cs1 = catchswitch within none [label %catch] unwind to caller
91 %cp = catchpad within %cs1 [i7 4]
98 define void @catchret2() personality i32 (...)* @__gxx_personality_v0 {
100 invoke void @_Z3quxv() optsize
101 to label %exit unwind label %pad
103 catchret from %0 to label %exit
105 %cs1 = catchswitch within none [label %catch] unwind to caller
107 %0 = catchpad within %cs1 [i7 4]
113 define i8 @catchpad() personality i32 (...)* @__gxx_personality_v0 {
115 invoke void @_Z3quxv() optsize
116 to label %exit unwind label %bb2
118 %cs1 = catchswitch within none [label %catch] unwind to caller
120 catchpad within %cs1 [i7 4]
126 define void @cleanuppad() personality i32 (...)* @__gxx_personality_v0 {
131 invoke void @_Z3quxv() optsize
132 to label %try.cont unwind label %bb
134 cleanuppad within none [i7 4]