llvm.org GIT mirror llvm / 6b951b2
The normal edge of an invoke is not allowed to branch to a block with a landingpad. Enforce it in the verifier, and fix the regression tests to match. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161697 91177308-0d34-0410-b5e6-96231b3b80d8 Eli Friedman 8 years ago
9 changed file(s) with 25 addition(s) and 1205 deletion(s). Raw diff Collapse all Expand all
15351535 // landing pad block may be branched to only by the unwind edge of an invoke.
15361536 for (pred_iterator I = pred_begin(BB), E = pred_end(BB); I != E; ++I) {
15371537 const InvokeInst *II = dyn_cast((*I)->getTerminator());
1538 Assert1(II && II->getUnwindDest() == BB,
1538 Assert1(II && II->getUnwindDest() == BB && II->getNormalDest() != BB,
15391539 "Block containing LandingPadInst must be jumped to "
15401540 "only by the unwind edge of an invoke.", &LPI);
15411541 }
+0
-13
test/Assembler/2003-06-17-InvokeDisassemble.ll less more
None ; RUN: llvm-as < %s | llvm-dis
1
2 define void @test() {
3 invoke void @test( )
4 to label %Next unwind label %Next
5
6 Next: ; preds = %0, %0
7 %lpad = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
8 cleanup
9 ret void
10 }
11
12 declare i32 @__gxx_personality_v0(...)
+0
-19
test/CodeGen/Generic/2009-06-03-UnreachableSplitPad.ll less more
None ; RUN: llc < %s
1 ; PR4317
2
3 declare i32 @b()
4
5 define void @a() {
6 entry:
7 ret void
8
9 dummy:
10 invoke i32 @b() to label %reg unwind label %reg
11
12 reg:
13 %lpad = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
14 catch i8* null
15 ret void
16 }
17
18 declare i32 @__gxx_personality_v0(...)
131131 }
132132
133133 define void @test5() {
134 store i1 true, i1* undef
135 %1 = invoke i32 @test5a() to label %exit unwind label %exit
134 store i1 true, i1* undef
135 %r = invoke i32 @test5a() to label %exit unwind label %unwind
136 unwind:
137 %exn = landingpad {i8*, i32} personality i32 (...)* @__gxx_personality_v0
138 cleanup
139 br label %exit
136140 exit:
137 %exn = landingpad {i8*, i32} personality i32 (...)* @__gxx_personality_v0
138 cleanup
139 ret void
141 ret void
140142 }
141143
142144
+0
-14
test/Transforms/PruneEH/2003-09-14-ExternalCall.ll less more
None ; RUN: opt < %s -prune-eh -S | grep invoke
1
2 declare void @External()
3
4 define void @foo() {
5 invoke void @External( )
6 to label %Cont unwind label %Cont
7 Cont: ; preds = %0, %0
8 %exn = landingpad {i8*, i32} personality i32 (...)* @__gxx_personality_v0
9 cleanup
10 ret void
11 }
12
13 declare i32 @__gxx_personality_v0(...)
+0
-15
test/Transforms/SimplifyCFG/2003-08-05-MishandleInvoke.ll less more
None ; Do not remove the invoke!
1 ;
2 ; RUN: opt < %s -simplifycfg -S | grep invoke
3
4 define i32 @test() {
5 invoke i32 @test( )
6 to label %Ret unwind label %Ret ; :1 [#uses=0]
7 Ret: ; preds = %0, %0
8 %val = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
9 catch i8* null
10 %A = add i32 0, 1 ; [#uses=1]
11 ret i32 %A
12 }
13
14 declare i32 @__gxx_personality_v0(...)
+0
-567
test/Transforms/SimplifyCFG/2006-10-29-InvokeCrash.ll less more
None ; RUN: opt < %s -simplifycfg -disable-output
1 ; END.
2 %struct..4._102 = type { %struct.QVectorData* }
3 %struct..5._125 = type { %struct.QMapData* }
4 %struct.QAbstractTextDocumentLayout = type { %struct.QObject }
5 %struct.QBasicAtomic = type { i32 }
6 %struct.QFont = type { %struct.QFontPrivate*, i32 }
7 %struct.QFontMetrics = type { %struct.QFontPrivate* }
8 %struct.QFontPrivate = type opaque
9 %"struct.QFragmentMap" = type { %struct.QFragmentMapData }
10 %struct.QFragmentMapData = type { %"struct.QFragmentMapData::._154", i32 }
11 %"struct.QFragmentMapData::._154" = type { %"struct.QFragmentMapData::Header"* }
12 %"struct.QFragmentMapData::Header" = type { i32, i32, i32, i32, i32, i32, i32, i32 }
13 %"struct.QHash" = type { %"struct.QHash::._152" }
14 %"struct.QHash::._152" = type { %struct.QHashData* }
15 %struct.QHashData = type { %"struct.QHashData::Node"*, %"struct.QHashData::Node"**, %struct.QBasicAtomic, i32, i32, i16, i16, i32, i8 }
16 %"struct.QHashData::Node" = type { %"struct.QHashData::Node"*, i32 }
17 %"struct.QList::._92" = type { %struct.QListData }
18 %"struct.QList >" = type { %"struct.QList::._92" }
19 %struct.QListData = type { %"struct.QListData::Data"* }
20 %"struct.QListData::Data" = type { %struct.QBasicAtomic, i32, i32, i32, i8, [1 x i8*] }
21 %"struct.QMap" = type { %struct..5._125 }
22 %struct.QMapData = type { %"struct.QMapData::Node"*, [12 x %"struct.QMapData::Node"*], %struct.QBasicAtomic, i32, i32, i32, i8 }
23 %"struct.QMapData::Node" = type { %"struct.QMapData::Node"*, [1 x %"struct.QMapData::Node"*] }
24 %struct.QObject = type { i32 (...)**, %struct.QObjectData* }
25 %struct.QObjectData = type { i32 (...)**, %struct.QObject*, %struct.QObject*, %"struct.QList >", i8, [3 x i8], i32, i32 }
26 %struct.QObjectPrivate = type { %struct.QObjectData, i32, %struct.QObject*, %"struct.QList >", %"struct.QVector", %struct.QString }
27 %struct.QPaintDevice = type { i32 (...)**, i16 }
28 %struct.QPainter = type { %struct.QPainterPrivate* }
29 %struct.QPainterPrivate = type opaque
30 %struct.QPointF = type { double, double }
31 %struct.QPrinter = type { %struct.QPaintDevice, %struct.QPrinterPrivate* }
32 %struct.QPrinterPrivate = type opaque
33 %struct.QRectF = type { double, double, double, double }
34 %"struct.QSet" = type { %"struct.QHash" }
35 %"struct.QSharedDataPointer" = type { %struct.QTextFormatPrivate* }
36 %struct.QString = type { %"struct.QString::Data"* }
37 %"struct.QString::Data" = type { %struct.QBasicAtomic, i32, i32, i16*, i8, i8, [1 x i16] }
38 %struct.QTextBlockFormat = type { %struct.QTextFormat }
39 %struct.QTextBlockGroup = type { %struct.QAbstractTextDocumentLayout }
40 %struct.QTextDocumentConfig = type { %struct.QString }
41 %struct.QTextDocumentPrivate = type { %struct.QObjectPrivate, %struct.QString, %"struct.QVector", i1, i32, i32, i1, i32, i32, i32, i32, i1, %struct.QTextFormatCollection, %struct.QTextBlockGroup*, %struct.QAbstractTextDocumentLayout*, %"struct.QFragmentMap", %"struct.QFragmentMap", i32, %"struct.QList >", %"struct.QList >", %"struct.QMap", %"struct.QMap", %"struct.QMap", %struct.QTextDocumentConfig, i1, i1, %struct.QPointF }
42 %struct.QTextFormat = type { %"struct.QSharedDataPointer", i32 }
43 %struct.QTextFormatCollection = type { %"struct.QVector", %"struct.QVector", %"struct.QSet", %struct.QFont }
44 %struct.QTextFormatPrivate = type opaque
45 %"struct.QVector" = type { %struct..4._102 }
46 %struct.QVectorData = type { %struct.QBasicAtomic, i32, i32, i8 }
47
48 define void @_ZNK13QTextDocument5printEP8QPrinter(%struct.QAbstractTextDocumentLayout* %this, %struct.QPrinter* %printer) {
49 entry:
50 %tmp = alloca %struct.QPointF, align 16 ; <%struct.QPointF*> [#uses=2]
51 %tmp.upgrd.1 = alloca %struct.QRectF, align 16 ; <%struct.QRectF*> [#uses=5]
52 %tmp2 = alloca %struct.QPointF, align 16 ; <%struct.QPointF*> [#uses=3]
53 %tmp.upgrd.2 = alloca %struct.QFontMetrics, align 16 ; <%struct.QFontMetrics*> [#uses=4]
54 %tmp.upgrd.3 = alloca %struct.QFont, align 16 ; <%struct.QFont*> [#uses=4]
55 %tmp3 = alloca %struct.QPointF, align 16 ; <%struct.QPointF*> [#uses=2]
56 %p = alloca %struct.QPainter, align 16 ; <%struct.QPainter*> [#uses=14]
57 %body = alloca %struct.QRectF, align 16 ; <%struct.QRectF*> [#uses=9]
58 %pageNumberPos = alloca %struct.QPointF, align 16 ; <%struct.QPointF*> [#uses=4]
59 %scaledPageSize = alloca %struct.QPointF, align 16 ; <%struct.QPointF*> [#uses=6]
60 %printerPageSize = alloca %struct.QPointF, align 16 ; <%struct.QPointF*> [#uses=3]
61 %fmt = alloca %struct.QTextBlockFormat, align 16 ; <%struct.QTextBlockFormat*> [#uses=5]
62 %font = alloca %struct.QFont, align 16 ; <%struct.QFont*> [#uses=5]
63 %tmp.upgrd.4 = call %struct.QTextDocumentPrivate* @_ZNK13QTextDocument6d_funcEv( %struct.QAbstractTextDocumentLayout* %this ) ; <%struct.QTextDocumentPrivate*> [#uses=5]
64 %tmp.upgrd.5 = getelementptr %struct.QPrinter* %printer, i32 0, i32 0 ; <%struct.QPaintDevice*> [#uses=1]
65 call void @_ZN8QPainterC1EP12QPaintDevice( %struct.QPainter* %p, %struct.QPaintDevice* %tmp.upgrd.5 )
66 %tmp.upgrd.6 = invoke i1 @_ZNK8QPainter8isActiveEv( %struct.QPainter* %p )
67 to label %invcont unwind label %cleanup329 ; [#uses=1]
68 invcont: ; preds = %entry
69 br i1 %tmp.upgrd.6, label %cond_next, label %cleanup328
70 cond_next: ; preds = %invcont
71 %tmp8 = invoke %struct.QAbstractTextDocumentLayout* @_ZNK13QTextDocument14documentLayoutEv( %struct.QAbstractTextDocumentLayout* %this )
72 to label %invcont7 unwind label %cleanup329 ; <%struct.QAbstractTextDocumentLayout*> [#uses=0]
73 invcont7: ; preds = %cond_next
74 %tmp10 = getelementptr %struct.QTextDocumentPrivate* %tmp.upgrd.4, i32 0, i32 26 ; <%struct.QPointF*> [#uses=1]
75 call void @_ZN7QPointFC1Edd( %struct.QPointF* %tmp, double 0.000000e+00, double 0.000000e+00 )
76 call void @_ZN6QRectFC1ERK7QPointFRK6QSizeF( %struct.QRectF* %body, %struct.QPointF* %tmp, %struct.QPointF* %tmp10 )
77 call void @_ZN7QPointFC1Ev( %struct.QPointF* %pageNumberPos )
78 %tmp12 = getelementptr %struct.QTextDocumentPrivate* %tmp.upgrd.4, i32 0, i32 26 ; <%struct.QPointF*> [#uses=1]
79 %tmp13 = call i1 @_ZNK6QSizeF7isValidEv( %struct.QPointF* %tmp12 ) ; [#uses=1]
80 br i1 %tmp13, label %cond_next15, label %bb
81 cond_next15: ; preds = %invcont7
82 %tmp17 = getelementptr %struct.QTextDocumentPrivate* %tmp.upgrd.4, i32 0, i32 26 ; <%struct.QPointF*> [#uses=1]
83 %tmp.upgrd.7 = call double @_ZNK6QSizeF6heightEv( %struct.QPointF* %tmp17 ) ; [#uses=1]
84 %tmp18 = fcmp oeq double %tmp.upgrd.7, 0x41DFFFFFFFC00000 ; [#uses=1]
85 br i1 %tmp18, label %bb, label %cond_next20
86 cond_next20: ; preds = %cond_next15
87 br label %bb21
88 bb: ; preds = %cond_next15, %invcont7
89 br label %bb21
90 bb21: ; preds = %bb, %cond_next20
91 %iftmp.406.0 = phi i1 [ false, %bb ], [ true, %cond_next20 ] ; [#uses=1]
92 br i1 %iftmp.406.0, label %cond_true24, label %cond_false
93 cond_true24: ; preds = %bb21
94 %tmp.upgrd.8 = invoke i32 @_Z13qt_defaultDpiv( )
95 to label %invcont25 unwind label %cleanup329 ; [#uses=1]
96 invcont25: ; preds = %cond_true24
97 %tmp26 = sitofp i32 %tmp.upgrd.8 to double ; [#uses=2]
98 %tmp30 = invoke %struct.QAbstractTextDocumentLayout* @_ZNK13QTextDocument14documentLayoutEv( %struct.QAbstractTextDocumentLayout* %this )
99 to label %invcont29 unwind label %cleanup329 ; <%struct.QAbstractTextDocumentLayout*> [#uses=1]
100 invcont29: ; preds = %invcont25
101 %tmp32 = invoke %struct.QPaintDevice* @_ZNK27QAbstractTextDocumentLayout11paintDeviceEv( %struct.QAbstractTextDocumentLayout* %tmp30 )
102 to label %invcont31 unwind label %cleanup329 ; <%struct.QPaintDevice*> [#uses=3]
103 invcont31: ; preds = %invcont29
104 %tmp34 = icmp eq %struct.QPaintDevice* %tmp32, null ; [#uses=1]
105 br i1 %tmp34, label %cond_next42, label %cond_true35
106 cond_true35: ; preds = %invcont31
107 %tmp38 = invoke i32 @_ZNK12QPaintDevice11logicalDpiXEv( %struct.QPaintDevice* %tmp32 )
108 to label %invcont37 unwind label %cleanup329 ; [#uses=1]
109 invcont37: ; preds = %cond_true35
110 %tmp38.upgrd.9 = sitofp i32 %tmp38 to double ; [#uses=1]
111 %tmp41 = invoke i32 @_ZNK12QPaintDevice11logicalDpiYEv( %struct.QPaintDevice* %tmp32 )
112 to label %invcont40 unwind label %cleanup329 ; [#uses=1]
113 invcont40: ; preds = %invcont37
114 %tmp41.upgrd.10 = sitofp i32 %tmp41 to double ; [#uses=1]
115 br label %cond_next42
116 cond_next42: ; preds = %invcont40, %invcont31
117 %sourceDpiY.2 = phi double [ %tmp41.upgrd.10, %invcont40 ], [ %tmp26, %invcont31 ] ; [#uses=1]
118 %sourceDpiX.2 = phi double [ %tmp38.upgrd.9, %invcont40 ], [ %tmp26, %invcont31 ] ; [#uses=1]
119 %tmp44 = getelementptr %struct.QPrinter* %printer, i32 0, i32 0 ; <%struct.QPaintDevice*> [#uses=1]
120 %tmp46 = invoke i32 @_ZNK12QPaintDevice11logicalDpiXEv( %struct.QPaintDevice* %tmp44 )
121 to label %invcont45 unwind label %cleanup329 ; [#uses=1]
122 invcont45: ; preds = %cond_next42
123 %tmp46.upgrd.11 = sitofp i32 %tmp46 to double ; [#uses=1]
124 %tmp48 = fdiv double %tmp46.upgrd.11, %sourceDpiX.2 ; [#uses=2]
125 %tmp50 = getelementptr %struct.QPrinter* %printer, i32 0, i32 0 ; <%struct.QPaintDevice*> [#uses=1]
126 %tmp52 = invoke i32 @_ZNK12QPaintDevice11logicalDpiYEv( %struct.QPaintDevice* %tmp50 )
127 to label %invcont51 unwind label %cleanup329 ; [#uses=1]
128 invcont51: ; preds = %invcont45
129 %tmp52.upgrd.12 = sitofp i32 %tmp52 to double ; [#uses=1]
130 %tmp54 = fdiv double %tmp52.upgrd.12, %sourceDpiY.2 ; [#uses=2]
131 invoke void @_ZN8QPainter5scaleEdd( %struct.QPainter* %p, double %tmp48, double %tmp54 )
132 to label %invcont57 unwind label %cleanup329
133 invcont57: ; preds = %invcont51
134 %tmp.upgrd.13 = getelementptr %struct.QPointF* %scaledPageSize, i32 0, i32 0 ; [#uses=1]
135 %tmp60 = getelementptr %struct.QTextDocumentPrivate* %tmp.upgrd.4, i32 0, i32 26, i32 0 ; [#uses=1]
136 %tmp61 = load double* %tmp60 ; [#uses=1]
137 store double %tmp61, double* %tmp.upgrd.13
138 %tmp62 = getelementptr %struct.QPointF* %scaledPageSize, i32 0, i32 1 ; [#uses=1]
139 %tmp63 = getelementptr %struct.QTextDocumentPrivate* %tmp.upgrd.4, i32 0, i32 26, i32 1 ; [#uses=1]
140 %tmp64 = load double* %tmp63 ; [#uses=1]
141 store double %tmp64, double* %tmp62
142 %tmp65 = call double* @_ZN6QSizeF6rwidthEv( %struct.QPointF* %scaledPageSize ) ; [#uses=2]
143 %tmp67 = load double* %tmp65 ; [#uses=1]
144 %tmp69 = fmul double %tmp67, %tmp48 ; [#uses=1]
145 store double %tmp69, double* %tmp65
146 %tmp71 = call double* @_ZN6QSizeF7rheightEv( %struct.QPointF* %scaledPageSize ) ; [#uses=2]
147 %tmp73 = load double* %tmp71 ; [#uses=1]
148 %tmp75 = fmul double %tmp73, %tmp54 ; [#uses=1]
149 store double %tmp75, double* %tmp71
150 %tmp78 = getelementptr %struct.QPrinter* %printer, i32 0, i32 0 ; <%struct.QPaintDevice*> [#uses=1]
151 %tmp80 = invoke i32 @_ZNK12QPaintDevice6heightEv( %struct.QPaintDevice* %tmp78 )
152 to label %invcont79 unwind label %cleanup329 ; [#uses=1]
153 invcont79: ; preds = %invcont57
154 %tmp82 = getelementptr %struct.QPrinter* %printer, i32 0, i32 0 ; <%struct.QPaintDevice*> [#uses=1]
155 %tmp84 = invoke i32 @_ZNK12QPaintDevice5widthEv( %struct.QPaintDevice* %tmp82 )
156 to label %invcont83 unwind label %cleanup329 ; [#uses=1]
157 invcont83: ; preds = %invcont79
158 %tmp80.upgrd.14 = sitofp i32 %tmp80 to double ; [#uses=1]
159 %tmp84.upgrd.15 = sitofp i32 %tmp84 to double ; [#uses=1]
160 call void @_ZN6QSizeFC1Edd( %struct.QPointF* %printerPageSize, double %tmp84.upgrd.15, double %tmp80.upgrd.14 )
161 %tmp85 = call double @_ZNK6QSizeF6heightEv( %struct.QPointF* %printerPageSize ) ; [#uses=1]
162 %tmp86 = call double @_ZNK6QSizeF6heightEv( %struct.QPointF* %scaledPageSize ) ; [#uses=1]
163 %tmp87 = fdiv double %tmp85, %tmp86 ; [#uses=1]
164 %tmp88 = call double @_ZNK6QSizeF5widthEv( %struct.QPointF* %printerPageSize ) ; [#uses=1]
165 %tmp89 = call double @_ZNK6QSizeF5widthEv( %struct.QPointF* %scaledPageSize ) ; [#uses=1]
166 %tmp90 = fdiv double %tmp88, %tmp89 ; [#uses=1]
167 invoke void @_ZN8QPainter5scaleEdd( %struct.QPainter* %p, double %tmp90, double %tmp87 )
168 to label %cond_next194 unwind label %cleanup329
169 cond_false: ; preds = %bb21
170 %tmp.upgrd.16 = getelementptr %struct.QAbstractTextDocumentLayout* %this, i32 0, i32 0 ; <%struct.QObject*> [#uses=1]
171 %tmp95 = invoke %struct.QAbstractTextDocumentLayout* @_ZNK13QTextDocument5cloneEP7QObject( %struct.QAbstractTextDocumentLayout* %this, %struct.QObject* %tmp.upgrd.16 )
172 to label %invcont94 unwind label %cleanup329 ; <%struct.QAbstractTextDocumentLayout*> [#uses=9]
173 invcont94: ; preds = %cond_false
174 %tmp99 = invoke %struct.QAbstractTextDocumentLayout* @_ZNK13QTextDocument14documentLayoutEv( %struct.QAbstractTextDocumentLayout* %tmp95 )
175 to label %invcont98 unwind label %cleanup329 ; <%struct.QAbstractTextDocumentLayout*> [#uses=1]
176 invcont98: ; preds = %invcont94
177 %tmp101 = invoke %struct.QPaintDevice* @_ZNK8QPainter6deviceEv( %struct.QPainter* %p )
178 to label %invcont100 unwind label %cleanup329 ; <%struct.QPaintDevice*> [#uses=1]
179 invcont100: ; preds = %invcont98
180 invoke void @_ZN27QAbstractTextDocumentLayout14setPaintDeviceEP12QPaintDevice( %struct.QAbstractTextDocumentLayout* %tmp99, %struct.QPaintDevice* %tmp101 )
181 to label %invcont103 unwind label %cleanup329
182 invcont103: ; preds = %invcont100
183 %tmp105 = invoke %struct.QPaintDevice* @_ZNK8QPainter6deviceEv( %struct.QPainter* %p )
184 to label %invcont104 unwind label %cleanup329 ; <%struct.QPaintDevice*> [#uses=1]
185 invcont104: ; preds = %invcont103
186 %tmp107 = invoke i32 @_ZNK12QPaintDevice11logicalDpiYEv( %struct.QPaintDevice* %tmp105 )
187 to label %invcont106 unwind label %cleanup329 ; [#uses=1]
188 invcont106: ; preds = %invcont104
189 %tmp108 = sitofp i32 %tmp107 to double ; [#uses=1]
190 %tmp109 = fmul double %tmp108, 0x3FE93264C993264C ; [#uses=1]
191 %tmp109.upgrd.17 = fptosi double %tmp109 to i32 ; [#uses=3]
192 %tmp.upgrd.18 = call %struct.QTextBlockGroup* @_ZNK13QTextDocument9rootFrameEv( %struct.QAbstractTextDocumentLayout* %tmp95 ) ; <%struct.QTextBlockGroup*> [#uses=1]
193 invoke void @_ZNK10QTextFrame11frameFormatEv( %struct.QTextBlockFormat* sret %fmt, %struct.QTextBlockGroup* %tmp.upgrd.18 )
194 to label %invcont111 unwind label %cleanup329
195 invcont111: ; preds = %invcont106
196 %tmp112 = sitofp i32 %tmp109.upgrd.17 to double ; [#uses=1]
197 invoke void @_ZN16QTextFrameFormat9setMarginEd( %struct.QTextBlockFormat* %fmt, double %tmp112 )
198 to label %invcont114 unwind label %cleanup192
199 invcont114: ; preds = %invcont111
200 %tmp116 = call %struct.QTextBlockGroup* @_ZNK13QTextDocument9rootFrameEv( %struct.QAbstractTextDocumentLayout* %tmp95 ) ; <%struct.QTextBlockGroup*> [#uses=1]
201 invoke void @_ZN10QTextFrame14setFrameFormatERK16QTextFrameFormat( %struct.QTextBlockGroup* %tmp116, %struct.QTextBlockFormat* %fmt )
202 to label %invcont117 unwind label %cleanup192
203 invcont117: ; preds = %invcont114
204 %tmp119 = invoke %struct.QPaintDevice* @_ZNK8QPainter6deviceEv( %struct.QPainter* %p )
205 to label %invcont118 unwind label %cleanup192 ; <%struct.QPaintDevice*> [#uses=1]
206 invcont118: ; preds = %invcont117
207 %tmp121 = invoke i32 @_ZNK12QPaintDevice6heightEv( %struct.QPaintDevice* %tmp119 )
208 to label %invcont120 unwind label %cleanup192 ; [#uses=1]
209 invcont120: ; preds = %invcont118
210 %tmp121.upgrd.19 = sitofp i32 %tmp121 to double ; [#uses=1]
211 %tmp123 = invoke %struct.QPaintDevice* @_ZNK8QPainter6deviceEv( %struct.QPainter* %p )
212 to label %invcont122 unwind label %cleanup192 ; <%struct.QPaintDevice*> [#uses=1]
213 invcont122: ; preds = %invcont120
214 %tmp125 = invoke i32 @_ZNK12QPaintDevice5widthEv( %struct.QPaintDevice* %tmp123 )
215 to label %invcont124 unwind label %cleanup192 ; [#uses=1]
216 invcont124: ; preds = %invcont122
217 %tmp125.upgrd.20 = sitofp i32 %tmp125 to double ; [#uses=1]
218 call void @_ZN6QRectFC1Edddd( %struct.QRectF* %tmp.upgrd.1, double 0.000000e+00, double 0.000000e+00, double %tmp125.upgrd.20, double %tmp121.upgrd.19 )
219 %tmp126 = getelementptr %struct.QRectF* %body, i32 0, i32 0 ; [#uses=1]
220 %tmp127 = getelementptr %struct.QRectF* %tmp.upgrd.1, i32 0, i32 0 ; [#uses=1]
221 %tmp128 = load double* %tmp127 ; [#uses=1]
222 store double %tmp128, double* %tmp126
223 %tmp129 = getelementptr %struct.QRectF* %body, i32 0, i32 1 ; [#uses=1]
224 %tmp130 = getelementptr %struct.QRectF* %tmp.upgrd.1, i32 0, i32 1 ; [#uses=1]
225 %tmp131 = load double* %tmp130 ; [#uses=1]
226 store double %tmp131, double* %tmp129
227 %tmp132 = getelementptr %struct.QRectF* %body, i32 0, i32 2 ; [#uses=1]
228 %tmp133 = getelementptr %struct.QRectF* %tmp.upgrd.1, i32 0, i32 2 ; [#uses=1]
229 %tmp134 = load double* %tmp133 ; [#uses=1]
230 store double %tmp134, double* %tmp132
231 %tmp135 = getelementptr %struct.QRectF* %body, i32 0, i32 3 ; [#uses=1]
232 %tmp136 = getelementptr %struct.QRectF* %tmp.upgrd.1, i32 0, i32 3 ; [#uses=1]
233 %tmp137 = load double* %tmp136 ; [#uses=1]
234 store double %tmp137, double* %tmp135
235 %tmp138 = call double @_ZNK6QRectF6heightEv( %struct.QRectF* %body ) ; [#uses=1]
236 %tmp139 = sitofp i32 %tmp109.upgrd.17 to double ; [#uses=1]
237 %tmp140 = fsub double %tmp138, %tmp139 ; [#uses=1]
238 %tmp142 = invoke %struct.QPaintDevice* @_ZNK8QPainter6deviceEv( %struct.QPainter* %p )
239 to label %invcont141 unwind label %cleanup192 ; <%struct.QPaintDevice*> [#uses=1]
240 invcont141: ; preds = %invcont124
241 invoke void @_ZNK13QTextDocument11defaultFontEv( %struct.QFont* sret %tmp.upgrd.3, %struct.QAbstractTextDocumentLayout* %tmp95 )
242 to label %invcont144 unwind label %cleanup192
243 invcont144: ; preds = %invcont141
244 invoke void @_ZN12QFontMetricsC1ERK5QFontP12QPaintDevice( %struct.QFontMetrics* %tmp.upgrd.2, %struct.QFont* %tmp.upgrd.3, %struct.QPaintDevice* %tmp142 )
245 to label %invcont146 unwind label %cleanup173
246 invcont146: ; preds = %invcont144
247 %tmp149 = invoke i32 @_ZNK12QFontMetrics6ascentEv( %struct.QFontMetrics* %tmp.upgrd.2 )
248 to label %invcont148 unwind label %cleanup168 ; [#uses=1]
249 invcont148: ; preds = %invcont146
250 %tmp149.upgrd.21 = sitofp i32 %tmp149 to double ; [#uses=1]
251 %tmp150 = fadd double %tmp140, %tmp149.upgrd.21 ; [#uses=1]
252 %tmp152 = invoke %struct.QPaintDevice* @_ZNK8QPainter6deviceEv( %struct.QPainter* %p )
253 to label %invcont151 unwind label %cleanup168 ; <%struct.QPaintDevice*> [#uses=1]
254 invcont151: ; preds = %invcont148
255 %tmp154 = invoke i32 @_ZNK12QPaintDevice11logicalDpiYEv( %struct.QPaintDevice* %tmp152 )
256 to label %invcont153 unwind label %cleanup168 ; [#uses=1]
257 invcont153: ; preds = %invcont151
258 %tmp155 = mul i32 %tmp154, 5 ; [#uses=1]
259 %tmp156 = sdiv i32 %tmp155, 72 ; [#uses=1]
260 %tmp156.upgrd.22 = sitofp i32 %tmp156 to double ; [#uses=1]
261 %tmp157 = fadd double %tmp150, %tmp156.upgrd.22 ; [#uses=1]
262 %tmp158 = call double @_ZNK6QRectF5widthEv( %struct.QRectF* %body ) ; [#uses=1]
263 %tmp159 = sitofp i32 %tmp109.upgrd.17 to double ; [#uses=1]
264 %tmp160 = fsub double %tmp158, %tmp159 ; [#uses=1]
265 call void @_ZN7QPointFC1Edd( %struct.QPointF* %tmp2, double %tmp160, double %tmp157 )
266 %tmp161 = getelementptr %struct.QPointF* %pageNumberPos, i32 0, i32 0 ; [#uses=1]
267 %tmp162 = getelementptr %struct.QPointF* %tmp2, i32 0, i32 0 ; [#uses=1]
268 %tmp163 = load double* %tmp162 ; [#uses=1]
269 store double %tmp163, double* %tmp161
270 %tmp164 = getelementptr %struct.QPointF* %pageNumberPos, i32 0, i32 1 ; [#uses=1]
271 %tmp165 = getelementptr %struct.QPointF* %tmp2, i32 0, i32 1 ; [#uses=1]
272 %tmp166 = load double* %tmp165 ; [#uses=1]
273 store double %tmp166, double* %tmp164
274 invoke void @_ZN12QFontMetricsD1Ev( %struct.QFontMetrics* %tmp.upgrd.2 )
275 to label %cleanup171 unwind label %cleanup173
276 cleanup168: ; preds = %invcont151, %invcont148, %invcont146
277 %val168 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
278 cleanup
279 invoke void @_ZN12QFontMetricsD1Ev( %struct.QFontMetrics* %tmp.upgrd.2 )
280 to label %cleanup173 unwind label %cleanup173
281 cleanup171: ; preds = %invcont153
282 invoke void @_ZN5QFontD1Ev( %struct.QFont* %tmp.upgrd.3 )
283 to label %finally170 unwind label %cleanup192
284 cleanup173: ; preds = %cleanup168, %cleanup168, %invcont153, %invcont144
285 %val173 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
286 cleanup
287 invoke void @_ZN5QFontD1Ev( %struct.QFont* %tmp.upgrd.3 )
288 to label %cleanup192 unwind label %cleanup192
289 finally170: ; preds = %cleanup171
290 invoke void @_ZNK13QTextDocument11defaultFontEv( %struct.QFont* sret %font, %struct.QAbstractTextDocumentLayout* %tmp95 )
291 to label %invcont177 unwind label %cleanup192
292 invcont177: ; preds = %finally170
293 invoke void @_ZN5QFont12setPointSizeEi( %struct.QFont* %font, i32 10 )
294 to label %invcont179 unwind label %cleanup187
295 invcont179: ; preds = %invcont177
296 invoke void @_ZN13QTextDocument14setDefaultFontERK5QFont( %struct.QAbstractTextDocumentLayout* %tmp95, %struct.QFont* %font )
297 to label %invcont181 unwind label %cleanup187
298 invcont181: ; preds = %invcont179
299 call void @_ZNK6QRectF4sizeEv( %struct.QPointF* sret %tmp3, %struct.QRectF* %body )
300 invoke void @_ZN13QTextDocument11setPageSizeERK6QSizeF( %struct.QAbstractTextDocumentLayout* %tmp95, %struct.QPointF* %tmp3 )
301 to label %cleanup185 unwind label %cleanup187
302 cleanup185: ; preds = %invcont181
303 invoke void @_ZN5QFontD1Ev( %struct.QFont* %font )
304 to label %cleanup190 unwind label %cleanup192
305 cleanup187: ; preds = %invcont181, %invcont179, %invcont177
306 %val187 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
307 cleanup
308 invoke void @_ZN5QFontD1Ev( %struct.QFont* %font )
309 to label %cleanup192 unwind label %cleanup192
310 cleanup190: ; preds = %cleanup185
311 invoke void @_ZN16QTextFrameFormatD1Ev( %struct.QTextBlockFormat* %fmt )
312 to label %cond_next194 unwind label %cleanup329
313 cleanup192: ; preds = %cleanup187, %cleanup187, %cleanup185, %finally170, %cleanup173, %cleanup173, %cleanup171, %invcont141, %invcont124, %invcont122, %invcont120, %invcont118, %invcont117, %invcont114, %invcont111
314 %val192 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
315 cleanup
316 invoke void @_ZN16QTextFrameFormatD1Ev( %struct.QTextBlockFormat* %fmt )
317 to label %cleanup329 unwind label %cleanup329
318 cond_next194: ; preds = %cleanup190, %invcont83
319 %clonedDoc.1 = phi %struct.QAbstractTextDocumentLayout* [ null, %invcont83 ], [ %tmp95, %cleanup190 ] ; <%struct.QAbstractTextDocumentLayout*> [#uses=3]
320 %doc.1 = phi %struct.QAbstractTextDocumentLayout* [ %this, %invcont83 ], [ %tmp95, %cleanup190 ] ; <%struct.QAbstractTextDocumentLayout*> [#uses=2]
321 %tmp197 = invoke i1 @_ZNK8QPrinter13collateCopiesEv( %struct.QPrinter* %printer )
322 to label %invcont196 unwind label %cleanup329 ; [#uses=1]
323 invcont196: ; preds = %cond_next194
324 br i1 %tmp197, label %cond_true200, label %cond_false204
325 cond_true200: ; preds = %invcont196
326 %tmp203 = invoke i32 @_ZNK8QPrinter9numCopiesEv( %struct.QPrinter* %printer )
327 to label %invcont202 unwind label %cleanup329 ; [#uses=1]
328 invcont202: ; preds = %cond_true200
329 br label %cond_next208
330 cond_false204: ; preds = %invcont196
331 %tmp207 = invoke i32 @_ZNK8QPrinter9numCopiesEv( %struct.QPrinter* %printer )
332 to label %invcont206 unwind label %cleanup329 ; [#uses=1]
333 invcont206: ; preds = %cond_false204
334 br label %cond_next208
335 cond_next208: ; preds = %invcont206, %invcont202
336 %pageCopies.0 = phi i32 [ %tmp203, %invcont202 ], [ 1, %invcont206 ] ; [#uses=2]
337 %docCopies.0 = phi i32 [ 1, %invcont202 ], [ %tmp207, %invcont206 ] ; [#uses=2]
338 %tmp211 = invoke i32 @_ZNK8QPrinter8fromPageEv( %struct.QPrinter* %printer )
339 to label %invcont210 unwind label %cleanup329 ; [#uses=3]
340 invcont210: ; preds = %cond_next208
341 %tmp214 = invoke i32 @_ZNK8QPrinter6toPageEv( %struct.QPrinter* %printer )
342 to label %invcont213 unwind label %cleanup329 ; [#uses=3]
343 invcont213: ; preds = %invcont210
344 %tmp216 = icmp eq i32 %tmp211, 0 ; [#uses=1]
345 br i1 %tmp216, label %cond_true217, label %cond_next225
346 cond_true217: ; preds = %invcont213
347 %tmp219 = icmp eq i32 %tmp214, 0 ; [#uses=1]
348 br i1 %tmp219, label %cond_true220, label %cond_next225
349 cond_true220: ; preds = %cond_true217
350 %tmp223 = invoke i32 @_ZNK13QTextDocument9pageCountEv( %struct.QAbstractTextDocumentLayout* %doc.1 )
351 to label %invcont222 unwind label %cleanup329 ; [#uses=1]
352 invcont222: ; preds = %cond_true220
353 br label %cond_next225
354 cond_next225: ; preds = %invcont222, %cond_true217, %invcont213
355 %toPage.1 = phi i32 [ %tmp223, %invcont222 ], [ %tmp214, %cond_true217 ], [ %tmp214, %invcont213 ] ; [#uses=2]
356 %fromPage.1 = phi i32 [ 1, %invcont222 ], [ %tmp211, %cond_true217 ], [ %tmp211, %invcont213 ] ; [#uses=2]
357 %tmp.page = invoke i32 @_ZNK8QPrinter9pageOrderEv( %struct.QPrinter* %printer )
358 to label %invcont227 unwind label %cleanup329 ; [#uses=1]
359 invcont227: ; preds = %cond_next225
360 %tmp228 = icmp eq i32 %tmp.page, 1 ; [#uses=1]
361 br i1 %tmp228, label %cond_true230, label %cond_next234
362 cond_true230: ; preds = %invcont227
363 br label %cond_next234
364 cond_next234: ; preds = %cond_true230, %invcont227
365 %ascending.1 = phi i1 [ false, %cond_true230 ], [ true, %invcont227 ] ; [#uses=1]
366 %toPage.2 = phi i32 [ %fromPage.1, %cond_true230 ], [ %toPage.1, %invcont227 ] ; [#uses=1]
367 %fromPage.2 = phi i32 [ %toPage.1, %cond_true230 ], [ %fromPage.1, %invcont227 ] ; [#uses=1]
368 br label %bb309
369 bb237: ; preds = %cond_true313, %cond_next293
370 %iftmp.410.4 = phi i1 [ %iftmp.410.5, %cond_true313 ], [ %iftmp.410.1, %cond_next293 ] ; [#uses=1]
371 %page.4 = phi i32 [ %fromPage.2, %cond_true313 ], [ %page.3, %cond_next293 ] ; [#uses=4]
372 br label %bb273
373 invcont240: ; preds = %cond_true277
374 %tmp242 = icmp eq i32 %tmp241, 2 ; [#uses=1]
375 br i1 %tmp242, label %bb252, label %cond_next244
376 cond_next244: ; preds = %invcont240
377 %tmp247 = invoke i32 @_ZNK8QPrinter12printerStateEv( %struct.QPrinter* %printer )
378 to label %invcont246 unwind label %cleanup329 ; [#uses=1]
379 invcont246: ; preds = %cond_next244
380 %tmp248 = icmp eq i32 %tmp247, 3 ; [#uses=1]
381 br i1 %tmp248, label %bb252, label %bb253
382 bb252: ; preds = %invcont246, %invcont240
383 br label %bb254
384 bb253: ; preds = %invcont246
385 br label %bb254
386 bb254: ; preds = %bb253, %bb252
387 %iftmp.410.0 = phi i1 [ true, %bb252 ], [ false, %bb253 ] ; [#uses=2]
388 br i1 %iftmp.410.0, label %UserCanceled, label %cond_next258
389 cond_next258: ; preds = %bb254
390 invoke fastcc void @_Z9printPageiP8QPainterPK13QTextDocumentRK6QRectFRK7QPointF( i32 %page.4, %struct.QPainter* %p, %struct.QAbstractTextDocumentLayout* %doc.1, %struct.QRectF* %body, %struct.QPointF* %pageNumberPos )
391 to label %invcont261 unwind label %cleanup329
392 invcont261: ; preds = %cond_next258
393 %tmp263 = add i32 %pageCopies.0, -1 ; [#uses=1]
394 %tmp265 = icmp sgt i32 %tmp263, %j.4 ; [#uses=1]
395 br i1 %tmp265, label %cond_true266, label %cond_next270
396 cond_true266: ; preds = %invcont261
397 %tmp269 = invoke i1 @_ZN8QPrinter7newPageEv( %struct.QPrinter* %printer )
398 to label %cond_next270 unwind label %cleanup329 ; [#uses=0]
399 cond_next270: ; preds = %cond_true266, %invcont261
400 %tmp272 = add i32 %j.4, 1 ; [#uses=1]
401 br label %bb273
402 bb273: ; preds = %cond_next270, %bb237
403 %iftmp.410.1 = phi i1 [ %iftmp.410.4, %bb237 ], [ %iftmp.410.0, %cond_next270 ] ; [#uses=2]
404 %j.4 = phi i32 [ 0, %bb237 ], [ %tmp272, %cond_next270 ] ; [#uses=3]
405 %tmp276 = icmp slt i32 %j.4, %pageCopies.0 ; [#uses=1]
406 br i1 %tmp276, label %cond_true277, label %bb280
407 cond_true277: ; preds = %bb273
408 %tmp241 = invoke i32 @_ZNK8QPrinter12printerStateEv( %struct.QPrinter* %printer )
409 to label %invcont240 unwind label %cleanup329 ; [#uses=1]
410 bb280: ; preds = %bb273
411 %tmp283 = icmp eq i32 %page.4, %toPage.2 ; [#uses=1]
412 br i1 %tmp283, label %bb297, label %cond_next285
413 cond_next285: ; preds = %bb280
414 br i1 %ascending.1, label %cond_true287, label %cond_false290
415 cond_true287: ; preds = %cond_next285
416 %tmp289 = add i32 %page.4, 1 ; [#uses=1]
417 br label %cond_next293
418 cond_false290: ; preds = %cond_next285
419 %tmp292 = add i32 %page.4, -1 ; [#uses=1]
420 br label %cond_next293
421 cond_next293: ; preds = %cond_false290, %cond_true287
422 %page.3 = phi i32 [ %tmp289, %cond_true287 ], [ %tmp292, %cond_false290 ] ; [#uses=1]
423 %tmp296 = invoke i1 @_ZN8QPrinter7newPageEv( %struct.QPrinter* %printer )
424 to label %bb237 unwind label %cleanup329 ; [#uses=0]
425 bb297: ; preds = %bb280
426 %tmp299 = add i32 %docCopies.0, -1 ; [#uses=1]
427 %tmp301 = icmp sgt i32 %tmp299, %i.1 ; [#uses=1]
428 br i1 %tmp301, label %cond_true302, label %cond_next306
429 cond_true302: ; preds = %bb297
430 %tmp305 = invoke i1 @_ZN8QPrinter7newPageEv( %struct.QPrinter* %printer )
431 to label %cond_next306 unwind label %cleanup329 ; [#uses=0]
432 cond_next306: ; preds = %cond_true302, %bb297
433 %tmp308 = add i32 %i.1, 1 ; [#uses=1]
434 br label %bb309
435 bb309: ; preds = %cond_next306, %cond_next234
436 %iftmp.410.5 = phi i1 [ undef, %cond_next234 ], [ %iftmp.410.1, %cond_next306 ] ; [#uses=1]
437 %i.1 = phi i32 [ 0, %cond_next234 ], [ %tmp308, %cond_next306 ] ; [#uses=3]
438 %tmp312 = icmp slt i32 %i.1, %docCopies.0 ; [#uses=1]
439 br i1 %tmp312, label %cond_true313, label %UserCanceled
440 cond_true313: ; preds = %bb309
441 br label %bb237
442 UserCanceled: ; preds = %bb309, %bb254
443 %tmp318 = icmp eq %struct.QAbstractTextDocumentLayout* %clonedDoc.1, null ; [#uses=1]
444 br i1 %tmp318, label %cleanup327, label %cond_true319
445 cond_true319: ; preds = %UserCanceled
446 %tmp.upgrd.23 = getelementptr %struct.QAbstractTextDocumentLayout* %clonedDoc.1, i32 0, i32 0, i32 0 ; [#uses=1]
447 %tmp.upgrd.24 = load i32 (...)*** %tmp.upgrd.23 ; [#uses=1]
448 %tmp322 = getelementptr i32 (...)** %tmp.upgrd.24, i32 4 ; [#uses=1]
449 %tmp.upgrd.25 = load i32 (...)** %tmp322 ; [#uses=1]
450 %tmp.upgrd.26 = bitcast i32 (...)* %tmp.upgrd.25 to void (%struct.QAbstractTextDocumentLayout*)* ; [#uses=1]
451 invoke void %tmp.upgrd.26( %struct.QAbstractTextDocumentLayout* %clonedDoc.1 )
452 to label %cleanup327 unwind label %cleanup329
453 cleanup327: ; preds = %cond_true319, %UserCanceled
454 call void @_ZN8QPainterD1Ev( %struct.QPainter* %p )
455 ret void
456 cleanup328: ; preds = %invcont
457 call void @_ZN8QPainterD1Ev( %struct.QPainter* %p )
458 ret void
459 cleanup329: ; preds = %cond_true319, %cond_true302, %cond_next293, %cond_true277, %cond_true266, %cond_next258, %cond_next244, %cond_next225, %cond_true220, %invcont210, %cond_next208, %cond_false204, %cond_true200, %cond_next194, %cleanup192, %cleanup192, %cleanup190, %invcont106, %invcont104, %invcont103, %invcont100, %invcont98, %invcont94, %cond_false, %invcont83, %invcont79, %invcont57, %invcont51, %invcont45, %cond_next42, %invcont37, %cond_true35, %invcont29, %invcont25, %cond_true24, %cond_next, %entry
460 %val = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
461 cleanup
462 call void @_ZN8QPainterD1Ev( %struct.QPainter* %p )
463 resume { i8*, i32 } %val
464 }
465
466 declare void @_ZN6QSizeFC1Edd(%struct.QPointF*, double, double)
467
468 declare i1 @_ZNK6QSizeF7isValidEv(%struct.QPointF*)
469
470 declare double @_ZNK6QSizeF5widthEv(%struct.QPointF*)
471
472 declare double @_ZNK6QSizeF6heightEv(%struct.QPointF*)
473
474 declare double* @_ZN6QSizeF6rwidthEv(%struct.QPointF*)
475
476 declare double* @_ZN6QSizeF7rheightEv(%struct.QPointF*)
477
478 declare %struct.QTextDocumentPrivate* @_ZNK13QTextDocument6d_funcEv(%struct.QAbstractTextDocumentLayout*)
479
480 declare void @_ZN7QPointFC1Ev(%struct.QPointF*)
481
482 declare void @_ZN7QPointFC1Edd(%struct.QPointF*, double, double)
483
484 declare void @_ZN16QTextFrameFormat9setMarginEd(%struct.QTextBlockFormat*, double)
485
486 declare void @_ZN6QRectFC1Edddd(%struct.QRectF*, double, double, double, double)
487
488 declare void @_ZN6QRectFC1ERK7QPointFRK6QSizeF(%struct.QRectF*, %struct.QPointF*, %struct.QPointF*)
489
490 declare double @_ZNK6QRectF5widthEv(%struct.QRectF*)
491
492 declare double @_ZNK6QRectF6heightEv(%struct.QRectF*)
493
494 declare void @_ZNK6QRectF4sizeEv(%struct.QPointF*, %struct.QRectF*)
495
496 declare void @_ZN16QTextFrameFormatD1Ev(%struct.QTextBlockFormat*)
497
498 declare void @_ZNK10QTextFrame11frameFormatEv(%struct.QTextBlockFormat*, %struct.QTextBlockGroup*)
499
500 declare void @_ZN10QTextFrame14setFrameFormatERK16QTextFrameFormat(%struct.QTextBlockGroup*, %struct.QTextBlockFormat*)
501
502 declare i32 @_ZNK12QPaintDevice5widthEv(%struct.QPaintDevice*)
503
504 declare i32 @_ZNK12QPaintDevice6heightEv(%struct.QPaintDevice*)
505
506 declare i32 @_ZNK12QPaintDevice11logicalDpiXEv(%struct.QPaintDevice*)
507
508 declare i32 @_ZNK12QPaintDevice11logicalDpiYEv(%struct.QPaintDevice*)
509
510 declare %struct.QAbstractTextDocumentLayout* @_ZNK13QTextDocument5cloneEP7QObject(%struct.QAbstractTextDocumentLayout*, %struct.QObject*)
511
512 declare void @_ZN5QFontD1Ev(%struct.QFont*)
513
514 declare %struct.QAbstractTextDocumentLayout* @_ZNK13QTextDocument14documentLayoutEv(%struct.QAbstractTextDocumentLayout*)
515
516 declare %struct.QTextBlockGroup* @_ZNK13QTextDocument9rootFrameEv(%struct.QAbstractTextDocumentLayout*)
517
518 declare i32 @_ZNK13QTextDocument9pageCountEv(%struct.QAbstractTextDocumentLayout*)
519
520 declare void @_ZNK13QTextDocument11defaultFontEv(%struct.QFont*, %struct.QAbstractTextDocumentLayout*)
521
522 declare void @_ZN13QTextDocument14setDefaultFontERK5QFont(%struct.QAbstractTextDocumentLayout*, %struct.QFont*)
523
524 declare void @_ZN13QTextDocument11setPageSizeERK6QSizeF(%struct.QAbstractTextDocumentLayout*, %struct.QPointF*)
525
526 declare void @_Z9printPageiP8QPainterPK13QTextDocumentRK6QRectFRK7QPointF(i32, %struct.QPainter*, %struct.QAbstractTextDocumentLayout*, %struct.QRectF*, %struct.QPointF*)
527
528 declare void @_ZN12QFontMetricsD1Ev(%struct.QFontMetrics*)
529
530 declare void @_ZN8QPainterC1EP12QPaintDevice(%struct.QPainter*, %struct.QPaintDevice*)
531
532 declare i1 @_ZNK8QPainter8isActiveEv(%struct.QPainter*)
533
534 declare i32 @_Z13qt_defaultDpiv()
535
536 declare %struct.QPaintDevice* @_ZNK27QAbstractTextDocumentLayout11paintDeviceEv(%struct.QAbstractTextDocumentLayout*)
537
538 declare void @_ZN8QPainter5scaleEdd(%struct.QPainter*, double, double)
539
540 declare %struct.QPaintDevice* @_ZNK8QPainter6deviceEv(%struct.QPainter*)
541
542 declare void @_ZN27QAbstractTextDocumentLayout14setPaintDeviceEP12QPaintDevice(%struct.QAbstractTextDocumentLayout*, %struct.QPaintDevice*)
543
544 declare void @_ZN12QFontMetricsC1ERK5QFontP12QPaintDevice(%struct.QFontMetrics*, %struct.QFont*, %struct.QPaintDevice*)
545
546 declare i32 @_ZNK12QFontMetrics6ascentEv(%struct.QFontMetrics*)
547
548 declare void @_ZN5QFont12setPointSizeEi(%struct.QFont*, i32)
549
550 declare i1 @_ZNK8QPrinter13collateCopiesEv(%struct.QPrinter*)
551
552 declare i32 @_ZNK8QPrinter9numCopiesEv(%struct.QPrinter*)
553
554 declare i32 @_ZNK8QPrinter8fromPageEv(%struct.QPrinter*)
555
556 declare i32 @_ZNK8QPrinter6toPageEv(%struct.QPrinter*)
557
558 declare i32 @_ZNK8QPrinter9pageOrderEv(%struct.QPrinter*)
559
560 declare i32 @_ZNK8QPrinter12printerStateEv(%struct.QPrinter*)
561
562 declare i1 @_ZN8QPrinter7newPageEv(%struct.QPrinter*)
563
564 declare void @_ZN8QPainterD1Ev(%struct.QPainter*)
565
566 declare i32 @__gxx_personality_v0(...)
+0
-569
test/Transforms/SimplifyCFG/2009-06-15-InvokeCrash.ll less more
None ; RUN: opt < %s -simplifycfg -disable-output
1 ; END.
2 %struct..4._102 = type { %struct.QVectorData* }
3 %struct..5._125 = type { %struct.QMapData* }
4 %struct.QAbstractTextDocumentLayout = type { %struct.QObject }
5 %struct.QBasicAtomic = type { i32 }
6 %struct.QFont = type { %struct.QFontPrivate*, i32 }
7 %struct.QFontMetrics = type { %struct.QFontPrivate* }
8 %struct.QFontPrivate = type opaque
9 %"struct.QFragmentMap" = type { %struct.QFragmentMapData }
10 %struct.QFragmentMapData = type { %"struct.QFragmentMapData::._154", i32 }
11 %"struct.QFragmentMapData::._154" = type { %"struct.QFragmentMapData::Header"* }
12 %"struct.QFragmentMapData::Header" = type { i32, i32, i32, i32, i32, i32, i32, i32 }
13 %"struct.QHash" = type { %"struct.QHash::._152" }
14 %"struct.QHash::._152" = type { %struct.QHashData* }
15 %struct.QHashData = type { %"struct.QHashData::Node"*, %"struct.QHashData::Node"**, %struct.QBasicAtomic, i32, i32, i16, i16, i32, i8 }
16 %"struct.QHashData::Node" = type { %"struct.QHashData::Node"*, i32 }
17 %"struct.QList::._92" = type { %struct.QListData }
18 %"struct.QList >" = type { %"struct.QList::._92" }
19 %struct.QListData = type { %"struct.QListData::Data"* }
20 %"struct.QListData::Data" = type { %struct.QBasicAtomic, i32, i32, i32, i8, [1 x i8*] }
21 %"struct.QMap" = type { %struct..5._125 }
22 %struct.QMapData = type { %"struct.QMapData::Node"*, [12 x %"struct.QMapData::Node"*], %struct.QBasicAtomic, i32, i32, i32, i8 }
23 %"struct.QMapData::Node" = type { %"struct.QMapData::Node"*, [1 x %"struct.QMapData::Node"*] }
24 %struct.QObject = type { i32 (...)**, %struct.QObjectData* }
25 %struct.QObjectData = type { i32 (...)**, %struct.QObject*, %struct.QObject*, %"struct.QList >", i8, [3 x i8], i32, i32 }
26 %struct.QObjectPrivate = type { %struct.QObjectData, i32, %struct.QObject*, %"struct.QList >", %"struct.QVector", %struct.QString }
27 %struct.QPaintDevice = type { i32 (...)**, i16 }
28 %struct.QPainter = type { %struct.QPainterPrivate* }
29 %struct.QPainterPrivate = type opaque
30 %struct.QPointF = type { double, double }
31 %struct.QPrinter = type { %struct.QPaintDevice, %struct.QPrinterPrivate* }
32 %struct.QPrinterPrivate = type opaque
33 %struct.QRectF = type { double, double, double, double }
34 %"struct.QSet" = type { %"struct.QHash" }
35 %"struct.QSharedDataPointer" = type { %struct.QTextFormatPrivate* }
36 %struct.QString = type { %"struct.QString::Data"* }
37 %"struct.QString::Data" = type { %struct.QBasicAtomic, i32, i32, i16*, i8, i8, [1 x i16] }
38 %struct.QTextBlockFormat = type { %struct.QTextFormat }
39 %struct.QTextBlockGroup = type { %struct.QAbstractTextDocumentLayout }
40 %struct.QTextDocumentConfig = type { %struct.QString }
41 %struct.QTextDocumentPrivate = type { %struct.QObjectPrivate, %struct.QString, %"struct.QVector", i1, i32, i32, i1, i32, i32, i32, i32, i1, %struct.QTextFormatCollection, %struct.QTextBlockGroup*, %struct.QAbstractTextDocumentLayout*, %"struct.QFragmentMap", %"struct.QFragmentMap", i32, %"struct.QList >", %"struct.QList >", %"struct.QMap", %"struct.QMap", %"struct.QMap", %struct.QTextDocumentConfig, i1, i1, %struct.QPointF }
42 %struct.QTextFormat = type { %"struct.QSharedDataPointer", i32 }
43 %struct.QTextFormatCollection = type { %"struct.QVector", %"struct.QVector", %"struct.QSet", %struct.QFont }
44 %struct.QTextFormatPrivate = type opaque
45 %"struct.QVector" = type { %struct..4._102 }
46 %struct.QVectorData = type { %struct.QBasicAtomic, i32, i32, i8 }
47
48 define void @_ZNK13QTextDocument5printEP8QPrinter(%struct.QAbstractTextDocumentLayout* %this, %struct.QPrinter* %printer) {
49 entry:
50 %tmp = alloca %struct.QPointF, align 16 ; <%struct.QPointF*> [#uses=2]
51 %tmp.upgrd.1 = alloca %struct.QRectF, align 16 ; <%struct.QRectF*> [#uses=5]
52 %tmp2 = alloca %struct.QPointF, align 16 ; <%struct.QPointF*> [#uses=3]
53 %tmp.upgrd.2 = alloca %struct.QFontMetrics, align 16 ; <%struct.QFontMetrics*> [#uses=4]
54 %tmp.upgrd.3 = alloca %struct.QFont, align 16 ; <%struct.QFont*> [#uses=4]
55 %tmp3 = alloca %struct.QPointF, align 16 ; <%struct.QPointF*> [#uses=2]
56 %p = alloca %struct.QPainter, align 16 ; <%struct.QPainter*> [#uses=14]
57 %body = alloca %struct.QRectF, align 16 ; <%struct.QRectF*> [#uses=9]
58 %foo = alloca double, align 8
59 %bar = alloca double, align 8
60 %pageNumberPos = alloca %struct.QPointF, align 16 ; <%struct.QPointF*> [#uses=4]
61 %scaledPageSize = alloca %struct.QPointF, align 16 ; <%struct.QPointF*> [#uses=6]
62 %printerPageSize = alloca %struct.QPointF, align 16 ; <%struct.QPointF*> [#uses=3]
63 %fmt = alloca %struct.QTextBlockFormat, align 16 ; <%struct.QTextBlockFormat*> [#uses=5]
64 %font = alloca %struct.QFont, align 16 ; <%struct.QFont*> [#uses=5]
65 %tmp.upgrd.4 = call %struct.QTextDocumentPrivate* @_ZNK13QTextDocument6d_funcEv( %struct.QAbstractTextDocumentLayout* %this ) ; <%struct.QTextDocumentPrivate*> [#uses=5]
66 %tmp.upgrd.5 = getelementptr %struct.QPrinter* %printer, i32 0, i32 0 ; <%struct.QPaintDevice*> [#uses=1]
67 call void @_ZN8QPainterC1EP12QPaintDevice( %struct.QPainter* %p, %struct.QPaintDevice* %tmp.upgrd.5 )
68 %tmp.upgrd.6 = invoke i1 @_ZNK8QPainter8isActiveEv( %struct.QPainter* %p )
69 to label %invcont unwind label %cleanup329 ; [#uses=1]
70 invcont: ; preds = %entry
71 br i1 %tmp.upgrd.6, label %cond_next, label %cleanup328
72 cond_next: ; preds = %invcont
73 %tmp8 = invoke %struct.QAbstractTextDocumentLayout* @_ZNK13QTextDocument14documentLayoutEv( %struct.QAbstractTextDocumentLayout* %this )
74 to label %invcont7 unwind label %cleanup329 ; <%struct.QAbstractTextDocumentLayout*> [#uses=0]
75 invcont7: ; preds = %cond_next
76 %tmp10 = getelementptr %struct.QTextDocumentPrivate* %tmp.upgrd.4, i32 0, i32 26 ; <%struct.QPointF*> [#uses=1]
77 call void @_ZN7QPointFC1Edd( %struct.QPointF* %tmp, double 0.000000e+00, double 0.000000e+00 )
78 call void @_ZN6QRectFC1ERK7QPointFRK6QSizeF( %struct.QRectF* %body, %struct.QPointF* %tmp, %struct.QPointF* %tmp10 )
79 call void @_ZN7QPointFC1Ev( %struct.QPointF* %pageNumberPos )
80 %tmp12 = getelementptr %struct.QTextDocumentPrivate* %tmp.upgrd.4, i32 0, i32 26 ; <%struct.QPointF*> [#uses=1]
81 %tmp13 = call i1 @_ZNK6QSizeF7isValidEv( %struct.QPointF* %tmp12 ) ; [#uses=1]
82 br i1 %tmp13, label %cond_next15, label %bb
83 cond_next15: ; preds = %invcont7
84 %tmp17 = getelementptr %struct.QTextDocumentPrivate* %tmp.upgrd.4, i32 0, i32 26 ; <%struct.QPointF*> [#uses=1]
85 %tmp.upgrd.7 = call double @_ZNK6QSizeF6heightEv( %struct.QPointF* %tmp17 ) ; [#uses=1]
86 %tmp18 = fcmp oeq double %tmp.upgrd.7, 0x41DFFFFFFFC00000 ; [#uses=1]
87 br i1 %tmp18, label %bb, label %cond_next20
88 cond_next20: ; preds = %cond_next15
89 br label %bb21
90 bb: ; preds = %cond_next15, %invcont7
91 br label %bb21
92 bb21: ; preds = %bb, %cond_next20
93 %iftmp.406.0 = phi i1 [ false, %bb ], [ true, %cond_next20 ] ; [#uses=1]
94 br i1 %iftmp.406.0, label %cond_true24, label %cond_false
95 cond_true24: ; preds = %bb21
96 %tmp.upgrd.8 = invoke i32 @_Z13qt_defaultDpiv( )
97 to label %invcont25 unwind label %cleanup329 ; [#uses=1]
98 invcont25: ; preds = %cond_true24
99 %tmp26 = sitofp i32 %tmp.upgrd.8 to double ; [#uses=2]
100 %tmp30 = invoke %struct.QAbstractTextDocumentLayout* @_ZNK13QTextDocument14documentLayoutEv( %struct.QAbstractTextDocumentLayout* %this )
101 to label %invcont29 unwind label %cleanup329 ; <%struct.QAbstractTextDocumentLayout*> [#uses=1]
102 invcont29: ; preds = %invcont25
103 %tmp32 = invoke %struct.QPaintDevice* @_ZNK27QAbstractTextDocumentLayout11paintDeviceEv( %struct.QAbstractTextDocumentLayout* %tmp30 )
104 to label %invcont31 unwind label %cleanup329 ; <%struct.QPaintDevice*> [#uses=3]
105 invcont31: ; preds = %invcont29
106 %tmp34 = icmp eq %struct.QPaintDevice* %tmp32, null ; [#uses=1]
107 br i1 %tmp34, label %cond_next42, label %cond_true35
108 cond_true35: ; preds = %invcont31
109 %tmp38 = invoke i32 @_ZNK12QPaintDevice11logicalDpiXEv( %struct.QPaintDevice* %tmp32 )
110 to label %invcont37 unwind label %cleanup329 ; [#uses=1]
111 invcont37: ; preds = %cond_true35
112 %tmp38.upgrd.9 = sitofp i32 %tmp38 to double ; [#uses=1]
113 %tmp41 = invoke i32 @_ZNK12QPaintDevice11logicalDpiYEv( %struct.QPaintDevice* %tmp32 )
114 to label %invcont40 unwind label %cleanup329 ; [#uses=1]
115 invcont40: ; preds = %invcont37
116 %tmp41.upgrd.10 = sitofp i32 %tmp41 to double ; [#uses=1]
117 br label %cond_next42
118 cond_next42: ; preds = %invcont40, %invcont31
119 %sourceDpiY.2 = phi double [ %tmp41.upgrd.10, %invcont40 ], [ %tmp26, %invcont31 ] ; [#uses=1]
120 %sourceDpiX.2 = phi double [ %tmp38.upgrd.9, %invcont40 ], [ %tmp26, %invcont31 ] ; [#uses=1]
121 %tmp44 = getelementptr %struct.QPrinter* %printer, i32 0, i32 0 ; <%struct.QPaintDevice*> [#uses=1]
122 %tmp46 = invoke i32 @_ZNK12QPaintDevice11logicalDpiXEv( %struct.QPaintDevice* %tmp44 )
123 to label %invcont45 unwind label %cleanup329 ; [#uses=1]
124 invcont45: ; preds = %cond_next42
125 %tmp46.upgrd.11 = sitofp i32 %tmp46 to double ; [#uses=1]
126 %tmp48 = fdiv double %tmp46.upgrd.11, %sourceDpiX.2 ; [#uses=2]
127 %tmp50 = getelementptr %struct.QPrinter* %printer, i32 0, i32 0 ; <%struct.QPaintDevice*> [#uses=1]
128 %tmp52 = invoke i32 @_ZNK12QPaintDevice11logicalDpiYEv( %struct.QPaintDevice* %tmp50 )
129 to label %invcont51 unwind label %cleanup329 ; [#uses=1]
130 invcont51: ; preds = %invcont45
131 %tmp52.upgrd.12 = sitofp i32 %tmp52 to double ; [#uses=1]
132 %tmp54 = fdiv double %tmp52.upgrd.12, %sourceDpiY.2 ; [#uses=2]
133 invoke void @_ZN8QPainter5scaleEdd( %struct.QPainter* %p, double %tmp48, double %tmp54 )
134 to label %invcont57 unwind label %cleanup329
135 invcont57: ; preds = %invcont51
136 %tmp.upgrd.13 = getelementptr %struct.QPointF* %scaledPageSize, i32 0, i32 0 ; [#uses=1]
137 %tmp60 = getelementptr %struct.QTextDocumentPrivate* %tmp.upgrd.4, i32 0, i32 26, i32 0 ; [#uses=1]
138 %tmp61 = load double* %tmp60 ; [#uses=1]
139 store double %tmp61, double* %tmp.upgrd.13
140 %tmp62 = getelementptr %struct.QPointF* %scaledPageSize, i32 0, i32 1 ; [#uses=1]
141 %tmp63 = getelementptr %struct.QTextDocumentPrivate* %tmp.upgrd.4, i32 0, i32 26, i32 1 ; [#uses=1]
142 %tmp64 = load double* %tmp63 ; [#uses=1]
143 store double %tmp64, double* %tmp62
144 %tmp65 = call double* @_ZN6QSizeF6rwidthEv( %struct.QPointF* %scaledPageSize ) ; [#uses=2]
145 %tmp67 = load double* %tmp65 ; [#uses=1]
146 %tmp69 = fmul double %tmp67, %tmp48 ; [#uses=1]
147 store double %tmp69, double* %tmp65
148 %tmp71 = call double* @_ZN6QSizeF7rheightEv( %struct.QPointF* %scaledPageSize ) ; [#uses=2]
149 %tmp73 = load double* %tmp71 ; [#uses=1]
150 %tmp75 = fmul double %tmp73, %tmp54 ; [#uses=1]
151 store double %tmp75, double* %tmp71
152 %tmp78 = getelementptr %struct.QPrinter* %printer, i32 0, i32 0 ; <%struct.QPaintDevice*> [#uses=1]
153 %tmp80 = invoke i32 @_ZNK12QPaintDevice6heightEv( %struct.QPaintDevice* %tmp78 )
154 to label %invcont79 unwind label %cleanup329 ; [#uses=1]
155 invcont79: ; preds = %invcont57
156 %tmp82 = getelementptr %struct.QPrinter* %printer, i32 0, i32 0 ; <%struct.QPaintDevice*> [#uses=1]
157 %tmp84 = invoke i32 @_ZNK12QPaintDevice5widthEv( %struct.QPaintDevice* %tmp82 )
158 to label %invcont83 unwind label %cleanup329 ; [#uses=1]
159 invcont83: ; preds = %invcont79
160 %tmp80.upgrd.14 = sitofp i32 %tmp80 to double ; [#uses=1]
161 %tmp84.upgrd.15 = sitofp i32 %tmp84 to double ; [#uses=1]
162 call void @_ZN6QSizeFC1Edd( %struct.QPointF* %printerPageSize, double %tmp84.upgrd.15, double %tmp80.upgrd.14 )
163 %tmp85 = call double @_ZNK6QSizeF6heightEv( %struct.QPointF* %printerPageSize ) ; [#uses=1]
164 %tmp86 = call double @_ZNK6QSizeF6heightEv( %struct.QPointF* %scaledPageSize ) ; [#uses=1]
165 %tmp87 = fdiv double %tmp85, %tmp86 ; [#uses=1]
166 %tmp88 = call double @_ZNK6QSizeF5widthEv( %struct.QPointF* %printerPageSize ) ; [#uses=1]
167 %tmp89 = call double @_ZNK6QSizeF5widthEv( %struct.QPointF* %scaledPageSize ) ; [#uses=1]
168 %tmp90 = fdiv double %tmp88, %tmp89 ; [#uses=1]
169 invoke void @_ZN8QPainter5scaleEdd( %struct.QPainter* %p, double %tmp90, double %tmp87 )
170 to label %cond_next194 unwind label %cleanup329
171 cond_false: ; preds = %bb21
172 %tmp.upgrd.16 = getelementptr %struct.QAbstractTextDocumentLayout* %this, i32 0, i32 0 ; <%struct.QObject*> [#uses=1]
173 %tmp95 = invoke %struct.QAbstractTextDocumentLayout* @_ZNK13QTextDocument5cloneEP7QObject( %struct.QAbstractTextDocumentLayout* %this, %struct.QObject* %tmp.upgrd.16 )
174 to label %invcont94 unwind label %cleanup329 ; <%struct.QAbstractTextDocumentLayout*> [#uses=9]
175 invcont94: ; preds = %cond_false
176 %tmp99 = invoke %struct.QAbstractTextDocumentLayout* @_ZNK13QTextDocument14documentLayoutEv( %struct.QAbstractTextDocumentLayout* %tmp95 )
177 to label %invcont98 unwind label %cleanup329 ; <%struct.QAbstractTextDocumentLayout*> [#uses=1]
178 invcont98: ; preds = %invcont94
179 %tmp101 = invoke %struct.QPaintDevice* @_ZNK8QPainter6deviceEv( %struct.QPainter* %p )
180 to label %invcont100 unwind label %cleanup329 ; <%struct.QPaintDevice*> [#uses=1]
181 invcont100: ; preds = %invcont98
182 invoke void @_ZN27QAbstractTextDocumentLayout14setPaintDeviceEP12QPaintDevice( %struct.QAbstractTextDocumentLayout* %tmp99, %struct.QPaintDevice* %tmp101 )
183 to label %invcont103 unwind label %cleanup329
184 invcont103: ; preds = %invcont100
185 %tmp105 = invoke %struct.QPaintDevice* @_ZNK8QPainter6deviceEv( %struct.QPainter* %p )
186 to label %invcont104 unwind label %cleanup329 ; <%struct.QPaintDevice*> [#uses=1]
187 invcont104: ; preds = %invcont103
188 %tmp107 = invoke i32 @_ZNK12QPaintDevice11logicalDpiYEv( %struct.QPaintDevice* %tmp105 )
189 to label %invcont106 unwind label %cleanup329 ; [#uses=1]
190 invcont106: ; preds = %invcont104
191 %tmp108 = sitofp i32 %tmp107 to double ; [#uses=1]
192 %tmp109 = fmul double %tmp108, 0x3FE93264C993264C ; [#uses=1]
193 %tmp109.upgrd.17 = fptosi double %tmp109 to i32 ; [#uses=3]
194 %tmp.upgrd.18 = call %struct.QTextBlockGroup* @_ZNK13QTextDocument9rootFrameEv( %struct.QAbstractTextDocumentLayout* %tmp95 ) ; <%struct.QTextBlockGroup*> [#uses=1]
195 invoke void @_ZNK10QTextFrame11frameFormatEv( %struct.QTextBlockFormat* sret %fmt, %struct.QTextBlockGroup* %tmp.upgrd.18 )
196 to label %invcont111 unwind label %cleanup329
197 invcont111: ; preds = %invcont106
198 %tmp112 = sitofp i32 %tmp109.upgrd.17 to double ; [#uses=1]
199 invoke void @_ZN16QTextFrameFormat9setMarginEd( %struct.QTextBlockFormat* %fmt, double %tmp112 )
200 to label %invcont114 unwind label %cleanup192
201 invcont114: ; preds = %invcont111
202 %tmp116 = call %struct.QTextBlockGroup* @_ZNK13QTextDocument9rootFrameEv( %struct.QAbstractTextDocumentLayout* %tmp95 ) ; <%struct.QTextBlockGroup*> [#uses=1]
203 invoke void @_ZN10QTextFrame14setFrameFormatERK16QTextFrameFormat( %struct.QTextBlockGroup* %tmp116, %struct.QTextBlockFormat* %fmt )
204 to label %invcont117 unwind label %cleanup192
205 invcont117: ; preds = %invcont114
206 %tmp119 = invoke %struct.QPaintDevice* @_ZNK8QPainter6deviceEv( %struct.QPainter* %p )
207 to label %invcont118 unwind label %cleanup192 ; <%struct.QPaintDevice*> [#uses=1]
208 invcont118: ; preds = %invcont117
209 %tmp121 = invoke i32 @_ZNK12QPaintDevice6heightEv( %struct.QPaintDevice* %tmp119 )
210 to label %invcont120 unwind label %cleanup192 ; [#uses=1]
211 invcont120: ; preds = %invcont118
212 %tmp121.upgrd.19 = sitofp i32 %tmp121 to double ; [#uses=1]
213 %tmp123 = invoke %struct.QPaintDevice* @_ZNK8QPainter6deviceEv( %struct.QPainter* %p )
214 to label %invcont122 unwind label %cleanup192 ; <%struct.QPaintDevice*> [#uses=1]
215 invcont122: ; preds = %invcont120
216 %tmp125 = invoke i32 @_ZNK12QPaintDevice5widthEv( %struct.QPaintDevice* %tmp123 )
217 to label %invcont124 unwind label %cleanup192 ; [#uses=1]
218 invcont124: ; preds = %invcont122
219 %tmp125.upgrd.20 = sitofp i32 %tmp125 to double ; [#uses=1]
220 call void @_ZN6QRectFC1Edddd( %struct.QRectF* %tmp.upgrd.1, double 0.000000e+00, double 0.000000e+00, double %tmp125.upgrd.20, double %tmp121.upgrd.19 )
221 %tmp126 = getelementptr %struct.QRectF* %body, i32 0, i32 0 ; [#uses=1]
222 %tmp127 = getelementptr %struct.QRectF* %tmp.upgrd.1, i32 0, i32 0 ; [#uses=1]
223 %tmp128 = load double* %tmp127 ; [#uses=1]
224 store double %tmp128, double* %tmp126
225 %tmp129 = getelementptr %struct.QRectF* %body, i32 0, i32 1 ; [#uses=1]
226 %tmp130 = getelementptr %struct.QRectF* %tmp.upgrd.1, i32 0, i32 1 ; [#uses=1]
227 %tmp131 = load double* %tmp130 ; [#uses=1]
228 store double %tmp131, double* %tmp129
229 %tmp132 = getelementptr %struct.QRectF* %body, i32 0, i32 2 ; [#uses=1]
230 %tmp133 = getelementptr %struct.QRectF* %tmp.upgrd.1, i32 0, i32 2 ; [#uses=1]
231 %tmp134 = load double* %tmp133 ; [#uses=1]
232 store double %tmp134, double* %tmp132
233 %tmp135 = getelementptr %struct.QRectF* %body, i32 0, i32 3 ; [#uses=1]
234 %tmp136 = getelementptr %struct.QRectF* %tmp.upgrd.1, i32 0, i32 3 ; [#uses=1]
235 %tmp137 = load double* %tmp136 ; [#uses=1]
236 store double %tmp137, double* %tmp135
237 %tmp138 = call double @_ZNK6QRectF6heightEv( %struct.QRectF* %body ) ; [#uses=1]
238 %tmp139 = sitofp i32 %tmp109.upgrd.17 to double ; [#uses=1]
239 %tmp140 = fsub double %tmp138, %tmp139 ; [#uses=1]
240 %tmp142 = invoke %struct.QPaintDevice* @_ZNK8QPainter6deviceEv( %struct.QPainter* %p )
241 to label %invcont141 unwind label %cleanup192 ; <%struct.QPaintDevice*> [#uses=1]
242 invcont141: ; preds = %invcont124
243 invoke void @_ZNK13QTextDocument11defaultFontEv( %struct.QFont* sret %tmp.upgrd.3, %struct.QAbstractTextDocumentLayout* %tmp95 )
244 to label %invcont144 unwind label %cleanup192
245 invcont144: ; preds = %invcont141
246 invoke void @_ZN12QFontMetricsC1ERK5QFontP12QPaintDevice( %struct.QFontMetrics* %tmp.upgrd.2, %struct.QFont* %tmp.upgrd.3, %struct.QPaintDevice* %tmp142 )
247 to label %invcont146 unwind label %cleanup173
248 invcont146: ; preds = %invcont144
249 %tmp149 = invoke i32 @_ZNK12QFontMetrics6ascentEv( %struct.QFontMetrics* %tmp.upgrd.2 )
250 to label %invcont148 unwind label %cleanup168 ; [#uses=1]
251 invcont148: ; preds = %invcont146
252 %tmp149.upgrd.21 = sitofp i32 %tmp149 to double ; [#uses=1]
253 %tmp150 = fadd double %tmp140, %tmp149.upgrd.21 ; [#uses=1]
254 %tmp152 = invoke %struct.QPaintDevice* @_ZNK8QPainter6deviceEv( %struct.QPainter* %p )
255 to label %invcont151 unwind label %cleanup168 ; <%struct.QPaintDevice*> [#uses=1]
256 invcont151: ; preds = %invcont148
257 %tmp154 = invoke i32 @_ZNK12QPaintDevice11logicalDpiYEv( %struct.QPaintDevice* %tmp152 )
258 to label %invcont153 unwind label %cleanup168 ; [#uses=1]
259 invcont153: ; preds = %invcont151
260 %tmp155 = mul i32 %tmp154, 5 ; [#uses=1]
261 %tmp156 = sdiv i32 %tmp155, 72 ; [#uses=1]
262 %tmp156.upgrd.22 = sitofp i32 %tmp156 to double ; [#uses=1]
263 %tmp157 = fadd double %tmp150, %tmp156.upgrd.22 ; [#uses=1]
264 %tmp158 = call double @_ZNK6QRectF5widthEv( %struct.QRectF* %body ) ; [#uses=1]
265 %tmp159 = sitofp i32 %tmp109.upgrd.17 to double ; [#uses=1]
266 %tmp160 = fsub double %tmp158, %tmp159 ; [#uses=1]
267 call void @_ZN7QPointFC1Edd( %struct.QPointF* %tmp2, double %tmp160, double %tmp157 )
268 %tmp161 = getelementptr %struct.QPointF* %pageNumberPos, i32 0, i32 0 ; [#uses=1]
269 %tmp162 = getelementptr %struct.QPointF* %tmp2, i32 0, i32 0 ; [#uses=1]
270 %tmp163 = load double* %tmp162 ; [#uses=1]
271 store double %tmp163, double* %tmp161
272 %tmp164 = getelementptr %struct.QPointF* %pageNumberPos, i32 0, i32 1 ; [#uses=1]
273 %tmp165 = getelementptr %struct.QPointF* %tmp2, i32 0, i32 1 ; [#uses=1]
274 %tmp166 = load double* %tmp165 ; [#uses=1]
275 store double %tmp166, double* %tmp164
276 invoke void @_ZN12QFontMetricsD1Ev( %struct.QFontMetrics* %tmp.upgrd.2 )
277 to label %cleanup171 unwind label %cleanup173
278 cleanup168: ; preds = %invcont151, %invcont148, %invcont146
279 %val168 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
280 cleanup
281 invoke void @_ZN12QFontMetricsD1Ev( %struct.QFontMetrics* %tmp.upgrd.2 )
282 to label %cleanup173 unwind label %cleanup173
283 cleanup171: ; preds = %invcont153
284 invoke void @_ZN5QFontD1Ev( %struct.QFont* %tmp.upgrd.3 )
285 to label %finally170 unwind label %cleanup192
286 cleanup173: ; preds = %cleanup168, %cleanup168, %invcont153, %invcont144
287 %val173 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
288 cleanup
289 invoke void @_ZN5QFontD1Ev( %struct.QFont* %tmp.upgrd.3 )
290 to label %cleanup192 unwind label %cleanup192
291 finally170: ; preds = %cleanup171
292 invoke void @_ZNK13QTextDocument11defaultFontEv( %struct.QFont* sret %font, %struct.QAbstractTextDocumentLayout* %tmp95 )
293 to label %invcont177 unwind label %cleanup192
294 invcont177: ; preds = %finally170
295 invoke void @_ZN5QFont12setPointSizeEi( %struct.QFont* %font, i32 10 )
296 to label %invcont179 unwind label %cleanup187
297 invcont179: ; preds = %invcont177
298 invoke void @_ZN13QTextDocument14setDefaultFontERK5QFont( %struct.QAbstractTextDocumentLayout* %tmp95, %struct.QFont* %font )
299 to label %invcont181 unwind label %cleanup187
300 invcont181: ; preds = %invcont179
301 call void @_ZNK6QRectF4sizeEv( %struct.QPointF* sret %tmp3, %struct.QRectF* %body )
302 invoke void @_ZN13QTextDocument11setPageSizeERK6QSizeF( %struct.QAbstractTextDocumentLayout* %tmp95, %struct.QPointF* %tmp3 )
303 to label %cleanup185 unwind label %cleanup187
304 cleanup185: ; preds = %invcont181
305 invoke void @_ZN5QFontD1Ev( %struct.QFont* %font )
306 to label %cleanup190 unwind label %cleanup192
307 cleanup187: ; preds = %invcont181, %invcont179, %invcont177
308 %val187 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
309 cleanup
310 invoke void @_ZN5QFontD1Ev( %struct.QFont* %font )
311 to label %cleanup192 unwind label %cleanup192
312 cleanup190: ; preds = %cleanup185
313 invoke void @_ZN16QTextFrameFormatD1Ev( %struct.QTextBlockFormat* %fmt )
314 to label %cond_next194 unwind label %cleanup329
315 cleanup192: ; preds = %cleanup187, %cleanup187, %cleanup185, %finally170, %cleanup173, %cleanup173, %cleanup171, %invcont141, %invcont124, %invcont122, %invcont120, %invcont118, %invcont117, %invcont114, %invcont111
316 %val192 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
317 cleanup
318 invoke void @_ZN16QTextFrameFormatD1Ev( %struct.QTextBlockFormat* %fmt )
319 to label %cleanup329 unwind label %cleanup329
320 cond_next194: ; preds = %cleanup190, %invcont83
321 %clonedDoc.1 = phi %struct.QAbstractTextDocumentLayout* [ null, %invcont83 ], [ %tmp95, %cleanup190 ] ; <%struct.QAbstractTextDocumentLayout*> [#uses=3]
322 %doc.1 = phi %struct.QAbstractTextDocumentLayout* [ %this, %invcont83 ], [ %tmp95, %cleanup190 ] ; <%struct.QAbstractTextDocumentLayout*> [#uses=2]
323 %tmp197 = invoke i1 @_ZNK8QPrinter13collateCopiesEv( %struct.QPrinter* %printer )
324 to label %invcont196 unwind label %cleanup329 ; [#uses=1]
325 invcont196: ; preds = %cond_next194
326 br i1 %tmp197, label %cond_true200, label %cond_false204
327 cond_true200: ; preds = %invcont196
328 %tmp2000 = load double* %foo
329 store double %tmp2000, double* %bar
330 %tmp203 = invoke i32 @_ZNK8QPrinter9numCopiesEv( %struct.QPrinter* %printer )
331 to label %cond_next208 unwind label %cleanup329 ; [#uses=1]
332 cond_false204: ; preds = %invcont196
333 %tmp2001 = load double* %foo
334 store double %tmp2001, double* %bar
335 %tmp207 = invoke i32 @_ZNK8QPrinter9numCopiesEv( %struct.QPrinter* %printer )
336 to label %cond_next208 unwind label %cleanup329 ; [#uses=1]
337 cond_next208: ; preds = %invcont206, %invcont202
338 %pageCopies.0 = phi i32 [ %tmp203, %cond_true200 ], [ 1, %cond_false204 ] ; [#uses=2]
339 %docCopies.0 = phi i32 [ 1, %cond_true200 ], [ %tmp207, %cond_false204 ] ; [#uses=2]
340 %tmp211 = invoke i32 @_ZNK8QPrinter8fromPageEv( %struct.QPrinter* %printer )
341 to label %invcont210 unwind label %cleanup329 ; [#uses=3]
342 invcont210: ; preds = %cond_next208
343 %tmp214 = invoke i32 @_ZNK8QPrinter6toPageEv( %struct.QPrinter* %printer )
344 to label %invcont213 unwind label %cleanup329 ; [#uses=3]
345 invcont213: ; preds = %invcont210
346 %tmp216 = icmp eq i32 %tmp211, 0 ; [#uses=1]
347 br i1 %tmp216, label %cond_true217, label %cond_next225
348 cond_true217: ; preds = %invcont213
349 %tmp219 = icmp eq i32 %tmp214, 0 ; [#uses=1]
350 br i1 %tmp219, label %cond_true220, label %cond_next225
351 cond_true220: ; preds = %cond_true217
352 %tmp223 = invoke i32 @_ZNK13QTextDocument9pageCountEv( %struct.QAbstractTextDocumentLayout* %doc.1 )
353 to label %invcont222 unwind label %cleanup329 ; [#uses=1]
354 invcont222: ; preds = %cond_true220
355 br label %cond_next225
356 cond_next225: ; preds = %invcont222, %cond_true217, %invcont213
357 %toPage.1 = phi i32 [ %tmp223, %invcont222 ], [ %tmp214, %cond_true217 ], [ %tmp214, %invcont213 ] ; [#uses=2]
358 %fromPage.1 = phi i32 [ 1, %invcont222 ], [ %tmp211, %cond_true217 ], [ %tmp211, %invcont213 ] ; [#uses=2]
359 %tmp.page = invoke i32 @_ZNK8QPrinter9pageOrderEv( %struct.QPrinter* %printer )
360 to label %invcont227 unwind label %cleanup329 ; [#uses=1]
361 invcont227: ; preds = %cond_next225
362 %tmp228 = icmp eq i32 %tmp.page, 1 ; [#uses=1]
363 br i1 %tmp228, label %cond_true230, label %cond_next234
364 cond_true230: ; preds = %invcont227
365 br label %cond_next234
366 cond_next234: ; preds = %cond_true230, %invcont227
367 %ascending.1 = phi i1 [ false, %cond_true230 ], [ true, %invcont227 ] ; [#uses=1]
368 %toPage.2 = phi i32 [ %fromPage.1, %cond_true230 ], [ %toPage.1, %invcont227 ] ; [#uses=1]
369 %fromPage.2 = phi i32 [ %toPage.1, %cond_true230 ], [ %fromPage.1, %invcont227 ] ; [#uses=1]
370 br label %bb309
371 bb237: ; preds = %cond_true313, %cond_next293
372 %iftmp.410.4 = phi i1 [ %iftmp.410.5, %cond_true313 ], [ %iftmp.410.1, %cond_next293 ] ; [#uses=1]
373 %page.4 = phi i32 [ %fromPage.2, %cond_true313 ], [ %page.3, %cond_next293 ] ; [#uses=4]
374 br label %bb273
375 invcont240: ; preds = %cond_true277
376 %tmp242 = icmp eq i32 %tmp241, 2 ; [#uses=1]
377 br i1 %tmp242, label %bb252, label %cond_next244
378 cond_next244: ; preds = %invcont240
379 %tmp247 = invoke i32 @_ZNK8QPrinter12printerStateEv( %struct.QPrinter* %printer )
380 to label %invcont246 unwind label %cleanup329 ; [#uses=1]
381 invcont246: ; preds = %cond_next244
382 %tmp248 = icmp eq i32 %tmp247, 3 ; [#uses=1]
383 br i1 %tmp248, label %bb252, label %bb253
384 bb252: ; preds = %invcont246, %invcont240
385 br label %bb254
386 bb253: ; preds = %invcont246
387 br label %bb254
388 bb254: ; preds = %bb253, %bb252
389 %iftmp.410.0 = phi i1 [ true, %bb252 ], [ false, %bb253 ] ; [#uses=2]
390 br i1 %iftmp.410.0, label %UserCanceled, label %cond_next258
391 cond_next258: ; preds = %bb254
392 invoke fastcc void @_Z9printPageiP8QPainterPK13QTextDocumentRK6QRectFRK7QPointF( i32 %page.4, %struct.QPainter* %p, %struct.QAbstractTextDocumentLayout* %doc.1, %struct.QRectF* %body, %struct.QPointF* %pageNumberPos )
393 to label %invcont261 unwind label %cleanup329
394 invcont261: ; preds = %cond_next258
395 %tmp263 = add i32 %pageCopies.0, -1 ; [#uses=1]
396 %tmp265 = icmp sgt i32 %tmp263, %j.4 ; [#uses=1]
397 br i1 %tmp265, label %cond_true266, label %cond_next270
398 cond_true266: ; preds = %invcont261
399 %tmp269 = invoke i1 @_ZN8QPrinter7newPageEv( %struct.QPrinter* %printer )
400 to label %cond_next270 unwind label %cleanup329 ; [#uses=0]
401 cond_next270: ; preds = %cond_true266, %invcont261
402 %tmp272 = add i32 %j.4, 1 ; [#uses=1]
403 br label %bb273
404 bb273: ; preds = %cond_next270, %bb237
405 %iftmp.410.1 = phi i1 [ %iftmp.410.4, %bb237 ], [ %iftmp.410.0, %cond_next270 ] ; [#uses=2]
406 %j.4 = phi i32 [ 0, %bb237 ], [ %tmp272, %cond_next270 ] ; [#uses=3]
407 %tmp276 = icmp slt i32 %j.4, %pageCopies.0 ; [#uses=1]
408 br i1 %tmp276, label %cond_true277, label %bb280
409 cond_true277: ; preds = %bb273
410 %tmp241 = invoke i32 @_ZNK8QPrinter12printerStateEv( %struct.QPrinter* %printer )
411 to label %invcont240 unwind label %cleanup329 ; [#uses=1]
412 bb280: ; preds = %bb273
413 %tmp283 = icmp eq i32 %page.4, %toPage.2 ; [#uses=1]
414 br i1 %tmp283, label %bb297, label %cond_next285
415 cond_next285: ; preds = %bb280
416 br i1 %ascending.1, label %cond_true287, label %cond_false290
417 cond_true287: ; preds = %cond_next285
418 %tmp289 = add i32 %page.4, 1 ; [#uses=1]
419 br label %cond_next293
420 cond_false290: ; preds = %cond_next285
421 %tmp292 = add i32 %page.4, -1 ; [#uses=1]
422 br label %cond_next293
423 cond_next293: ; preds = %cond_false290, %cond_true287
424 %page.3 = phi i32 [ %tmp289, %cond_true287 ], [ %tmp292, %cond_false290 ] ; [#uses=1]
425 %tmp296 = invoke i1 @_ZN8QPrinter7newPageEv( %struct.QPrinter* %printer )
426 to label %bb237 unwind label %cleanup329 ; [#uses=0]
427 bb297: ; preds = %bb280
428 %tmp299 = add i32 %docCopies.0, -1 ; [#uses=1]
429 %tmp301 = icmp sgt i32 %tmp299, %i.1 ; [#uses=1]
430 br i1 %tmp301, label %cond_true302, label %cond_next306
431 cond_true302: ; preds = %bb297
432 %tmp305 = invoke i1 @_ZN8QPrinter7newPageEv( %struct.QPrinter* %printer )
433 to label %cond_next306 unwind label %cleanup329 ; [#uses=0]
434 cond_next306: ; preds = %cond_true302, %bb297
435 %tmp308 = add i32 %i.1, 1 ; [#uses=1]
436 br label %bb309
437 bb309: ; preds = %cond_next306, %cond_next234
438 %iftmp.410.5 = phi i1 [ undef, %cond_next234 ], [ %iftmp.410.1, %cond_next306 ] ; [#uses=1]
439 %i.1 = phi i32 [ 0, %cond_next234 ], [ %tmp308, %cond_next306 ] ; [#uses=3]
440 %tmp312 = icmp slt i32 %i.1, %docCopies.0 ; [#uses=1]
441 br i1 %tmp312, label %cond_true313, label %UserCanceled
442 cond_true313: ; preds = %bb309
443 br label %bb237
444 UserCanceled: ; preds = %bb309, %bb254
445 %tmp318 = icmp eq %struct.QAbstractTextDocumentLayout* %clonedDoc.1, null ; [#uses=1]
446 br i1 %tmp318, label %cleanup327, label %cond_true319
447 cond_true319: ; preds = %UserCanceled
448 %tmp.upgrd.23 = getelementptr %struct.QAbstractTextDocumentLayout* %clonedDoc.1, i32 0, i32 0, i32 0 ; [#uses=1]
449 %tmp.upgrd.24 = load i32 (...)*** %tmp.upgrd.23 ; [#uses=1]
450 %tmp322 = getelementptr i32 (...)** %tmp.upgrd.24, i32 4 ; [#uses=1]
451 %tmp.upgrd.25 = load i32 (...)** %tmp322 ; [#uses=1]
452 %tmp.upgrd.26 = bitcast i32 (...)* %tmp.upgrd.25 to void (%struct.QAbstractTextDocumentLayout*)* ; [#uses=1]
453 invoke void %tmp.upgrd.26( %struct.QAbstractTextDocumentLayout* %clonedDoc.1 )
454 to label %cleanup327 unwind label %cleanup329
455 cleanup327: ; preds = %cond_true319, %UserCanceled
456 call void @_ZN8QPainterD1Ev( %struct.QPainter* %p )
457 ret void
458 cleanup328: ; preds = %invcont
459 call void @_ZN8QPainterD1Ev( %struct.QPainter* %p )
460 ret void
461 cleanup329: ; preds = %cond_true319, %cond_true302, %cond_next293, %cond_true277, %cond_true266, %cond_next258, %cond_next244, %cond_next225, %cond_true220, %invcont210, %cond_next208, %cond_false204, %cond_true200, %cond_next194, %cleanup192, %cleanup192, %cleanup190, %invcont106, %invcont104, %invcont103, %invcont100, %invcont98, %invcont94, %cond_false, %invcont83, %invcont79, %invcont57, %invcont51, %invcont45, %cond_next42, %invcont37, %cond_true35, %invcont29, %invcont25, %cond_true24, %cond_next, %entry
462 %val329 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
463 cleanup
464 call void @_ZN8QPainterD1Ev( %struct.QPainter* %p )
465 resume { i8*, i32 } %val329
466 }
467
468 declare void @_ZN6QSizeFC1Edd(%struct.QPointF*, double, double)
469
470 declare i1 @_ZNK6QSizeF7isValidEv(%struct.QPointF*)
471
472 declare double @_ZNK6QSizeF5widthEv(%struct.QPointF*)
473
474 declare double @_ZNK6QSizeF6heightEv(%struct.QPointF*)
475
476 declare double* @_ZN6QSizeF6rwidthEv(%struct.QPointF*)
477
478 declare double* @_ZN6QSizeF7rheightEv(%struct.QPointF*)
479
480 declare %struct.QTextDocumentPrivate* @_ZNK13QTextDocument6d_funcEv(%struct.QAbstractTextDocumentLayout*)
481
482 declare void @_ZN7QPointFC1Ev(%struct.QPointF*)
483
484 declare void @_ZN7QPointFC1Edd(%struct.QPointF*, double, double)
485
486 declare void @_ZN16QTextFrameFormat9setMarginEd(%struct.QTextBlockFormat*, double)
487
488 declare void @_ZN6QRectFC1Edddd(%struct.QRectF*, double, double, double, double)
489
490 declare void @_ZN6QRectFC1ERK7QPointFRK6QSizeF(%struct.QRectF*, %struct.QPointF*, %struct.QPointF*)
491
492 declare double @_ZNK6QRectF5widthEv(%struct.QRectF*)
493
494 declare double @_ZNK6QRectF6heightEv(%struct.QRectF*)
495
496 declare void @_ZNK6QRectF4sizeEv(%struct.QPointF*, %struct.QRectF*)
497
498 declare void @_ZN16QTextFrameFormatD1Ev(%struct.QTextBlockFormat*)
499
500 declare void @_ZNK10QTextFrame11frameFormatEv(%struct.QTextBlockFormat*, %struct.QTextBlockGroup*)
501
502 declare void @_ZN10QTextFrame14setFrameFormatERK16QTextFrameFormat(%struct.QTextBlockGroup*, %struct.QTextBlockFormat*)
503
504 declare i32 @_ZNK12QPaintDevice5widthEv(%struct.QPaintDevice*)
505
506 declare i32 @_ZNK12QPaintDevice6heightEv(%struct.QPaintDevice*)
507
508 declare i32 @_ZNK12QPaintDevice11logicalDpiXEv(%struct.QPaintDevice*)
509
510 declare i32 @_ZNK12QPaintDevice11logicalDpiYEv(%struct.QPaintDevice*)
511
512 declare %struct.QAbstractTextDocumentLayout* @_ZNK13QTextDocument5cloneEP7QObject(%struct.QAbstractTextDocumentLayout*, %struct.QObject*)
513
514 declare void @_ZN5QFontD1Ev(%struct.QFont*)
515
516 declare %struct.QAbstractTextDocumentLayout* @_ZNK13QTextDocument14documentLayoutEv(%struct.QAbstractTextDocumentLayout*)
517
518 declare %struct.QTextBlockGroup* @_ZNK13QTextDocument9rootFrameEv(%struct.QAbstractTextDocumentLayout*)
519
520 declare i32 @_ZNK13QTextDocument9pageCountEv(%struct.QAbstractTextDocumentLayout*)
521
522 declare void @_ZNK13QTextDocument11defaultFontEv(%struct.QFont*, %struct.QAbstractTextDocumentLayout*)
523
524 declare void @_ZN13QTextDocument14setDefaultFontERK5QFont(%struct.QAbstractTextDocumentLayout*, %struct.QFont*)
525
526 declare void @_ZN13QTextDocument11setPageSizeERK6QSizeF(%struct.QAbstractTextDocumentLayout*, %struct.QPointF*)
527
528 declare void @_Z9printPageiP8QPainterPK13QTextDocumentRK6QRectFRK7QPointF(i32, %struct.QPainter*, %struct.QAbstractTextDocumentLayout*, %struct.QRectF*, %struct.QPointF*)
529
530 declare void @_ZN12QFontMetricsD1Ev(%struct.QFontMetrics*)
531
532 declare void @_ZN8QPainterC1EP12QPaintDevice(%struct.QPainter*, %struct.QPaintDevice*)
533
534 declare i1 @_ZNK8QPainter8isActiveEv(%struct.QPainter*)
535
536 declare i32 @_Z13qt_defaultDpiv()
537
538 declare %struct.QPaintDevice* @_ZNK27QAbstractTextDocumentLayout11paintDeviceEv(%struct.QAbstractTextDocumentLayout*)
539
540 declare void @_ZN8QPainter5scaleEdd(%struct.QPainter*, double, double)
541
542 declare %struct.QPaintDevice* @_ZNK8QPainter6deviceEv(%struct.QPainter*)
543
544 declare void @_ZN27QAbstractTextDocumentLayout14setPaintDeviceEP12QPaintDevice(%struct.QAbstractTextDocumentLayout*, %struct.QPaintDevice*)
545
546 declare void @_ZN12QFontMetricsC1ERK5QFontP12QPaintDevice(%struct.QFontMetrics*, %struct.QFont*, %struct.QPaintDevice*)
547
548 declare i32 @_ZNK12QFontMetrics6ascentEv(%struct.QFontMetrics*)
549
550 declare void @_ZN5QFont12setPointSizeEi(%struct.QFont*, i32)
551
552 declare i1 @_ZNK8QPrinter13collateCopiesEv(%struct.QPrinter*)
553
554 declare i32 @_ZNK8QPrinter9numCopiesEv(%struct.QPrinter*)
555
556 declare i32 @_ZNK8QPrinter8fromPageEv(%struct.QPrinter*)
557
558 declare i32 @_ZNK8QPrinter6toPageEv(%struct.QPrinter*)
559
560 declare i32 @_ZNK8QPrinter9pageOrderEv(%struct.QPrinter*)
561
562 declare i32 @_ZNK8QPrinter12printerStateEv(%struct.QPrinter*)
563
564 declare i1 @_ZN8QPrinter7newPageEv(%struct.QPrinter*)
565
566 declare void @_ZN8QPainterD1Ev(%struct.QPainter*)
567
568 declare i32 @__gxx_personality_v0(...)
3333 entry:
3434 ; OK
3535 invoke void @llvm.donothing()
36 to label %cont unwind label %cont
36 to label %conta unwind label %contb
3737
38 cont:
38 conta:
39 ret void
40
41 contb:
3942 %0 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
4043 filter [0 x i8*] zeroinitializer
4144 ret void
6265 %call = call i32 @fn(i8 (i8, i8)* @llvm.expect.i8)
6366 ret i32 %call
6467 }
68
69 define void @f4() {
70 entry:
71 invoke void @llvm.donothing()
72 to label %cont unwind label %cont
73
74 cont:
75 ; CHECK: Block containing LandingPadInst must be jumped to only by the unwind edge of an invoke.
76 %0 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
77 filter [0 x i8*] zeroinitializer
78 ret void
79 }