aboutsummaryrefslogtreecommitdiff
path: root/test/Transforms
diff options
context:
space:
mode:
authorRoman Divacky <rdivacky@FreeBSD.org>2009-12-01 11:07:05 +0000
committerRoman Divacky <rdivacky@FreeBSD.org>2009-12-01 11:07:05 +0000
commit06f9d4012fb8acea3e9861d5722b5965dbb724d9 (patch)
treeffe0478472eaa0686f11cb02c6df7d257b8719b0 /test/Transforms
parent76e2e0ebfdd3d91b07a75822865ea3e9121a99ce (diff)
Notes
Diffstat (limited to 'test/Transforms')
-rw-r--r--test/Transforms/CondProp/2006-08-14-SingleEntryPhiCrash.ll462
-rw-r--r--test/Transforms/CondProp/2006-11-01-PhiNodeCrash.ll1084
-rw-r--r--test/Transforms/CondProp/2007-08-01-InvalidRead.ll814
-rw-r--r--test/Transforms/CondProp/2009-01-25-SingleEntryPHI.ll37
-rw-r--r--test/Transforms/CondProp/basictest-dbg.ll45
-rw-r--r--test/Transforms/CondProp/basictest.ll28
-rw-r--r--test/Transforms/CondProp/dg.exp3
-rw-r--r--test/Transforms/CondProp/phisimplify.ll43
-rw-r--r--test/Transforms/CondProp/phisimplify2.ll46
-rw-r--r--test/Transforms/CondProp/phisimplify3.ll26
-rw-r--r--test/Transforms/ConstProp/2009-09-19-ConstFold-i1-ConstExpr.ll41
-rw-r--r--test/Transforms/DeadStoreElimination/crash.ll19
-rw-r--r--test/Transforms/DeadStoreElimination/lifetime.ll20
-rw-r--r--test/Transforms/GVN/crash.ll94
-rw-r--r--test/Transforms/GVN/lpre-basic.ll18
-rw-r--r--test/Transforms/GVN/nonescaping-malloc.ll108
-rw-r--r--test/Transforms/GVN/pre-load.ll364
-rw-r--r--test/Transforms/GVN/rle-must-alias.ll3
-rw-r--r--test/Transforms/GVN/rle-no-phi-translate.ll6
-rw-r--r--test/Transforms/GVN/rle-phi-translate.ll112
-rw-r--r--test/Transforms/GlobalOpt/constantfold-initializers.ll8
-rw-r--r--test/Transforms/IPConstantProp/dangling-block-address.ll42
-rw-r--r--test/Transforms/IPConstantProp/user-with-multiple-uses.ll30
-rw-r--r--test/Transforms/IndMemRem/2009-01-24-Noalias.ll11
-rw-r--r--test/Transforms/IndMemRem/dg.exp3
-rw-r--r--test/Transforms/InstCombine/cast-malloc.ll15
-rw-r--r--test/Transforms/InstCombine/cast.ll4
-rw-r--r--test/Transforms/InstCombine/compare-signs.ll1
-rw-r--r--test/Transforms/InstCombine/crash.ll12
-rw-r--r--test/Transforms/InstCombine/getelementptr.ll2
-rw-r--r--test/Transforms/InstCombine/intrinsics.ll73
-rw-r--r--test/Transforms/InstCombine/or.ll44
-rw-r--r--test/Transforms/InstCombine/or2.ll12
-rw-r--r--test/Transforms/InstCombine/phi-merge.ll31
-rw-r--r--test/Transforms/InstCombine/shufflevec-constant.ll2
-rw-r--r--test/Transforms/InstCombine/store-merge.ll37
-rw-r--r--test/Transforms/InstCombine/store.ll1
-rw-r--r--test/Transforms/JumpThreading/2008-11-28-InfLoop.ll17
-rw-r--r--test/Transforms/JumpThreading/2009-01-08-DeadLoopRepl.ll49
-rw-r--r--test/Transforms/JumpThreading/2009-01-19-InfSwitchLoop.ll21
-rw-r--r--test/Transforms/JumpThreading/crash.ll20
-rw-r--r--test/Transforms/LICM/2008-07-22-LoadGlobalConstant.ll2
-rw-r--r--test/Transforms/LoopRotate/indirectbr.ll43
-rw-r--r--test/Transforms/LoopSimplify/indirectbr.ll17
-rw-r--r--test/Transforms/LoopUnroll/shifted-tripcount.ll28
-rw-r--r--test/Transforms/RaiseAllocations/2004-11-08-FreeUseCrash.ll10
-rw-r--r--test/Transforms/RaiseAllocations/2007-10-17-InvokeFree.ll17
-rw-r--r--test/Transforms/RaiseAllocations/FreeCastConstantExpr.ll11
-rw-r--r--test/Transforms/RaiseAllocations/dg.exp3
-rw-r--r--test/Transforms/SCCP/2008-03-10-sret.ll19
-rw-r--r--test/Transforms/SCCP/basictest.ll17
-rw-r--r--test/Transforms/SCCP/empty-struct.ll20
-rw-r--r--test/Transforms/SCCP/ipsccp-conditional.ll19
-rw-r--r--test/Transforms/SCCP/ipsccp-gvar.ll22
-rw-r--r--test/Transforms/ScalarRepl/badarray.ll47
55 files changed, 1067 insertions, 3016 deletions
diff --git a/test/Transforms/CondProp/2006-08-14-SingleEntryPhiCrash.ll b/test/Transforms/CondProp/2006-08-14-SingleEntryPhiCrash.ll
deleted file mode 100644
index 754d19d166e8..000000000000
--- a/test/Transforms/CondProp/2006-08-14-SingleEntryPhiCrash.ll
+++ /dev/null
@@ -1,462 +0,0 @@
-; RUN: opt < %s -condprop -disable-output
-; PR877
-target datalayout = "E-p:32:32"
-target triple = "powerpc-apple-darwin9.0.0d1"
- %"struct.kc::impl_Ccode_option" = type { %"struct.kc::impl_abstract_phylum" }
- %"struct.kc::impl_ID" = type { %"struct.kc::impl_abstract_phylum", %"struct.kc::impl_Ccode_option"*, %"struct.kc::impl_casestring__Str"*, i32, %"struct.kc::impl_casestring__Str"* }
- %"struct.kc::impl_abstract_phylum" = type { i32 (...)** }
- %"struct.kc::impl_casestring__Str" = type { %"struct.kc::impl_abstract_phylum", i8* }
- %"struct.kc::impl_elem_patternrepresentation" = type { %"struct.kc::impl_abstract_phylum", i32, %"struct.kc::impl_casestring__Str"*, %"struct.kc::impl_ID"* }
- %"struct.kc::impl_outmostpatterns" = type { %"struct.kc::impl_Ccode_option", %"struct.kc::impl_elem_patternrepresentation"*, %"struct.kc::impl_outmostpatterns"* }
- %"struct.kc::impl_patternrepresentations" = type { %"struct.kc::impl_Ccode_option", %"struct.kc::impl_outmostpatterns"*, %"struct.kc::impl_patternrepresentations"* }
-
-define void @_ZN2kc16compare_patternsEPNS_26impl_patternrepresentationES1_PNS_27impl_patternrepresentationsE() {
-entry:
- br label %bb1269.outer.outer.outer.outer
-
-cond_true: ; preds = %cond_true1298
- br label %bb1269.outer69
-
-cond_false: ; preds = %cond_true1298
- br i1 false, label %cond_next, label %bb51
-
-cond_next: ; preds = %cond_false
- br i1 false, label %bb52, label %bb51
-
-bb51: ; preds = %cond_next, %cond_false
- br label %bb52
-
-bb52: ; preds = %bb51, %cond_next
- br i1 false, label %cond_false82, label %cond_true55
-
-cond_true55: ; preds = %bb52
- br i1 false, label %UnifiedReturnBlock, label %cond_true57
-
-cond_true57: ; preds = %cond_true55
- br label %UnifiedReturnBlock
-
-cond_false82: ; preds = %bb52
- br i1 false, label %cond_next97, label %bb113
-
-cond_next97: ; preds = %cond_false82
- br i1 false, label %bb114, label %bb113
-
-bb113: ; preds = %cond_next97, %cond_false82
- br label %bb114
-
-bb114: ; preds = %bb113, %cond_next97
- br i1 false, label %cond_false151, label %cond_true117
-
-cond_true117: ; preds = %bb114
- br i1 false, label %UnifiedReturnBlock, label %cond_true120
-
-cond_true120: ; preds = %cond_true117
- br label %UnifiedReturnBlock
-
-cond_false151: ; preds = %bb114
- br i1 false, label %cond_next166, label %bb182
-
-cond_next166: ; preds = %cond_false151
- br i1 false, label %bb183, label %bb182
-
-bb182: ; preds = %cond_next166, %cond_false151
- br label %bb183
-
-bb183: ; preds = %bb182, %cond_next166
- br i1 false, label %cond_false256, label %cond_true186
-
-cond_true186: ; preds = %bb183
- br i1 false, label %cond_true207, label %cond_false214
-
-cond_true207: ; preds = %cond_true186
- br label %bb1269.outer38.backedge
-
-bb1269.outer38.backedge: ; preds = %cond_true545, %cond_true432, %cond_true320, %cond_true207
- br label %bb1269.outer38
-
-cond_false214: ; preds = %cond_true186
- br i1 false, label %cond_true228, label %cond_false235
-
-cond_true228: ; preds = %cond_false214
- br label %bb1269.outer21.backedge
-
-bb1269.outer21.backedge: ; preds = %cond_true566, %cond_true453, %cond_true341, %cond_true228
- br label %bb1269.outer21
-
-cond_false235: ; preds = %cond_false214
- br i1 false, label %UnifiedReturnBlock, label %cond_false250
-
-cond_false250: ; preds = %cond_false235
- br label %UnifiedUnreachableBlock
-
-cond_false256: ; preds = %bb183
- br i1 false, label %cond_next271, label %bb287
-
-cond_next271: ; preds = %cond_false256
- br i1 false, label %bb288, label %bb287
-
-bb287: ; preds = %cond_next271, %cond_false256
- br label %bb288
-
-bb288: ; preds = %bb287, %cond_next271
- br i1 false, label %cond_false369, label %cond_true291
-
-cond_true291: ; preds = %bb288
- br i1 false, label %cond_true320, label %cond_false327
-
-cond_true320: ; preds = %cond_true291
- br label %bb1269.outer38.backedge
-
-cond_false327: ; preds = %cond_true291
- br i1 false, label %cond_true341, label %cond_false348
-
-cond_true341: ; preds = %cond_false327
- br label %bb1269.outer21.backedge
-
-cond_false348: ; preds = %cond_false327
- br i1 false, label %UnifiedReturnBlock, label %cond_false363
-
-cond_false363: ; preds = %cond_false348
- br label %UnifiedUnreachableBlock
-
-cond_false369: ; preds = %bb288
- br i1 false, label %cond_next384, label %bb400
-
-cond_next384: ; preds = %cond_false369
- br i1 false, label %bb401, label %bb400
-
-bb400: ; preds = %cond_next384, %cond_false369
- br label %bb401
-
-bb401: ; preds = %bb400, %cond_next384
- br i1 false, label %cond_false481, label %cond_true404
-
-cond_true404: ; preds = %bb401
- br i1 false, label %cond_true432, label %cond_false439
-
-cond_true432: ; preds = %cond_true404
- br label %bb1269.outer38.backedge
-
-cond_false439: ; preds = %cond_true404
- br i1 false, label %cond_true453, label %cond_false460
-
-cond_true453: ; preds = %cond_false439
- br label %bb1269.outer21.backedge
-
-cond_false460: ; preds = %cond_false439
- br i1 false, label %UnifiedReturnBlock, label %cond_false475
-
-cond_false475: ; preds = %cond_false460
- br label %UnifiedUnreachableBlock
-
-cond_false481: ; preds = %bb401
- br i1 false, label %cond_next496, label %bb512
-
-cond_next496: ; preds = %cond_false481
- br i1 false, label %bb513, label %bb512
-
-bb512: ; preds = %cond_next496, %cond_false481
- br label %bb513
-
-bb513: ; preds = %bb512, %cond_next496
- br i1 false, label %cond_false594, label %cond_true516
-
-cond_true516: ; preds = %bb513
- br i1 false, label %cond_true545, label %cond_false552
-
-cond_true545: ; preds = %cond_true516
- br label %bb1269.outer38.backedge
-
-cond_false552: ; preds = %cond_true516
- br i1 false, label %cond_true566, label %cond_false573
-
-cond_true566: ; preds = %cond_false552
- br label %bb1269.outer21.backedge
-
-cond_false573: ; preds = %cond_false552
- br i1 false, label %UnifiedReturnBlock, label %cond_false588
-
-cond_false588: ; preds = %cond_false573
- br label %UnifiedUnreachableBlock
-
-cond_false594: ; preds = %bb513
- br i1 false, label %cond_next609, label %bb625
-
-cond_next609: ; preds = %cond_false594
- br i1 false, label %bb626, label %bb625
-
-bb625: ; preds = %cond_next609, %cond_false594
- br label %bb626
-
-bb626: ; preds = %bb625, %cond_next609
- br i1 false, label %cond_false707, label %cond_true629
-
-cond_true629: ; preds = %bb626
- br i1 false, label %cond_true658, label %cond_false665
-
-cond_true658: ; preds = %cond_true629
- br label %bb1269.outer2.backedge
-
-bb1269.outer2.backedge: ; preds = %cond_true679, %cond_true658
- br label %bb1269.outer2
-
-cond_false665: ; preds = %cond_true629
- br i1 false, label %cond_true679, label %cond_false686
-
-cond_true679: ; preds = %cond_false665
- br label %bb1269.outer2.backedge
-
-cond_false686: ; preds = %cond_false665
- br i1 false, label %UnifiedReturnBlock, label %cond_false701
-
-cond_false701: ; preds = %cond_false686
- br label %UnifiedUnreachableBlock
-
-cond_false707: ; preds = %bb626
- br i1 false, label %cond_next722, label %bb738
-
-cond_next722: ; preds = %cond_false707
- br i1 false, label %bb739, label %bb738
-
-bb738: ; preds = %cond_next722, %cond_false707
- br label %bb739
-
-bb739: ; preds = %bb738, %cond_next722
- br i1 false, label %cond_false820, label %cond_true742
-
-cond_true742: ; preds = %bb739
- br i1 false, label %cond_true771, label %cond_false778
-
-cond_true771: ; preds = %cond_true742
- br label %bb1269.outer.backedge
-
-bb1269.outer.backedge: ; preds = %cond_true792, %cond_true771
- br label %bb1269.outer
-
-cond_false778: ; preds = %cond_true742
- br i1 false, label %cond_true792, label %cond_false799
-
-cond_true792: ; preds = %cond_false778
- br label %bb1269.outer.backedge
-
-cond_false799: ; preds = %cond_false778
- br i1 false, label %UnifiedReturnBlock, label %cond_false814
-
-cond_false814: ; preds = %cond_false799
- br label %UnifiedUnreachableBlock
-
-cond_false820: ; preds = %bb739
- br i1 false, label %cond_next835, label %bb851
-
-cond_next835: ; preds = %cond_false820
- br i1 false, label %bb852, label %bb851
-
-bb851: ; preds = %cond_next835, %cond_false820
- br label %bb852
-
-bb852: ; preds = %bb851, %cond_next835
- br i1 false, label %cond_false933, label %cond_true855
-
-cond_true855: ; preds = %bb852
- br i1 false, label %cond_true884, label %cond_false891
-
-cond_true884: ; preds = %cond_true855
- br label %bb1269.outer.outer.backedge
-
-bb1269.outer.outer.backedge: ; preds = %cond_true905, %cond_true884
- br label %bb1269.outer.outer
-
-cond_false891: ; preds = %cond_true855
- br i1 false, label %cond_true905, label %cond_false912
-
-cond_true905: ; preds = %cond_false891
- br label %bb1269.outer.outer.backedge
-
-cond_false912: ; preds = %cond_false891
- br i1 false, label %UnifiedReturnBlock, label %cond_false927
-
-cond_false927: ; preds = %cond_false912
- br label %UnifiedUnreachableBlock
-
-cond_false933: ; preds = %bb852
- br i1 false, label %cond_next948, label %bb964
-
-cond_next948: ; preds = %cond_false933
- br i1 false, label %bb965, label %bb964
-
-bb964: ; preds = %cond_next948, %cond_false933
- br label %bb965
-
-bb965: ; preds = %bb964, %cond_next948
- br i1 false, label %cond_false1046, label %cond_true968
-
-cond_true968: ; preds = %bb965
- br i1 false, label %cond_true997, label %cond_false1004
-
-cond_true997: ; preds = %cond_true968
- br label %bb1269.outer.outer.outer.backedge
-
-bb1269.outer.outer.outer.backedge: ; preds = %cond_true1018, %cond_true997
- br label %bb1269.outer.outer.outer
-
-cond_false1004: ; preds = %cond_true968
- br i1 false, label %cond_true1018, label %cond_false1025
-
-cond_true1018: ; preds = %cond_false1004
- br label %bb1269.outer.outer.outer.backedge
-
-cond_false1025: ; preds = %cond_false1004
- br i1 false, label %UnifiedReturnBlock, label %cond_false1040
-
-cond_false1040: ; preds = %cond_false1025
- br label %UnifiedUnreachableBlock
-
-cond_false1046: ; preds = %bb965
- br i1 false, label %cond_next1061, label %bb1077
-
-cond_next1061: ; preds = %cond_false1046
- br i1 false, label %bb1078, label %bb1077
-
-bb1077: ; preds = %cond_next1061, %cond_false1046
- br label %bb1078
-
-bb1078: ; preds = %bb1077, %cond_next1061
- %tmp1080 = phi i1 [ true, %bb1077 ], [ false, %cond_next1061 ] ; <i1> [#uses=1]
- br i1 %tmp1080, label %cond_false1159, label %cond_true1081
-
-cond_true1081: ; preds = %bb1078
- br i1 false, label %cond_true1110, label %cond_false1117
-
-cond_true1110: ; preds = %cond_true1081
- br label %bb1269.outer.outer.outer.outer.backedge
-
-bb1269.outer.outer.outer.outer.backedge: ; preds = %cond_true1131, %cond_true1110
- br label %bb1269.outer.outer.outer.outer
-
-cond_false1117: ; preds = %cond_true1081
- br i1 false, label %cond_true1131, label %cond_false1138
-
-cond_true1131: ; preds = %cond_false1117
- br label %bb1269.outer.outer.outer.outer.backedge
-
-cond_false1138: ; preds = %cond_false1117
- br i1 false, label %UnifiedReturnBlock, label %cond_false1153
-
-cond_false1153: ; preds = %cond_false1138
- br label %UnifiedUnreachableBlock
-
-cond_false1159: ; preds = %bb1078
- %tmp.i119.lcssa35.lcssa.lcssa.lcssa.lcssa.lcssa = phi %"struct.kc::impl_elem_patternrepresentation"* [ null, %bb1078 ] ; <%"struct.kc::impl_elem_patternrepresentation"*> [#uses=0]
- br i1 false, label %UnifiedReturnBlock, label %cond_false1174
-
-cond_false1174: ; preds = %cond_false1159
- br i1 false, label %UnifiedReturnBlock, label %cond_false1189
-
-cond_false1189: ; preds = %cond_false1174
- br i1 false, label %UnifiedReturnBlock, label %cond_false1204
-
-cond_false1204: ; preds = %cond_false1189
- br i1 false, label %UnifiedReturnBlock, label %cond_false1219
-
-cond_false1219: ; preds = %cond_false1204
- br i1 false, label %UnifiedReturnBlock, label %cond_true1222
-
-cond_true1222: ; preds = %cond_false1219
- br label %UnifiedReturnBlock
-
-bb1269.outer.outer.outer.outer: ; preds = %bb1269.outer.outer.outer.outer.backedge, %entry
- br label %bb1269.outer.outer.outer
-
-bb1269.outer.outer.outer: ; preds = %bb1269.outer.outer.outer.outer, %bb1269.outer.outer.outer.backedge
- br label %bb1269.outer.outer
-
-bb1269.outer.outer: ; preds = %bb1269.outer.outer.outer, %bb1269.outer.outer.backedge
- br label %bb1269.outer
-
-bb1269.outer: ; preds = %bb1269.outer.outer, %bb1269.outer.backedge
- br label %bb1269.outer2
-
-bb1269.outer2: ; preds = %bb1269.outer, %bb1269.outer2.backedge
- br label %bb1269.outer21
-
-bb1269.outer21: ; preds = %bb1269.outer2, %bb1269.outer21.backedge
- br label %bb1269.outer38
-
-bb1269.outer38: ; preds = %bb1269.outer21, %bb1269.outer38.backedge
- br label %bb1269.outer54
-
-bb1269.outer54: ; preds = %bb1269.outer38
- br label %bb1269.outer69
-
-bb1269.outer69: ; preds = %bb1269.outer54, %cond_true
- br label %bb1269
-
-bb1269: ; preds = %bb1269.outer69
- br i1 false, label %cond_next1281, label %bb1294
-
-cond_next1281: ; preds = %bb1269
- br i1 false, label %cond_true1298, label %bb1294
-
-bb1294: ; preds = %cond_next1281, %bb1269
- br i1 false, label %cond_true1331, label %cond_next1313
-
-cond_true1298: ; preds = %cond_next1281
- br i1 false, label %cond_false, label %cond_true
-
-cond_next1313: ; preds = %bb1294
- br i1 false, label %cond_true1331, label %cond_next1355
-
-cond_true1331: ; preds = %cond_next1313, %bb1294
- br i1 false, label %cond_false1346, label %cond_true1342
-
-cond_true1342: ; preds = %cond_true1331
- br label %cond_next1350
-
-cond_false1346: ; preds = %cond_true1331
- br label %cond_next1350
-
-cond_next1350: ; preds = %cond_false1346, %cond_true1342
- br label %bb.i
-
-bb.i: ; preds = %bb.i, %cond_next1350
- br i1 false, label %_ZN2kc18impl_abstract_list8freelistEv.exit, label %bb.i
-
-_ZN2kc18impl_abstract_list8freelistEv.exit: ; preds = %bb.i
- br label %cond_next1355
-
-cond_next1355: ; preds = %_ZN2kc18impl_abstract_list8freelistEv.exit, %cond_next1313
- br i1 false, label %cond_next1363, label %bb1388
-
-cond_next1363: ; preds = %cond_next1355
- br i1 false, label %UnifiedReturnBlock, label %cond_true1366
-
-cond_true1366: ; preds = %cond_next1363
- br label %UnifiedReturnBlock
-
-bb1388: ; preds = %cond_next1355
- br i1 false, label %UnifiedReturnBlock, label %bb1414.preheader
-
-bb1414.preheader: ; preds = %bb1388
- br label %bb1414
-
-bb1414: ; preds = %cond_true1426, %bb1414.preheader
- br i1 false, label %cond_true1426, label %bb1429
-
-cond_true1426: ; preds = %bb1414
- br label %bb1414
-
-bb1429: ; preds = %bb1414
- br i1 false, label %cond_true1431, label %UnifiedReturnBlock
-
-cond_true1431: ; preds = %bb1429
- br i1 false, label %UnifiedReturnBlock, label %cond_true1434
-
-cond_true1434: ; preds = %cond_true1431
- br label %UnifiedReturnBlock
-
-UnifiedUnreachableBlock: ; preds = %cond_false1153, %cond_false1040, %cond_false927, %cond_false814, %cond_false701, %cond_false588, %cond_false475, %cond_false363, %cond_false250
- unreachable
-
-UnifiedReturnBlock: ; preds = %cond_true1434, %cond_true1431, %bb1429, %bb1388, %cond_true1366, %cond_next1363, %cond_true1222, %cond_false1219, %cond_false1204, %cond_false1189, %cond_false1174, %cond_false1159, %cond_false1138, %cond_false1025, %cond_false912, %cond_false799, %cond_false686, %cond_false573, %cond_false460, %cond_false348, %cond_false235, %cond_true120, %cond_true117, %cond_true57, %cond_true55
- ret void
-}
diff --git a/test/Transforms/CondProp/2006-11-01-PhiNodeCrash.ll b/test/Transforms/CondProp/2006-11-01-PhiNodeCrash.ll
deleted file mode 100644
index 4df8ff94499a..000000000000
--- a/test/Transforms/CondProp/2006-11-01-PhiNodeCrash.ll
+++ /dev/null
@@ -1,1084 +0,0 @@
-; RUN: opt < %s -condprop -disable-output
-; PR979
-
-target datalayout = "e-p:32:32"
-target triple = "i686-pc-linux-gnu"
-deplibs = [ "c", "crtend" ]
- %struct.IO_APIC_reg_00 = type { i32 }
- %struct.Qdisc = type { i32 (%struct.sk_buff*, %struct.Qdisc*)*, %struct.sk_buff* (%struct.Qdisc*)*, i32, %struct.Qdisc_ops*, %struct.Qdisc*, i32, %struct.IO_APIC_reg_00, %struct.sk_buff_head, %struct.net_device*, %struct.tc_stats, i32 (%struct.sk_buff*, %struct.Qdisc*)*, %struct.Qdisc*, [1 x i8] }
- %struct.Qdisc_class_ops = type { i32 (%struct.Qdisc*, i32, %struct.Qdisc*, %struct.Qdisc**)*, %struct.Qdisc* (%struct.Qdisc*, i32)*, i32 (%struct.Qdisc*, i32)*, void (%struct.Qdisc*, i32)*, i32 (%struct.Qdisc*, i32, i32, %struct._agp_version**, i32*)*, i32 (%struct.Qdisc*, i32)*, void (%struct.Qdisc*, %struct.qdisc_walker*)*, %struct.tcf_proto** (%struct.Qdisc*, i32)*, i32 (%struct.Qdisc*, i32, i32)*, void (%struct.Qdisc*, i32)*, i32 (%struct.Qdisc*, i32, %struct.sk_buff*, %struct.tcmsg*)* }
- %struct.Qdisc_ops = type { %struct.Qdisc_ops*, %struct.Qdisc_class_ops*, [16 x i8], i32, i32 (%struct.sk_buff*, %struct.Qdisc*)*, %struct.sk_buff* (%struct.Qdisc*)*, i32 (%struct.sk_buff*, %struct.Qdisc*)*, i32 (%struct.Qdisc*)*, i32 (%struct.Qdisc*, %struct._agp_version*)*, void (%struct.Qdisc*)*, void (%struct.Qdisc*)*, i32 (%struct.Qdisc*, %struct._agp_version*)*, i32 (%struct.Qdisc*, %struct.sk_buff*)* }
- %struct.ViceFid = type { i32, i32, i32 }
- %struct.__wait_queue = type { i32, %struct.task_struct*, %struct.list_head }
- %struct.__wait_queue_head = type { %struct.IO_APIC_reg_00, %struct.list_head }
- %struct._agp_version = type { i16, i16 }
- %struct._drm_i810_overlay_t = type { i32, i32 }
- %struct.address_space = type { %struct.list_head, %struct.list_head, %struct.list_head, i32, %struct.address_space_operations*, %struct.inode*, %struct.vm_area_struct*, %struct.vm_area_struct*, %struct.IO_APIC_reg_00, i32 }
- %struct.address_space_operations = type { i32 (%struct.page*)*, i32 (%struct.file*, %struct.page*)*, i32 (%struct.page*)*, i32 (%struct.file*, %struct.page*, i32, i32)*, i32 (%struct.file*, %struct.page*, i32, i32)*, i32 (%struct.address_space*, i32)*, i32 (%struct.page*, i32)*, i32 (%struct.page*, i32)*, i32 (i32, %struct.inode*, %struct.kiobuf*, i32, i32)*, i32 (i32, %struct.file*, %struct.kiobuf*, i32, i32)*, void (%struct.page*)* }
- %struct.audio_buf_info = type { i32, i32, i32, i32 }
- %struct.autofs_packet_hdr = type { i32, i32 }
- %struct.block_device = type { %struct.list_head, %struct.IO_APIC_reg_00, %struct.inode*, i16, i32, %struct.block_device_operations*, %struct.semaphore, %struct.list_head }
- %struct.block_device_operations = type { i32 (%struct.inode*, %struct.file*)*, i32 (%struct.inode*, %struct.file*)*, i32 (%struct.inode*, %struct.file*, i32, i32)*, i32 (i16)*, i32 (i16)*, %struct.module* }
- %struct.bluez_skb_cb = type { i32 }
- %struct.buffer_head = type { %struct.buffer_head*, i32, i16, i16, i16, %struct.IO_APIC_reg_00, i16, i32, i32, %struct.buffer_head*, %struct.buffer_head*, %struct.buffer_head*, %struct.buffer_head*, %struct.buffer_head**, i8*, %struct.page*, void (%struct.buffer_head*, i32)*, i8*, i32, %struct.__wait_queue_head, %struct.list_head }
- %struct.char_device = type { %struct.list_head, %struct.IO_APIC_reg_00, i16, %struct.IO_APIC_reg_00, %struct.semaphore }
- %struct.completion = type { i32, %struct.__wait_queue_head }
- %struct.cramfs_info = type { i32, i32, i32, i32 }
- %struct.dentry = type { %struct.IO_APIC_reg_00, i32, %struct.inode*, %struct.dentry*, %struct.list_head, %struct.list_head, %struct.list_head, %struct.list_head, %struct.list_head, i32, %struct.qstr, i32, %struct.dentry_operations*, %struct.super_block*, i32, i8*, [16 x i8] }
- %struct.dentry_operations = type { i32 (%struct.dentry*, i32)*, i32 (%struct.dentry*, %struct.qstr*)*, i32 (%struct.dentry*, %struct.qstr*, %struct.qstr*)*, i32 (%struct.dentry*)*, void (%struct.dentry*)*, void (%struct.dentry*, %struct.inode*)* }
- %struct.dev_mc_list = type { %struct.dev_mc_list*, [8 x i8], i8, i32, i32 }
- %struct.dnotify_struct = type { %struct.dnotify_struct*, i32, i32, %struct.file*, %struct.files_struct* }
- %struct.dquot = type { %struct.list_head, %struct.list_head, %struct.list_head, %struct.__wait_queue_head, %struct.__wait_queue_head, i32, i32, %struct.super_block*, i32, i16, i64, i16, i16, i32, %struct.mem_dqblk }
- %struct.dquot_operations = type { void (%struct.inode*, i32)*, void (%struct.inode*)*, i32 (%struct.inode*, i64, i32)*, i32 (%struct.inode*, i32)*, void (%struct.inode*, i64)*, void (%struct.inode*, i32)*, i32 (%struct.inode*, %struct.iattr*)*, i32 (%struct.dquot*)* }
- %struct.drm_clip_rect = type { i16, i16, i16, i16 }
- %struct.drm_ctx_priv_map = type { i32, i8* }
- %struct.drm_mga_indices = type { i32, i32, i32, i32 }
- %struct.dst_entry = type { %struct.dst_entry*, %struct.IO_APIC_reg_00, i32, %struct.net_device*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.neighbour*, %struct.hh_cache*, i32 (%struct.sk_buff*)*, i32 (%struct.sk_buff*)*, %struct.dst_ops*, [0 x i8] }
- %struct.dst_ops = type { i16, i16, i32, i32 ()*, %struct.dst_entry* (%struct.dst_entry*, i32)*, %struct.dst_entry* (%struct.dst_entry*, %struct.sk_buff*)*, void (%struct.dst_entry*)*, %struct.dst_entry* (%struct.dst_entry*)*, void (%struct.sk_buff*)*, i32, %struct.IO_APIC_reg_00, %struct.kmem_cache_s* }
- %struct.e820entry = type { i64, i64, i32 }
- %struct.exec_domain = type { i8*, void (i32, %struct.pt_regs*)*, i8, i8, i32*, i32*, %struct.map_segment*, %struct.map_segment*, %struct.map_segment*, %struct.map_segment*, %struct.module*, %struct.exec_domain* }
- %struct.ext2_inode_info = type { [15 x i32], i32, i32, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
- %struct.ext3_inode_info = type { [15 x i32], i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.list_head, i64, %struct.rw_semaphore }
- %struct.fasync_struct = type { i32, i32, %struct.fasync_struct*, %struct.file* }
- %struct.file = type { %struct.list_head, %struct.dentry*, %struct.vfsmount*, %struct.file_operations*, %struct.IO_APIC_reg_00, i32, i16, i64, i32, i32, i32, i32, i32, %struct.audio_buf_info, i32, i32, i32, i32, i8*, %struct.kiobuf*, i32 }
- %struct.file_lock = type { %struct.file_lock*, %struct.list_head, %struct.list_head, %struct.files_struct*, i32, %struct.__wait_queue_head, %struct.file*, i8, i8, i64, i64, void (%struct.file_lock*)*, void (%struct.file_lock*)*, void (%struct.file_lock*)*, %struct.fasync_struct*, i32, { %struct.nfs_lock_info } }
- %struct.file_operations = type { %struct.module*, i64 (%struct.file*, i64, i32)*, i32 (%struct.file*, i8*, i32, i64*)*, i32 (%struct.file*, i8*, i32, i64*)*, i32 (%struct.file*, i8*, i32 (i8*, i8*, i32, i64, i32, i32)*)*, i32 (%struct.file*, %struct.poll_table_struct*)*, i32 (%struct.inode*, %struct.file*, i32, i32)*, i32 (%struct.file*, %struct.vm_area_struct*)*, i32 (%struct.inode*, %struct.file*)*, i32 (%struct.file*)*, i32 (%struct.inode*, %struct.file*)*, i32 (%struct.file*, %struct.dentry*, i32)*, i32 (i32, %struct.file*, i32)*, i32 (%struct.file*, i32, %struct.file_lock*)*, i32 (%struct.file*, %struct.iovec*, i32, i64*)*, i32 (%struct.file*, %struct.iovec*, i32, i64*)*, i32 (%struct.file*, %struct.page*, i32, i32, i64*, i32)*, i32 (%struct.file*, i32, i32, i32, i32)* }
- %struct.file_system_type = type { i8*, i32, %struct.super_block* (%struct.super_block*, i8*, i32)*, %struct.module*, %struct.file_system_type*, %struct.list_head }
- %struct.files_struct = type { %struct.IO_APIC_reg_00, %typedef.rwlock_t, i32, i32, i32, %struct.file**, %typedef.__kernel_fd_set*, %typedef.__kernel_fd_set*, %typedef.__kernel_fd_set, %typedef.__kernel_fd_set, [32 x %struct.file*] }
- %struct.fs_disk_quota = type { i8, i8, i16, i32, i64, i64, i64, i64, i64, i64, i32, i32, i16, i16, i32, i64, i64, i64, i32, i16, i16, [8 x i8] }
- %struct.fs_quota_stat = type { i8, i16, i8, %struct.e820entry, %struct.e820entry, i32, i32, i32, i32, i16, i16 }
- %struct.fs_struct = type { %struct.IO_APIC_reg_00, %typedef.rwlock_t, i32, %struct.dentry*, %struct.dentry*, %struct.dentry*, %struct.vfsmount*, %struct.vfsmount*, %struct.vfsmount* }
- %struct.hh_cache = type { %struct.hh_cache*, %struct.IO_APIC_reg_00, i16, i32, i32 (%struct.sk_buff*)*, %typedef.rwlock_t, [32 x i32] }
- %struct.i387_fxsave_struct = type { i16, i16, i16, i16, i32, i32, i32, i32, i32, i32, [32 x i32], [32 x i32], [56 x i32] }
- %struct.iattr = type { i32, i16, i32, i32, i64, i32, i32, i32, i32 }
- %struct.if_dqblk = type { i64, i64, i64, i64, i64, i64, i64, i64, i32 }
- %struct.if_dqinfo = type { i64, i64, i32, i32 }
- %struct.ifmap = type { i32, i32, i16, i8, i8, i8 }
- %struct.ifreq = type { { [16 x i8] }, %typedef.dvd_authinfo }
- %struct.inode = type { %struct.list_head, %struct.list_head, %struct.list_head, %struct.list_head, %struct.list_head, i32, %struct.IO_APIC_reg_00, i16, i16, i16, i32, i32, i16, i64, i32, i32, i32, i32, i32, i32, i32, i16, %struct.semaphore, %struct.rw_semaphore, %struct.semaphore, %struct.inode_operations*, %struct.file_operations*, %struct.super_block*, %struct.__wait_queue_head, %struct.file_lock*, %struct.address_space*, %struct.address_space, [2 x %struct.dquot*], %struct.list_head, %struct.pipe_inode_info*, %struct.block_device*, %struct.char_device*, i32, %struct.dnotify_struct*, i32, i32, i8, %struct.IO_APIC_reg_00, i32, i32, { %struct.ext2_inode_info, %struct.ext3_inode_info, %struct.msdos_inode_info, %struct.iso_inode_info, %struct.nfs_inode_info, %struct._drm_i810_overlay_t, %struct.shmem_inode_info, %struct.proc_inode_info, %struct.socket, %struct.usbdev_inode_info, i8* } }
- %struct.inode_operations = type { i32 (%struct.inode*, %struct.dentry*, i32)*, %struct.dentry* (%struct.inode*, %struct.dentry*)*, i32 (%struct.dentry*, %struct.inode*, %struct.dentry*)*, i32 (%struct.inode*, %struct.dentry*)*, i32 (%struct.inode*, %struct.dentry*, i8*)*, i32 (%struct.inode*, %struct.dentry*, i32)*, i32 (%struct.inode*, %struct.dentry*)*, i32 (%struct.inode*, %struct.dentry*, i32, i32)*, i32 (%struct.inode*, %struct.dentry*, %struct.inode*, %struct.dentry*)*, i32 (%struct.dentry*, i8*, i32)*, i32 (%struct.dentry*, %struct.nameidata*)*, void (%struct.inode*)*, i32 (%struct.inode*, i32)*, i32 (%struct.dentry*)*, i32 (%struct.dentry*, %struct.iattr*)*, i32 (%struct.dentry*, %struct.iattr*)*, i32 (%struct.dentry*, i8*, i8*, i32, i32)*, i32 (%struct.dentry*, i8*, i8*, i32)*, i32 (%struct.dentry*, i8*, i32)*, i32 (%struct.dentry*, i8*)* }
- %struct.iovec = type { i8*, i32 }
- %struct.ip_options = type { i32, i8, i8, i8, i8, i8, i8, i8, i8, [0 x i8] }
- %struct.isapnp_dma = type { i8, i8, %struct.isapnp_resources*, %struct.isapnp_dma* }
- %struct.isapnp_irq = type { i16, i8, i8, %struct.isapnp_resources*, %struct.isapnp_irq* }
- %struct.isapnp_mem = type { i32, i32, i32, i32, i8, i8, %struct.isapnp_resources*, %struct.isapnp_mem* }
- %struct.isapnp_mem32 = type { [17 x i8], %struct.isapnp_resources*, %struct.isapnp_mem32* }
- %struct.isapnp_port = type { i16, i16, i8, i8, i8, i8, %struct.isapnp_resources*, %struct.isapnp_port* }
- %struct.isapnp_resources = type { i16, i16, %struct.isapnp_port*, %struct.isapnp_irq*, %struct.isapnp_dma*, %struct.isapnp_mem*, %struct.isapnp_mem32*, %struct.pci_dev*, %struct.isapnp_resources*, %struct.isapnp_resources* }
- %struct.iso_inode_info = type { i32, i8, [3 x i8], i32, i32 }
- %struct.iw_handler_def = type opaque
- %struct.iw_statistics = type opaque
- %struct.k_sigaction = type { %struct.sigaction }
- %struct.kern_ipc_perm = type { i32, i32, i32, i32, i32, i16, i32 }
- %struct.kiobuf = type { i32, i32, i32, i32, i32, %struct.page**, %struct.buffer_head**, i32*, %struct.IO_APIC_reg_00, i32, void (%struct.kiobuf*)*, %struct.__wait_queue_head }
- %struct.kmem_cache_s = type { %struct.list_head, %struct.list_head, %struct.list_head, i32, i32, i32, %struct.IO_APIC_reg_00, i32, i32, i32, i32, i32, i32, %struct.kmem_cache_s*, i32, i32, void (i8*, %struct.kmem_cache_s*, i32)*, void (i8*, %struct.kmem_cache_s*, i32)*, i32, [20 x i8], %struct.list_head, [32 x %struct._drm_i810_overlay_t*], i32 }
- %struct.linux_binfmt = type { %struct.linux_binfmt*, %struct.module*, i32 (%struct.linux_binprm*, %struct.pt_regs*)*, i32 (%struct.file*)*, i32 (i32, %struct.pt_regs*, %struct.file*)*, i32, i32 (%struct.linux_binprm*, i8*)* }
- %struct.linux_binprm = type { [128 x i8], [32 x %struct.page*], i32, i32, %struct.file*, i32, i32, i32, i32, i32, i32, i32, i8*, i32, i32 }
- %struct.list_head = type { %struct.list_head*, %struct.list_head* }
- %struct.llva_sigcontext = type { %typedef.llva_icontext_t, %typedef.llva_fp_state_t, i32, i32, i32, i32, [1 x i32], i8* }
- %struct.map_segment = type opaque
- %struct.mem_dqblk = type { i32, i32, i64, i32, i32, i32, i32, i32 }
- %struct.mem_dqinfo = type { %struct.quota_format_type*, i32, i32, i32, { %struct.ViceFid } }
- %struct.mm_struct = type { %struct.vm_area_struct*, %struct.rb_root_s, %struct.vm_area_struct*, %struct.IO_APIC_reg_00*, %struct.IO_APIC_reg_00, %struct.IO_APIC_reg_00, i32, %struct.rw_semaphore, %struct.IO_APIC_reg_00, %struct.list_head, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.iovec }
- %struct.module = type { i32, %struct.module*, i8*, i32, %struct.IO_APIC_reg_00, i32, i32, i32, %struct.drm_ctx_priv_map*, %struct.module_ref*, %struct.module_ref*, i32 ()*, void ()*, %struct._drm_i810_overlay_t*, %struct._drm_i810_overlay_t*, %struct.module_persist*, %struct.module_persist*, i32 ()*, i32, i8*, i8*, i8*, i8*, i8* }
- %struct.module_persist = type opaque
- %struct.module_ref = type { %struct.module*, %struct.module*, %struct.module_ref* }
- %struct.msdos_inode_info = type { i32, i32, i32, i32, i32, i32, %struct.inode*, %struct.list_head }
- %struct.msghdr = type { i8*, i32, %struct.iovec*, i32, i8*, i32, i32 }
- %struct.msq_setbuf = type { i32, i32, i32, i16 }
- %struct.nameidata = type { %struct.dentry*, %struct.vfsmount*, %struct.qstr, i32, i32 }
- %struct.namespace = type { %struct.IO_APIC_reg_00, %struct.vfsmount*, %struct.list_head, %struct.rw_semaphore }
- %struct.neigh_ops = type { i32, void (%struct.neighbour*)*, void (%struct.neighbour*, %struct.sk_buff*)*, void (%struct.neighbour*, %struct.sk_buff*)*, i32 (%struct.sk_buff*)*, i32 (%struct.sk_buff*)*, i32 (%struct.sk_buff*)*, i32 (%struct.sk_buff*)* }
- %struct.neigh_parms = type { %struct.neigh_parms*, i32 (%struct.neighbour*)*, %struct.neigh_table*, i32, i8*, i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
- %struct.neigh_table = type { %struct.neigh_table*, i32, i32, i32, i32 (i8*, %struct.net_device*)*, i32 (%struct.neighbour*)*, i32 (%struct.pneigh_entry*)*, void (%struct.pneigh_entry*)*, void (%struct.sk_buff*)*, i8*, %struct.neigh_parms, i32, i32, i32, i32, i32, %struct.timer_list, %struct.timer_list, %struct.sk_buff_head, i32, %typedef.rwlock_t, i32, %struct.neigh_parms*, %struct.kmem_cache_s*, %struct.tasklet_struct, %struct.audio_buf_info, [32 x %struct.neighbour*], [16 x %struct.pneigh_entry*] }
- %struct.neighbour = type { %struct.neighbour*, %struct.neigh_table*, %struct.neigh_parms*, %struct.net_device*, i32, i32, i32, i8, i8, i8, i8, %struct.IO_APIC_reg_00, %typedef.rwlock_t, [8 x i8], %struct.hh_cache*, %struct.IO_APIC_reg_00, i32 (%struct.sk_buff*)*, %struct.sk_buff_head, %struct.timer_list, %struct.neigh_ops*, [0 x i8] }
- %struct.net_bridge_port = type opaque
- %struct.net_device = type { [16 x i8], i32, i32, i32, i32, i32, i32, i8, i8, i32, %struct.net_device*, i32 (%struct.net_device*)*, %struct.net_device*, i32, i32, %struct.net_device_stats* (%struct.net_device*)*, %struct.iw_statistics* (%struct.net_device*)*, %struct.iw_handler_def*, i32, i32, i16, i16, i16, i16, i32, i16, i16, i8*, %struct.net_device*, [8 x i8], [8 x i8], i8, %struct.dev_mc_list*, i32, i32, i32, i32, %struct.timer_list, i8*, i8*, i8*, i8*, i8*, %struct.list_head, i32, i32, %struct.Qdisc*, %struct.Qdisc*, %struct.Qdisc*, %struct.Qdisc*, i32, %struct.IO_APIC_reg_00, i32, %struct.IO_APIC_reg_00, %struct.IO_APIC_reg_00, i32, i32, void (%struct.net_device*)*, void (%struct.net_device*)*, i32 (%struct.net_device*)*, i32 (%struct.net_device*)*, i32 (%struct.sk_buff*, %struct.net_device*)*, i32 (%struct.net_device*, i32*)*, i32 (%struct.sk_buff*, %struct.net_device*, i16, i8*, i8*, i32)*, i32 (%struct.sk_buff*)*, void (%struct.net_device*)*, i32 (%struct.net_device*, i8*)*, i32 (%struct.net_device*, %struct.ifreq*, i32)*, i32 (%struct.net_device*, %struct.ifmap*)*, i32 (%struct.neighbour*, %struct.hh_cache*)*, void (%struct.hh_cache*, %struct.net_device*, i8*)*, i32 (%struct.net_device*, i32)*, void (%struct.net_device*)*, void (%struct.net_device*, %struct.vlan_group*)*, void (%struct.net_device*, i16)*, void (%struct.net_device*, i16)*, i32 (%struct.sk_buff*, i8*)*, i32 (%struct.net_device*, %struct.neigh_parms*)*, i32 (%struct.net_device*, %struct.dst_entry*)*, %struct.module*, %struct.net_bridge_port* }
- %struct.net_device_stats = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
- %struct.nf_conntrack = type { %struct.IO_APIC_reg_00, void (%struct.nf_conntrack*)* }
- %struct.nf_ct_info = type { %struct.nf_conntrack* }
- %struct.nfs_fh = type { i16, [64 x i8] }
- %struct.nfs_inode_info = type { i64, %struct.nfs_fh, i16, i32, i64, i64, i64, i32, i32, i32, [2 x i32], %struct.list_head, %struct.list_head, %struct.list_head, %struct.list_head, i32, i32, i32, i32, %struct.rpc_cred* }
- %struct.nfs_lock_info = type { i32, i32, %struct.nlm_host* }
- %struct.nlm_host = type opaque
- %struct.open_request = type { %struct.open_request*, i32, i32, i16, i16, i8, i8, i16, i32, i32, i32, i32, %struct.or_calltable*, %struct.sock*, { %struct.tcp_v4_open_req } }
- %struct.or_calltable = type { i32, i32 (%struct.sock*, %struct.open_request*, %struct.dst_entry*)*, void (%struct.sk_buff*, %struct.open_request*)*, void (%struct.open_request*)*, void (%struct.sk_buff*)* }
- %struct.page = type { %struct.list_head, %struct.address_space*, i32, %struct.page*, %struct.IO_APIC_reg_00, i32, %struct.list_head, %struct.page**, %struct.buffer_head* }
- %struct.pci_bus = type { %struct.list_head, %struct.pci_bus*, %struct.list_head, %struct.list_head, %struct.pci_dev*, [4 x %struct.resource*], %struct.pci_ops*, i8*, %struct.proc_dir_entry*, i8, i8, i8, i8, [48 x i8], i16, i16, i32, i8, i8, i8, i8 }
- %struct.pci_dev = type { %struct.list_head, %struct.list_head, %struct.pci_bus*, %struct.pci_bus*, i8*, %struct.proc_dir_entry*, i32, i16, i16, i16, i16, i32, i8, i8, %struct.pci_driver*, i8*, i64, i32, [4 x i16], [4 x i16], i32, [12 x %struct.resource], [2 x %struct.resource], [2 x %struct.resource], [90 x i8], [8 x i8], i32, i32, i16, i16, i32 (%struct.pci_dev*)*, i32 (%struct.pci_dev*)*, i32 (%struct.pci_dev*)* }
- %struct.pci_device_id = type { i32, i32, i32, i32, i32, i32, i32 }
- %struct.pci_driver = type { %struct.list_head, i8*, %struct.pci_device_id*, i32 (%struct.pci_dev*, %struct.pci_device_id*)*, void (%struct.pci_dev*)*, i32 (%struct.pci_dev*, i32)*, i32 (%struct.pci_dev*, i32)*, i32 (%struct.pci_dev*)*, i32 (%struct.pci_dev*, i32, i32)* }
- %struct.pci_ops = type { i32 (%struct.pci_dev*, i32, i8*)*, i32 (%struct.pci_dev*, i32, i16*)*, i32 (%struct.pci_dev*, i32, i32*)*, i32 (%struct.pci_dev*, i32, i8)*, i32 (%struct.pci_dev*, i32, i16)*, i32 (%struct.pci_dev*, i32, i32)* }
- %struct.pipe_inode_info = type { %struct.__wait_queue_head, i8*, i32, i32, i32, i32, i32, i32, i32, i32 }
- %struct.pneigh_entry = type { %struct.pneigh_entry*, %struct.net_device*, [0 x i8] }
- %struct.poll_table_entry = type { %struct.file*, %struct.__wait_queue, %struct.__wait_queue_head* }
- %struct.poll_table_page = type { %struct.poll_table_page*, %struct.poll_table_entry*, [0 x %struct.poll_table_entry] }
- %struct.poll_table_struct = type { i32, %struct.poll_table_page* }
- %struct.proc_dir_entry = type { i16, i16, i8*, i16, i16, i32, i32, i32, %struct.inode_operations*, %struct.file_operations*, i32 (i8*, i8**, i32, i32)*, %struct.module*, %struct.proc_dir_entry*, %struct.proc_dir_entry*, %struct.proc_dir_entry*, i8*, i32 (i8*, i8**, i32, i32, i32*, i8*)*, i32 (%struct.file*, i8*, i32, i8*)*, %struct.IO_APIC_reg_00, i32, i16 }
- %struct.proc_inode_info = type { %struct.task_struct*, i32, { i32 (%struct.task_struct*, i8*)* }, %struct.file* }
- %struct.proto = type { void (%struct.sock*, i32)*, i32 (%struct.sock*, %struct.sockaddr*, i32)*, i32 (%struct.sock*, i32)*, %struct.sock* (%struct.sock*, i32, i32*)*, i32 (%struct.sock*, i32, i32)*, i32 (%struct.sock*)*, i32 (%struct.sock*)*, void (%struct.sock*, i32)*, i32 (%struct.sock*, i32, i32, i8*, i32)*, i32 (%struct.sock*, i32, i32, i8*, i32*)*, i32 (%struct.sock*, %struct.msghdr*, i32)*, i32 (%struct.sock*, %struct.msghdr*, i32, i32, i32, i32*)*, i32 (%struct.sock*, %struct.sockaddr*, i32)*, i32 (%struct.sock*, %struct.sk_buff*)*, void (%struct.sock*)*, void (%struct.sock*)*, i32 (%struct.sock*, i16)*, [32 x i8], [32 x { i32, [28 x i8] }] }
- %struct.proto_ops = type { i32, i32 (%struct.socket*)*, i32 (%struct.socket*, %struct.sockaddr*, i32)*, i32 (%struct.socket*, %struct.sockaddr*, i32, i32)*, i32 (%struct.socket*, %struct.socket*)*, i32 (%struct.socket*, %struct.socket*, i32)*, i32 (%struct.socket*, %struct.sockaddr*, i32*, i32)*, i32 (%struct.file*, %struct.socket*, %struct.poll_table_struct*)*, i32 (%struct.socket*, i32, i32)*, i32 (%struct.socket*, i32)*, i32 (%struct.socket*, i32)*, i32 (%struct.socket*, i32, i32, i8*, i32)*, i32 (%struct.socket*, i32, i32, i8*, i32*)*, i32 (%struct.socket*, %struct.msghdr*, i32, %struct.scm_cookie*)*, i32 (%struct.socket*, %struct.msghdr*, i32, i32, %struct.scm_cookie*)*, i32 (%struct.file*, %struct.socket*, %struct.vm_area_struct*)*, i32 (%struct.socket*, %struct.page*, i32, i32, i32)* }
- %struct.pt_regs = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
- %struct.qdisc_walker = type { i32, i32, i32, i32 (%struct.Qdisc*, i32, %struct.qdisc_walker*)* }
- %struct.qstr = type { i8*, i32, i32 }
- %struct.quota_format_ops = type { i32 (%struct.super_block*, i32)*, i32 (%struct.super_block*, i32)*, i32 (%struct.super_block*, i32)*, i32 (%struct.super_block*, i32)*, i32 (%struct.dquot*)*, i32 (%struct.dquot*)* }
- %struct.quota_format_type = type { i32, %struct.quota_format_ops*, %struct.module*, %struct.quota_format_type* }
- %struct.quota_info = type { i32, %struct.semaphore, %struct.semaphore, [2 x %struct.file*], [2 x %struct.mem_dqinfo], [2 x %struct.quota_format_ops*] }
- %struct.quotactl_ops = type { i32 (%struct.super_block*, i32, i32, i8*)*, i32 (%struct.super_block*, i32)*, i32 (%struct.super_block*, i32)*, i32 (%struct.super_block*, i32, %struct.if_dqinfo*)*, i32 (%struct.super_block*, i32, %struct.if_dqinfo*)*, i32 (%struct.super_block*, i32, i32, %struct.if_dqblk*)*, i32 (%struct.super_block*, i32, i32, %struct.if_dqblk*)*, i32 (%struct.super_block*, %struct.fs_quota_stat*)*, i32 (%struct.super_block*, i32, i32)*, i32 (%struct.super_block*, i32, i32, %struct.fs_disk_quota*)*, i32 (%struct.super_block*, i32, i32, %struct.fs_disk_quota*)* }
- %struct.rb_node_s = type { %struct.rb_node_s*, i32, %struct.rb_node_s*, %struct.rb_node_s* }
- %struct.rb_root_s = type { %struct.rb_node_s* }
- %struct.resource = type { i8*, i32, i32, i32, %struct.resource*, %struct.resource*, %struct.resource* }
- %struct.revectored_struct = type { [8 x i32] }
- %struct.rpc_auth = type { [8 x %struct.rpc_cred*], i32, i32, i32, i32, i32, %struct.rpc_authops* }
- %struct.rpc_authops = type { i32, i8*, %struct.rpc_auth* (%struct.rpc_clnt*)*, void (%struct.rpc_auth*)*, %struct.rpc_cred* (i32)* }
- %struct.rpc_clnt = type { %struct.IO_APIC_reg_00, %struct.rpc_xprt*, %struct.rpc_procinfo*, i32, i8*, i8*, %struct.rpc_auth*, %struct.rpc_stat*, i32, i32, i32, %struct.rpc_rtt, %struct.msq_setbuf, %struct.rpc_wait_queue, i32, [32 x i8] }
- %struct.rpc_cred = type { %struct.rpc_cred*, %struct.rpc_auth*, %struct.rpc_credops*, i32, %struct.IO_APIC_reg_00, i16, i32, i32 }
- %struct.rpc_credops = type { void (%struct.rpc_cred*)*, i32 (%struct.rpc_cred*, i32)*, i32* (%struct.rpc_task*, i32*, i32)*, i32 (%struct.rpc_task*)*, i32* (%struct.rpc_task*, i32*)* }
- %struct.rpc_message = type { i32, i8*, i8*, %struct.rpc_cred* }
- %struct.rpc_procinfo = type { i8*, i32 (i8*, i32*, i8*)*, i32 (i8*, i32*, i8*)*, i32, i32, i32 }
- %struct.rpc_program = type { i8*, i32, i32, %struct.rpc_version**, %struct.rpc_stat* }
- %struct.rpc_rqst = type { %struct.rpc_xprt*, %struct.rpc_timeout, %struct.xdr_buf, %struct.xdr_buf, %struct.rpc_task*, i32, %struct.rpc_rqst*, i32, i32, %struct.list_head, %struct.xdr_buf, [2 x i32], i32, i32, i32, i32 }
- %struct.rpc_rtt = type { i32, [5 x i32], [5 x i32], %struct.IO_APIC_reg_00 }
- %struct.rpc_stat = type { %struct.rpc_program*, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
- %struct.rpc_task = type { %struct.list_head, i32, %struct.list_head, %struct.rpc_clnt*, %struct.rpc_rqst*, i32, %struct.rpc_wait_queue*, %struct.rpc_message, i32*, i8, i8, i8, void (%struct.rpc_task*)*, void (%struct.rpc_task*)*, void (%struct.rpc_task*)*, void (%struct.rpc_task*)*, void (%struct.rpc_task*)*, i8*, %struct.timer_list, %struct.__wait_queue_head, i32, i16, i8, i32, i16 }
- %struct.rpc_timeout = type { i32, i32, i32, i32, i16, i8 }
- %struct.rpc_version = type { i32, i32, %struct.rpc_procinfo* }
- %struct.rpc_wait_queue = type { %struct.list_head, i8* }
- %struct.rpc_xprt = type { %struct.socket*, %struct.sock*, %struct.rpc_timeout, %struct.sockaddr_in, i32, i32, i32, i32, i32, %struct.rpc_wait_queue, %struct.rpc_wait_queue, %struct.rpc_wait_queue, %struct.rpc_wait_queue, %struct.rpc_rqst*, [16 x %struct.rpc_rqst], i32, i8, i32, i32, i32, i32, i32, i32, %struct.IO_APIC_reg_00, %struct.IO_APIC_reg_00, %struct.rpc_task*, %struct.list_head, void (%struct.sock*, i32)*, void (%struct.sock*)*, void (%struct.sock*)*, %struct.__wait_queue_head }
- %struct.rw_semaphore = type { i32, %struct.IO_APIC_reg_00, %struct.list_head }
- %struct.scm_cookie = type { %struct.ViceFid, %struct.scm_fp_list*, i32 }
- %struct.scm_fp_list = type { i32, [255 x %struct.file*] }
- %struct.sem_array = type { %struct.kern_ipc_perm, i32, i32, %struct._drm_i810_overlay_t*, %struct.sem_queue*, %struct.sem_queue**, %struct.sem_undo*, i32 }
- %struct.sem_queue = type { %struct.sem_queue*, %struct.sem_queue**, %struct.task_struct*, %struct.sem_undo*, i32, i32, %struct.sem_array*, i32, %struct.sembuf*, i32, i32 }
- %struct.sem_undo = type { %struct.sem_undo*, %struct.sem_undo*, i32, i16* }
- %struct.semaphore = type { %struct.IO_APIC_reg_00, i32, %struct.__wait_queue_head }
- %struct.sembuf = type { i16, i16, i16 }
- %struct.seq_file = type { i8*, i32, i32, i32, i64, %struct.semaphore, %struct.seq_operations*, i8* }
- %struct.seq_operations = type { i8* (%struct.seq_file*, i64*)*, void (%struct.seq_file*, i8*)*, i8* (%struct.seq_file*, i8*, i64*)*, i32 (%struct.seq_file*, i8*)* }
- %struct.shmem_inode_info = type { %struct.IO_APIC_reg_00, i32, [16 x %struct.IO_APIC_reg_00], i8**, i32, i32, %struct.list_head, %struct.inode* }
- %struct.sigaction = type { void (i32)*, i32, void ()*, %typedef.__kernel_fsid_t }
- %struct.siginfo = type { i32, i32, i32, { [29 x i32] } }
- %struct.signal_struct = type { %struct.IO_APIC_reg_00, [64 x %struct.k_sigaction], %struct.IO_APIC_reg_00 }
- %struct.sigpending = type { %struct.sigqueue*, %struct.sigqueue**, %typedef.__kernel_fsid_t }
- %struct.sigqueue = type { %struct.sigqueue*, %struct.siginfo }
- %struct.sk_buff = type { %struct.sk_buff*, %struct.sk_buff*, %struct.sk_buff_head*, %struct.sock*, %struct._drm_i810_overlay_t, %struct.net_device*, %struct.net_device*, { i8* }, { i8* }, { i8* }, %struct.dst_entry*, [48 x i8], i32, i32, i32, i8, i8, i8, i8, i32, %struct.IO_APIC_reg_00, i16, i16, i32, i8*, i8*, i8*, i8*, void (%struct.sk_buff*)*, i32, i32, %struct.nf_ct_info*, i32 }
- %struct.sk_buff_head = type { %struct.sk_buff*, %struct.sk_buff*, i32, %struct.IO_APIC_reg_00 }
- %struct.sock = type { i32, i32, i16, i16, i32, %struct.sock*, %struct.sock**, %struct.sock*, %struct.sock**, i8, i8, i16, i16, i8, i8, %struct.IO_APIC_reg_00, %struct.semaphore, i32, %struct.__wait_queue_head*, %struct.dst_entry*, %typedef.rwlock_t, %struct.IO_APIC_reg_00, %struct.sk_buff_head, %struct.IO_APIC_reg_00, %struct.sk_buff_head, %struct.IO_APIC_reg_00, i32, i32, i32, i32, i32, %struct.sock*, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, %struct.sock*, { %struct.sk_buff*, %struct.sk_buff* }, %typedef.rwlock_t, %struct.sk_buff_head, %struct.proto*, { %struct.tcp_opt }, i32, i32, i16, i16, i32, i16, i8, i8, %struct.ViceFid, i32, i32, i32, { %struct.unix_opt }, %struct.timer_list, %struct._drm_i810_overlay_t, %struct.socket*, i8*, void (%struct.sock*)*, void (%struct.sock*, i32)*, void (%struct.sock*)*, void (%struct.sock*)*, i32 (%struct.sock*, %struct.sk_buff*)*, void (%struct.sock*)* }
- %struct.sockaddr = type { i16, [14 x i8] }
- %struct.sockaddr_in = type { i16, i16, %struct.IO_APIC_reg_00, [8 x i8] }
- %struct.sockaddr_un = type { i16, [108 x i8] }
- %struct.socket = type { i32, i32, %struct.proto_ops*, %struct.inode*, %struct.fasync_struct*, %struct.file*, %struct.sock*, %struct.__wait_queue_head, i16, i8 }
- %struct.statfs = type { i32, i32, i32, i32, i32, i32, i32, %typedef.__kernel_fsid_t, i32, [6 x i32] }
- %struct.super_block = type { %struct.list_head, i16, i32, i8, i8, i64, %struct.file_system_type*, %struct.super_operations*, %struct.dquot_operations*, %struct.quotactl_ops*, i32, i32, %struct.dentry*, %struct.rw_semaphore, %struct.semaphore, i32, %struct.IO_APIC_reg_00, %struct.list_head, %struct.list_head, %struct.list_head, %struct.block_device*, %struct.list_head, %struct.quota_info, { [115 x i32] }, %struct.semaphore, %struct.semaphore }
- %struct.super_operations = type { %struct.inode* (%struct.super_block*)*, void (%struct.inode*)*, void (%struct.inode*)*, void (%struct.inode*, i8*)*, void (%struct.inode*)*, void (%struct.inode*, i32)*, void (%struct.inode*)*, void (%struct.inode*)*, void (%struct.super_block*)*, void (%struct.super_block*)*, i32 (%struct.super_block*)*, void (%struct.super_block*)*, void (%struct.super_block*)*, i32 (%struct.super_block*, %struct.statfs*)*, i32 (%struct.super_block*, i32*, i8*)*, void (%struct.inode*)*, void (%struct.super_block*)*, %struct.dentry* (%struct.super_block*, i32*, i32, i32, i32)*, i32 (%struct.dentry*, i32*, i32*, i32)*, i32 (%struct.seq_file*, %struct.vfsmount*)* }
- %struct.task_struct = type { i32, i32, i32, %struct.IO_APIC_reg_00, %struct.exec_domain*, i32, i32, i32, i32, i32, i32, %struct.mm_struct*, i32, i32, i32, %struct.list_head, i32, %struct.task_struct*, %struct.task_struct*, %struct.mm_struct*, %struct.list_head, i32, i32, %struct.linux_binfmt*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.task_struct*, %struct.task_struct*, %struct.task_struct*, %struct.task_struct*, %struct.task_struct*, %struct.list_head, %struct.task_struct*, %struct.task_struct**, %struct.__wait_queue_head, %struct.completion*, i32, i32, i32, i32, i32, i32, i32, %struct.timer_list, %struct.audio_buf_info, i32, [32 x i32], [32 x i32], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [32 x i32], i32, i32, i32, i32, %struct.user_struct*, [11 x %struct._drm_i810_overlay_t], i16, [16 x i8], i32, i32, %struct.tty_struct*, i32, %struct.sem_undo*, %struct.sem_queue*, %struct.thread_struct, %struct.fs_struct*, %struct.files_struct*, %struct.namespace*, %struct.IO_APIC_reg_00, %struct.signal_struct*, %typedef.__kernel_fsid_t, %struct.sigpending, i32, i32, i32 (i8*)*, i8*, %typedef.__kernel_fsid_t*, i32, i32, %struct.IO_APIC_reg_00, i8*, %struct.llva_sigcontext*, i32, %struct.task_struct*, i32, %typedef.llva_icontext_t, %typedef.llva_fp_state_t, i32*, i32, i8* }
- %struct.tasklet_struct = type { %struct.tasklet_struct*, i32, %struct.IO_APIC_reg_00, void (i32)*, i32 }
- %struct.tc_stats = type { i64, i32, i32, i32, i32, i32, i32, i32, %struct.IO_APIC_reg_00* }
- %struct.tcf_proto = type { %struct.tcf_proto*, i8*, i32 (%struct.sk_buff*, %struct.tcf_proto*, %struct._drm_i810_overlay_t*)*, i32, i32, i32, %struct.Qdisc*, i8*, %struct.tcf_proto_ops* }
- %struct.tcf_proto_ops = type { %struct.tcf_proto_ops*, [16 x i8], i32 (%struct.sk_buff*, %struct.tcf_proto*, %struct._drm_i810_overlay_t*)*, i32 (%struct.tcf_proto*)*, void (%struct.tcf_proto*)*, i32 (%struct.tcf_proto*, i32)*, void (%struct.tcf_proto*, i32)*, i32 (%struct.tcf_proto*, i32, i32, %struct._agp_version**, i32*)*, i32 (%struct.tcf_proto*, i32)*, void (%struct.tcf_proto*, %struct.tcf_walker*)*, i32 (%struct.tcf_proto*, i32, %struct.sk_buff*, %struct.tcmsg*)* }
- %struct.tcf_walker = type { i32, i32, i32, i32 (%struct.tcf_proto*, i32, %struct.tcf_walker*)* }
- %struct.tcmsg = type { i8, i8, i16, i32, i32, i32, i32 }
- %struct.tcp_func = type { i32 (%struct.sk_buff*)*, void (%struct.sock*, %struct.tcphdr*, i32, %struct.sk_buff*)*, i32 (%struct.sock*)*, i32 (%struct.sock*, %struct.sk_buff*)*, %struct.sock* (%struct.sock*, %struct.sk_buff*, %struct.open_request*, %struct.dst_entry*)*, i32 (%struct.sock*)*, i16, i32 (%struct.sock*, i32, i32, i8*, i32)*, i32 (%struct.sock*, i32, i32, i8*, i32*)*, void (%struct.sock*, %struct.sockaddr*)*, i32 }
- %struct.tcp_listen_opt = type { i8, i32, i32, i32, i32, [512 x %struct.open_request*] }
- %struct.tcp_opt = type { i32, i32, i32, i32, i32, i32, i32, i32, { i8, i8, i8, i8, i32, i32, i32, i16, i16 }, { %struct.sk_buff_head, %struct.task_struct*, %struct.iovec*, i32, i32 }, i32, i32, i32, i32, i16, i16, i16, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i16, i16, i32, i32, i32, %struct.timer_list, %struct.timer_list, %struct.sk_buff_head, %struct.tcp_func*, %struct.sk_buff*, %struct.page*, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, i16, i8, i8, [1 x %struct._drm_i810_overlay_t], [4 x %struct._drm_i810_overlay_t], i32, i32, i8, i8, i16, i8, i8, i16, i32, i32, i32, i32, i32, i32, i32, i32, i16, i8, i8, i32, %typedef.rwlock_t, %struct.tcp_listen_opt*, %struct.open_request*, %struct.open_request*, i32, i32, i32, i32, i32, i32, i32 }
- %struct.tcp_v4_open_req = type { i32, i32, %struct.ip_options* }
- %struct.tcphdr = type { i16, i16, i32, i32, i16, i16, i16, i16 }
- %struct.termios = type { i32, i32, i32, i32, i8, [19 x i8] }
- %struct.thread_struct = type { i32, i32, i32, i32, i32, [8 x i32], i32, i32, i32, %union.i387_union, %struct.vm86_struct*, i32, i32, i32, i32, i32, [33 x i32] }
- %struct.timer_list = type { %struct.list_head, i32, i32, void (i32)* }
- %struct.tq_struct = type { %struct.list_head, i32, void (i8*)*, i8* }
- %struct.tty_driver = type { i32, i8*, i8*, i32, i16, i16, i16, i16, i16, %struct.termios, i32, i32*, %struct.proc_dir_entry*, %struct.tty_driver*, %struct.tty_struct**, %struct.termios**, %struct.termios**, i8*, i32 (%struct.tty_struct*, %struct.file*)*, void (%struct.tty_struct*, %struct.file*)*, i32 (%struct.tty_struct*, i32, i8*, i32)*, void (%struct.tty_struct*, i8)*, void (%struct.tty_struct*)*, i32 (%struct.tty_struct*)*, i32 (%struct.tty_struct*)*, i32 (%struct.tty_struct*, %struct.file*, i32, i32)*, void (%struct.tty_struct*, %struct.termios*)*, void (%struct.tty_struct*)*, void (%struct.tty_struct*)*, void (%struct.tty_struct*)*, void (%struct.tty_struct*)*, void (%struct.tty_struct*)*, void (%struct.tty_struct*, i32)*, void (%struct.tty_struct*)*, void (%struct.tty_struct*)*, void (%struct.tty_struct*, i32)*, void (%struct.tty_struct*, i8)*, i32 (i8*, i8**, i32, i32, i32*, i8*)*, i32 (%struct.file*, i8*, i32, i8*)*, %struct.tty_driver*, %struct.tty_driver* }
- %struct.tty_flip_buffer = type { %struct.tq_struct, %struct.semaphore, i8*, i8*, i32, i32, [1024 x i8], [1024 x i8], [4 x i8] }
- %struct.tty_ldisc = type { i32, i8*, i32, i32, i32 (%struct.tty_struct*)*, void (%struct.tty_struct*)*, void (%struct.tty_struct*)*, i32 (%struct.tty_struct*)*, i32 (%struct.tty_struct*, %struct.file*, i8*, i32)*, i32 (%struct.tty_struct*, %struct.file*, i8*, i32)*, i32 (%struct.tty_struct*, %struct.file*, i32, i32)*, void (%struct.tty_struct*, %struct.termios*)*, i32 (%struct.tty_struct*, %struct.file*, %struct.poll_table_struct*)*, void (%struct.tty_struct*, i8*, i8*, i32)*, i32 (%struct.tty_struct*)*, void (%struct.tty_struct*)* }
- %struct.tty_struct = type { i32, %struct.tty_driver, %struct.tty_ldisc, %struct.termios*, %struct.termios*, i32, i32, i16, i32, i32, %struct.drm_clip_rect, i8, i8, %struct.tty_struct*, %struct.fasync_struct*, %struct.tty_flip_buffer, i32, i32, %struct.__wait_queue_head, %struct.__wait_queue_head, %struct.tq_struct, i8*, i8*, %struct.list_head, i32, i8, i16, i32, i32, [8 x i32], i8*, i32, i32, i32, [128 x i32], i32, i32, i32, %struct.semaphore, %struct.semaphore, %struct.IO_APIC_reg_00, %struct.tq_struct }
- %struct.unix_address = type { %struct.IO_APIC_reg_00, i32, i32, [0 x %struct.sockaddr_un] }
- %struct.unix_opt = type { %struct.unix_address*, %struct.dentry*, %struct.vfsmount*, %struct.semaphore, %struct.sock*, %struct.sock**, %struct.sock*, %struct.IO_APIC_reg_00, %typedef.rwlock_t, %struct.__wait_queue_head }
- %struct.usb_bus = type opaque
- %struct.usbdev_inode_info = type { %struct.list_head, %struct.list_head, { %struct.usb_bus* } }
- %struct.user_struct = type { %struct.IO_APIC_reg_00, %struct.IO_APIC_reg_00, %struct.IO_APIC_reg_00, %struct.user_struct*, %struct.user_struct**, i32 }
- %struct.vfsmount = type { %struct.list_head, %struct.vfsmount*, %struct.dentry*, %struct.dentry*, %struct.super_block*, %struct.list_head, %struct.list_head, %struct.IO_APIC_reg_00, i32, i8*, %struct.list_head }
- %struct.vlan_group = type opaque
- %struct.vm86_regs = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i16, i16, i32, i32, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16 }
- %struct.vm86_struct = type { %struct.vm86_regs, i32, i32, i32, %struct.revectored_struct, %struct.revectored_struct }
- %struct.vm_area_struct = type { %struct.mm_struct*, i32, i32, %struct.vm_area_struct*, %struct.IO_APIC_reg_00, i32, %struct.rb_node_s, %struct.vm_area_struct*, %struct.vm_area_struct**, %struct.vm_operations_struct*, i32, %struct.file*, i32, i8* }
- %struct.vm_operations_struct = type { void (%struct.vm_area_struct*)*, void (%struct.vm_area_struct*)*, %struct.page* (%struct.vm_area_struct*, i32, i32)* }
- %struct.xdr_buf = type { [1 x %struct.iovec], [1 x %struct.iovec], %struct.page**, i32, i32, i32 }
- %typedef.__kernel_fd_set = type { [32 x i32] }
- %typedef.__kernel_fsid_t = type { [2 x i32] }
- %typedef.dvd_authinfo = type { [2 x i64] }
- %typedef.llva_fp_state_t = type { [7 x i32], [20 x i32] }
- %typedef.llva_icontext_t = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32*, i32 }
- %typedef.rwlock_t = type { %struct.IO_APIC_reg_00, %struct.IO_APIC_reg_00, i32 }
- %typedef.sigset_t = type { [2 x i32] }
- %typedef.socket_lock_t = type { %struct.IO_APIC_reg_00, i32, %struct.__wait_queue_head }
- %union.i387_union = type { %struct.i387_fxsave_struct }
-
-define void @rs_init() {
-entry:
- br i1 false, label %loopentry.0.no_exit.0_crit_edge, label %loopentry.0.loopexit.0_crit_edge
-
-loopentry.0: ; No predecessors!
- unreachable
-
-loopentry.0.loopexit.0_crit_edge: ; preds = %entry
- br label %loopexit.0
-
-loopentry.0.no_exit.0_crit_edge: ; preds = %entry
- br label %no_exit.0
-
-no_exit.0: ; preds = %no_exit.0.no_exit.0_crit_edge, %loopentry.0.no_exit.0_crit_edge
- br i1 false, label %no_exit.0.no_exit.0_crit_edge, label %no_exit.0.loopexit.0_crit_edge
-
-no_exit.0.loopexit.0_crit_edge: ; preds = %no_exit.0
- br label %loopexit.0
-
-no_exit.0.no_exit.0_crit_edge: ; preds = %no_exit.0
- br label %no_exit.0
-
-loopexit.0: ; preds = %no_exit.0.loopexit.0_crit_edge, %loopentry.0.loopexit.0_crit_edge
- br i1 false, label %then.0, label %loopexit.0.endif.0_crit_edge
-
-loopexit.0.endif.0_crit_edge: ; preds = %loopexit.0
- br label %endif.0
-
-then.0: ; preds = %loopexit.0
- br i1 false, label %loopentry.1.no_exit.1_crit_edge, label %loopentry.1.loopexit.1_crit_edge
-
-loopentry.1: ; No predecessors!
- unreachable
-
-loopentry.1.loopexit.1_crit_edge: ; preds = %then.0
- br label %loopexit.1
-
-loopentry.1.no_exit.1_crit_edge: ; preds = %then.0
- br label %no_exit.1
-
-no_exit.1: ; preds = %no_exit.1.backedge, %loopentry.1.no_exit.1_crit_edge
- br i1 false, label %shortcirc_next.0, label %no_exit.1.shortcirc_done.0_crit_edge
-
-no_exit.1.shortcirc_done.0_crit_edge: ; preds = %no_exit.1
- br label %shortcirc_done.0
-
-shortcirc_next.0: ; preds = %no_exit.1
- br label %shortcirc_done.0
-
-shortcirc_done.0: ; preds = %shortcirc_next.0, %no_exit.1.shortcirc_done.0_crit_edge
- br i1 false, label %then.1, label %endif.1
-
-then.1: ; preds = %shortcirc_done.0
- br i1 false, label %then.1.no_exit.1_crit_edge, label %then.1.loopexit.1_crit_edge
-
-then.1.loopexit.1_crit_edge: ; preds = %then.1
- br label %loopexit.1
-
-then.1.no_exit.1_crit_edge: ; preds = %then.1
- br label %no_exit.1.backedge
-
-no_exit.1.backedge: ; preds = %endif.1.no_exit.1_crit_edge, %then.1.no_exit.1_crit_edge
- br label %no_exit.1
-
-endif.1: ; preds = %shortcirc_done.0
- br i1 false, label %endif.1.no_exit.1_crit_edge, label %endif.1.loopexit.1_crit_edge
-
-endif.1.loopexit.1_crit_edge: ; preds = %endif.1
- br label %loopexit.1
-
-endif.1.no_exit.1_crit_edge: ; preds = %endif.1
- br label %no_exit.1.backedge
-
-loopexit.1: ; preds = %endif.1.loopexit.1_crit_edge, %then.1.loopexit.1_crit_edge, %loopentry.1.loopexit.1_crit_edge
- br label %endif.0
-
-endif.0: ; preds = %loopexit.1, %loopexit.0.endif.0_crit_edge
- br i1 false, label %then.2, label %endif.0.endif.2_crit_edge
-
-endif.0.endif.2_crit_edge: ; preds = %endif.0
- br label %endif.2
-
-then.2: ; preds = %endif.0
- unreachable
-
-dead_block.0: ; No predecessors!
- br label %endif.2
-
-endif.2: ; preds = %dead_block.0, %endif.0.endif.2_crit_edge
- br i1 false, label %then.3, label %endif.2.endif.3_crit_edge
-
-endif.2.endif.3_crit_edge: ; preds = %endif.2
- br label %endif.3
-
-then.3: ; preds = %endif.2
- unreachable
-
-dead_block.1: ; No predecessors!
- br label %endif.3
-
-endif.3: ; preds = %dead_block.1, %endif.2.endif.3_crit_edge
- br label %loopentry.2
-
-loopentry.2: ; preds = %endif.6, %endif.3
- br i1 false, label %loopentry.2.no_exit.2_crit_edge, label %loopentry.2.loopexit.2_crit_edge
-
-loopentry.2.loopexit.2_crit_edge: ; preds = %loopentry.2
- br label %loopexit.2
-
-loopentry.2.no_exit.2_crit_edge: ; preds = %loopentry.2
- br label %no_exit.2
-
-no_exit.2: ; preds = %then.5.no_exit.2_crit_edge, %loopentry.2.no_exit.2_crit_edge
- br i1 false, label %then.4, label %no_exit.2.endif.4_crit_edge
-
-no_exit.2.endif.4_crit_edge: ; preds = %no_exit.2
- br label %endif.4
-
-then.4: ; preds = %no_exit.2
- br label %endif.4
-
-endif.4: ; preds = %then.4, %no_exit.2.endif.4_crit_edge
- br i1 false, label %shortcirc_next.1, label %endif.4.shortcirc_done.1_crit_edge
-
-endif.4.shortcirc_done.1_crit_edge: ; preds = %endif.4
- br label %shortcirc_done.1
-
-shortcirc_next.1: ; preds = %endif.4
- br i1 false, label %then.i21, label %endif.i
-
-then.i21: ; preds = %shortcirc_next.1
- br label %then.5
-
-then.i21.endif.5_crit_edge: ; No predecessors!
- unreachable
-
-then.i21.then.5_crit_edge: ; No predecessors!
- unreachable
-
-endif.i: ; preds = %shortcirc_next.1
- br label %shortcirc_done.1
-
-__check_region.exit: ; No predecessors!
- unreachable
-
-shortcirc_done.1: ; preds = %endif.i, %endif.4.shortcirc_done.1_crit_edge
- br i1 false, label %shortcirc_done.1.then.5_crit_edge, label %shortcirc_done.1.endif.5_crit_edge
-
-shortcirc_done.1.endif.5_crit_edge: ; preds = %shortcirc_done.1
- br label %endif.5
-
-shortcirc_done.1.then.5_crit_edge: ; preds = %shortcirc_done.1
- br label %then.5
-
-then.5: ; preds = %shortcirc_done.1.then.5_crit_edge, %then.i21
- br i1 false, label %then.5.no_exit.2_crit_edge, label %then.5.loopexit.2_crit_edge
-
-then.5.loopexit.2_crit_edge: ; preds = %then.5
- br label %loopexit.2
-
-then.5.no_exit.2_crit_edge: ; preds = %then.5
- br label %no_exit.2
-
-dead_block_after_continue.0: ; No predecessors!
- unreachable
-
-endif.5: ; preds = %shortcirc_done.1.endif.5_crit_edge
- br i1 false, label %then.6, label %endif.5.endif.6_crit_edge
-
-endif.5.endif.6_crit_edge: ; preds = %endif.5
- br label %endif.6
-
-then.6: ; preds = %endif.5
- br label %endif.6
-
-endif.6: ; preds = %then.6, %endif.5.endif.6_crit_edge
- br label %loopentry.2
-
-loopcont.2: ; No predecessors!
- unreachable
-
-loopexit.2: ; preds = %then.5.loopexit.2_crit_edge, %loopentry.2.loopexit.2_crit_edge
- br label %loopentry.3
-
-loopentry.3: ; preds = %endif.9, %loopexit.2
- br i1 false, label %loopentry.3.no_exit.3_crit_edge, label %loopentry.3.loopexit.3_crit_edge
-
-loopentry.3.loopexit.3_crit_edge: ; preds = %loopentry.3
- br label %loopexit.3
-
-loopentry.3.no_exit.3_crit_edge: ; preds = %loopentry.3
- br label %no_exit.3
-
-no_exit.3: ; preds = %then.7.no_exit.3_crit_edge, %loopentry.3.no_exit.3_crit_edge
- br i1 false, label %then.7, label %no_exit.3.endif.7_crit_edge
-
-no_exit.3.endif.7_crit_edge: ; preds = %no_exit.3
- br label %endif.7
-
-then.7: ; preds = %no_exit.3
- br i1 false, label %then.7.no_exit.3_crit_edge, label %then.7.loopexit.3_crit_edge
-
-then.7.loopexit.3_crit_edge: ; preds = %then.7
- br label %loopexit.3
-
-then.7.no_exit.3_crit_edge: ; preds = %then.7
- br label %no_exit.3
-
-dead_block_after_continue.1: ; No predecessors!
- unreachable
-
-endif.7: ; preds = %no_exit.3.endif.7_crit_edge
- br i1 false, label %shortcirc_next.2, label %endif.7.shortcirc_done.2_crit_edge
-
-endif.7.shortcirc_done.2_crit_edge: ; preds = %endif.7
- br label %shortcirc_done.2
-
-shortcirc_next.2: ; preds = %endif.7
- br label %shortcirc_done.2
-
-shortcirc_done.2: ; preds = %shortcirc_next.2, %endif.7.shortcirc_done.2_crit_edge
- br i1 false, label %shortcirc_next.3, label %shortcirc_done.2.shortcirc_done.3_crit_edge
-
-shortcirc_done.2.shortcirc_done.3_crit_edge: ; preds = %shortcirc_done.2
- br label %shortcirc_done.3
-
-shortcirc_next.3: ; preds = %shortcirc_done.2
- br i1 false, label %shortcirc_next.3.shortcirc_done.4_crit_edge, label %shortcirc_next.4
-
-shortcirc_next.3.shortcirc_done.4_crit_edge: ; preds = %shortcirc_next.3
- br label %shortcirc_done.4
-
-shortcirc_next.4: ; preds = %shortcirc_next.3
- br label %shortcirc_done.4
-
-shortcirc_done.4: ; preds = %shortcirc_next.4, %shortcirc_next.3.shortcirc_done.4_crit_edge
- br label %shortcirc_done.3
-
-shortcirc_done.3: ; preds = %shortcirc_done.4, %shortcirc_done.2.shortcirc_done.3_crit_edge
- br i1 false, label %then.8, label %shortcirc_done.3.endif.8_crit_edge
-
-shortcirc_done.3.endif.8_crit_edge: ; preds = %shortcirc_done.3
- br label %endif.8
-
-then.8: ; preds = %shortcirc_done.3
- br label %endif.8
-
-endif.8: ; preds = %then.8, %shortcirc_done.3.endif.8_crit_edge
- br i1 false, label %then.9, label %else
-
-then.9: ; preds = %endif.8
- br i1 false, label %cond_true.0, label %cond_false.0
-
-cond_true.0: ; preds = %then.9
- br label %cond_continue.0
-
-cond_false.0: ; preds = %then.9
- br label %cond_continue.0
-
-cond_continue.0: ; preds = %cond_false.0, %cond_true.0
- br label %endif.9
-
-else: ; preds = %endif.8
- br i1 false, label %cond_true.1, label %cond_false.1
-
-cond_true.1: ; preds = %else
- br label %cond_continue.1
-
-cond_false.1: ; preds = %else
- br label %cond_continue.1
-
-cond_continue.1: ; preds = %cond_false.1, %cond_true.1
- br label %endif.9
-
-endif.9: ; preds = %cond_continue.1, %cond_continue.0
- br label %loopentry.3
-
-loopcont.3: ; No predecessors!
- unreachable
-
-loopexit.3: ; preds = %then.7.loopexit.3_crit_edge, %loopentry.3.loopexit.3_crit_edge
- br i1 false, label %loopentry.i.i.i2.no_exit.i.i.i4_crit_edge, label %loopentry.i.i.i2.pci_register_driver.exit.i.i_crit_edge
-
-loopentry.i.i.i2: ; No predecessors!
- unreachable
-
-loopentry.i.i.i2.pci_register_driver.exit.i.i_crit_edge: ; preds = %loopexit.3
- br label %pci_register_driver.exit.i.i
-
-loopentry.i.i.i2.no_exit.i.i.i4_crit_edge: ; preds = %loopexit.3
- br label %no_exit.i.i.i4
-
-no_exit.i.i.i4: ; preds = %endif.i.i.i10.no_exit.i.i.i4_crit_edge, %loopentry.i.i.i2.no_exit.i.i.i4_crit_edge
- br i1 false, label %then.i.i.i6, label %no_exit.i.i.i4.endif.i.i.i10_crit_edge
-
-no_exit.i.i.i4.endif.i.i.i10_crit_edge: ; preds = %no_exit.i.i.i4
- br label %endif.i.i.i10
-
-then.i.i.i6: ; preds = %no_exit.i.i.i4
- br i1 false, label %then.0.i.i.i.i, label %else.i.i.i.i
-
-then.0.i.i.i.i: ; preds = %then.i.i.i6
- br i1 false, label %then.1.i.i.i.i, label %endif.1.i.i.i.i
-
-then.1.i.i.i.i: ; preds = %then.0.i.i.i.i
- br label %endif.i.i.i10
-
-endif.1.i.i.i.i: ; preds = %then.0.i.i.i.i
- br i1 false, label %endif.1.i.i.i.i.then.i.i.i.i.i.i_crit_edge, label %endif.1.i.i.i.i.endif.i.i.i.i.i.i_crit_edge
-
-endif.1.i.i.i.i.endif.i.i.i.i.i.i_crit_edge: ; preds = %endif.1.i.i.i.i
- br label %endif.i.i.i.i.i.i
-
-endif.1.i.i.i.i.then.i.i.i.i.i.i_crit_edge: ; preds = %endif.1.i.i.i.i
- br label %then.i.i.i.i.i.i
-
-else.i.i.i.i: ; preds = %then.i.i.i6
- br i1 false, label %endif.0.i.i.i.i.then.i.i.i.i.i.i_crit_edge, label %endif.0.i.i.i.i.endif.i.i.i.i.i.i_crit_edge
-
-endif.0.i.i.i.i: ; No predecessors!
- unreachable
-
-endif.0.i.i.i.i.endif.i.i.i.i.i.i_crit_edge: ; preds = %else.i.i.i.i
- br label %endif.i.i.i.i.i.i
-
-endif.0.i.i.i.i.then.i.i.i.i.i.i_crit_edge: ; preds = %else.i.i.i.i
- br label %then.i.i.i.i.i.i
-
-then.i.i.i.i.i.i: ; preds = %endif.0.i.i.i.i.then.i.i.i.i.i.i_crit_edge, %endif.1.i.i.i.i.then.i.i.i.i.i.i_crit_edge
- br i1 false, label %then.i.i.i.i.i.i.then.2.i.i.i.i_crit_edge, label %then.i.i.i.i.i.i.endif.2.i.i.i.i_crit_edge
-
-then.i.i.i.i.i.i.endif.2.i.i.i.i_crit_edge: ; preds = %then.i.i.i.i.i.i
- br label %endif.2.i.i.i.i
-
-then.i.i.i.i.i.i.then.2.i.i.i.i_crit_edge: ; preds = %then.i.i.i.i.i.i
- br label %then.2.i.i.i.i
-
-endif.i.i.i.i.i.i: ; preds = %endif.0.i.i.i.i.endif.i.i.i.i.i.i_crit_edge, %endif.1.i.i.i.i.endif.i.i.i.i.i.i_crit_edge
- br i1 false, label %dev_probe_lock.exit.i.i.i.i.then.2.i.i.i.i_crit_edge, label %dev_probe_lock.exit.i.i.i.i.endif.2.i.i.i.i_crit_edge
-
-dev_probe_lock.exit.i.i.i.i: ; No predecessors!
- unreachable
-
-dev_probe_lock.exit.i.i.i.i.endif.2.i.i.i.i_crit_edge: ; preds = %endif.i.i.i.i.i.i
- br label %endif.2.i.i.i.i
-
-dev_probe_lock.exit.i.i.i.i.then.2.i.i.i.i_crit_edge: ; preds = %endif.i.i.i.i.i.i
- br label %then.2.i.i.i.i
-
-then.2.i.i.i.i: ; preds = %dev_probe_lock.exit.i.i.i.i.then.2.i.i.i.i_crit_edge, %then.i.i.i.i.i.i.then.2.i.i.i.i_crit_edge
- br label %endif.2.i.i.i.i
-
-endif.2.i.i.i.i: ; preds = %then.2.i.i.i.i, %dev_probe_lock.exit.i.i.i.i.endif.2.i.i.i.i_crit_edge, %then.i.i.i.i.i.i.endif.2.i.i.i.i_crit_edge
- br i1 false, label %then.i.i2.i.i.i.i, label %endif.i.i3.i.i.i.i
-
-then.i.i2.i.i.i.i: ; preds = %endif.2.i.i.i.i
- br label %endif.i.i.i10
-
-endif.i.i3.i.i.i.i: ; preds = %endif.2.i.i.i.i
- br label %endif.i.i.i10
-
-dev_probe_unlock.exit.i.i.i.i: ; No predecessors!
- unreachable
-
-pci_announce_device.exit.i.i.i: ; No predecessors!
- unreachable
-
-endif.i.i.i10: ; preds = %endif.i.i3.i.i.i.i, %then.i.i2.i.i.i.i, %then.1.i.i.i.i, %no_exit.i.i.i4.endif.i.i.i10_crit_edge
- br i1 false, label %endif.i.i.i10.no_exit.i.i.i4_crit_edge, label %endif.i.i.i10.pci_register_driver.exit.i.i_crit_edge
-
-endif.i.i.i10.pci_register_driver.exit.i.i_crit_edge: ; preds = %endif.i.i.i10
- br label %pci_register_driver.exit.i.i
-
-endif.i.i.i10.no_exit.i.i.i4_crit_edge: ; preds = %endif.i.i.i10
- br label %no_exit.i.i.i4
-
-pci_register_driver.exit.i.i: ; preds = %endif.i.i.i10.pci_register_driver.exit.i.i_crit_edge, %loopentry.i.i.i2.pci_register_driver.exit.i.i_crit_edge
- br i1 false, label %then.0.i.i12, label %endif.0.i.i13
-
-then.0.i.i12: ; preds = %pci_register_driver.exit.i.i
- br label %probe_serial_pci.exit
-
-then.0.i.i12.probe_serial_pci.exit_crit_edge: ; No predecessors!
- unreachable
-
-then.0.i.i12.then.i_crit_edge: ; No predecessors!
- br label %then.i
-
-endif.0.i.i13: ; preds = %pci_register_driver.exit.i.i
- br i1 false, label %then.1.i.i14, label %endif.0.i.i13.endif.1.i.i15_crit_edge
-
-endif.0.i.i13.endif.1.i.i15_crit_edge: ; preds = %endif.0.i.i13
- br label %endif.1.i.i15
-
-then.1.i.i14: ; preds = %endif.0.i.i13
- br label %endif.1.i.i15
-
-endif.1.i.i15: ; preds = %then.1.i.i14, %endif.0.i.i13.endif.1.i.i15_crit_edge
- br i1 false, label %loopentry.i8.i.i.no_exit.i9.i.i_crit_edge, label %loopentry.i8.i.i.pci_unregister_driver.exit.i.i_crit_edge
-
-loopentry.i8.i.i: ; No predecessors!
- unreachable
-
-loopentry.i8.i.i.pci_unregister_driver.exit.i.i_crit_edge: ; preds = %endif.1.i.i15
- br label %pci_unregister_driver.exit.i.i
-
-loopentry.i8.i.i.no_exit.i9.i.i_crit_edge: ; preds = %endif.1.i.i15
- br label %no_exit.i9.i.i
-
-no_exit.i9.i.i: ; preds = %endif.0.i.i.i.no_exit.i9.i.i_crit_edge, %loopentry.i8.i.i.no_exit.i9.i.i_crit_edge
- br i1 false, label %then.0.i.i.i, label %no_exit.i9.i.i.endif.0.i.i.i_crit_edge
-
-no_exit.i9.i.i.endif.0.i.i.i_crit_edge: ; preds = %no_exit.i9.i.i
- br label %endif.0.i.i.i
-
-then.0.i.i.i: ; preds = %no_exit.i9.i.i
- br i1 false, label %then.1.i.i.i, label %then.0.i.i.i.endif.1.i.i.i_crit_edge
-
-then.0.i.i.i.endif.1.i.i.i_crit_edge: ; preds = %then.0.i.i.i
- br label %endif.1.i.i.i
-
-then.1.i.i.i: ; preds = %then.0.i.i.i
- br label %endif.1.i.i.i
-
-endif.1.i.i.i: ; preds = %then.1.i.i.i, %then.0.i.i.i.endif.1.i.i.i_crit_edge
- br label %endif.0.i.i.i
-
-endif.0.i.i.i: ; preds = %endif.1.i.i.i, %no_exit.i9.i.i.endif.0.i.i.i_crit_edge
- br i1 false, label %endif.0.i.i.i.no_exit.i9.i.i_crit_edge, label %endif.0.i.i.i.pci_unregister_driver.exit.i.i_crit_edge
-
-endif.0.i.i.i.pci_unregister_driver.exit.i.i_crit_edge: ; preds = %endif.0.i.i.i
- br label %pci_unregister_driver.exit.i.i
-
-endif.0.i.i.i.no_exit.i9.i.i_crit_edge: ; preds = %endif.0.i.i.i
- br label %no_exit.i9.i.i
-
-pci_unregister_driver.exit.i.i: ; preds = %endif.0.i.i.i.pci_unregister_driver.exit.i.i_crit_edge, %loopentry.i8.i.i.pci_unregister_driver.exit.i.i_crit_edge
- br i1 false, label %pci_module_init.exit.i.then.i_crit_edge, label %pci_module_init.exit.i.probe_serial_pci.exit_crit_edge
-
-pci_module_init.exit.i: ; No predecessors!
- unreachable
-
-pci_module_init.exit.i.probe_serial_pci.exit_crit_edge: ; preds = %pci_unregister_driver.exit.i.i
- br label %probe_serial_pci.exit
-
-pci_module_init.exit.i.then.i_crit_edge: ; preds = %pci_unregister_driver.exit.i.i
- br label %then.i
-
-then.i: ; preds = %pci_module_init.exit.i.then.i_crit_edge, %then.0.i.i12.then.i_crit_edge
- br label %probe_serial_pci.exit
-
-probe_serial_pci.exit: ; preds = %then.i, %pci_module_init.exit.i.probe_serial_pci.exit_crit_edge, %then.0.i.i12
- br i1 false, label %then.0.i, label %endif.0.i
-
-then.0.i: ; preds = %probe_serial_pci.exit
- ret void
-
-endif.0.i: ; preds = %probe_serial_pci.exit
- br i1 false, label %loopentry.0.i.no_exit.0.i_crit_edge, label %loopentry.0.i.loopexit.0.i_crit_edge
-
-loopentry.0.i: ; No predecessors!
- unreachable
-
-loopentry.0.i.loopexit.0.i_crit_edge: ; preds = %endif.0.i
- br label %loopexit.0.i
-
-loopentry.0.i.no_exit.0.i_crit_edge: ; preds = %endif.0.i
- br label %no_exit.0.i
-
-no_exit.0.i: ; preds = %loopcont.0.i.no_exit.0.i_crit_edge, %loopentry.0.i.no_exit.0.i_crit_edge
- br i1 false, label %then.1.i, label %endif.1.i
-
-then.1.i: ; preds = %no_exit.0.i
- br label %loopcont.0.i
-
-endif.1.i: ; preds = %no_exit.0.i
- br i1 false, label %loopentry.1.i.no_exit.1.i_crit_edge, label %loopentry.1.i.loopexit.1.i_crit_edge
-
-loopentry.1.i: ; No predecessors!
- unreachable
-
-loopentry.1.i.loopexit.1.i_crit_edge: ; preds = %endif.1.i
- br label %loopexit.1.i
-
-loopentry.1.i.no_exit.1.i_crit_edge: ; preds = %endif.1.i
- br label %no_exit.1.i
-
-no_exit.1.i: ; preds = %endif.2.i.no_exit.1.i_crit_edge, %loopentry.1.i.no_exit.1.i_crit_edge
- br i1 false, label %shortcirc_next.0.i, label %no_exit.1.i.shortcirc_done.0.i_crit_edge
-
-no_exit.1.i.shortcirc_done.0.i_crit_edge: ; preds = %no_exit.1.i
- br label %shortcirc_done.0.i
-
-shortcirc_next.0.i: ; preds = %no_exit.1.i
- br label %shortcirc_done.0.i
-
-shortcirc_done.0.i: ; preds = %shortcirc_next.0.i, %no_exit.1.i.shortcirc_done.0.i_crit_edge
- br i1 false, label %then.2.i, label %endif.2.i
-
-then.2.i: ; preds = %shortcirc_done.0.i
- br i1 false, label %then.2.i.then.3.i_crit_edge, label %then.2.i.else.i_crit_edge
-
-then.2.i.else.i_crit_edge: ; preds = %then.2.i
- br label %else.i
-
-then.2.i.then.3.i_crit_edge: ; preds = %then.2.i
- br label %then.3.i
-
-endif.2.i: ; preds = %shortcirc_done.0.i
- br i1 false, label %endif.2.i.no_exit.1.i_crit_edge, label %endif.2.i.loopexit.1.i_crit_edge
-
-endif.2.i.loopexit.1.i_crit_edge: ; preds = %endif.2.i
- br label %loopexit.1.i
-
-endif.2.i.no_exit.1.i_crit_edge: ; preds = %endif.2.i
- br label %no_exit.1.i
-
-loopexit.1.i: ; preds = %endif.2.i.loopexit.1.i_crit_edge, %loopentry.1.i.loopexit.1.i_crit_edge
- br i1 false, label %loopexit.1.i.then.3.i_crit_edge, label %loopexit.1.i.else.i_crit_edge
-
-loopexit.1.i.else.i_crit_edge: ; preds = %loopexit.1.i
- br label %else.i
-
-loopexit.1.i.then.3.i_crit_edge: ; preds = %loopexit.1.i
- br label %then.3.i
-
-then.3.i: ; preds = %loopexit.1.i.then.3.i_crit_edge, %then.2.i.then.3.i_crit_edge
- br i1 false, label %shortcirc_next.1.i, label %then.3.i.shortcirc_done.1.i_crit_edge
-
-then.3.i.shortcirc_done.1.i_crit_edge: ; preds = %then.3.i
- br label %shortcirc_done.1.i
-
-shortcirc_next.1.i: ; preds = %then.3.i
- br label %shortcirc_done.1.i
-
-shortcirc_done.1.i: ; preds = %shortcirc_next.1.i, %then.3.i.shortcirc_done.1.i_crit_edge
- br i1 false, label %then.4.i, label %endif.4.i
-
-then.4.i: ; preds = %shortcirc_done.1.i
- br label %endif.3.i
-
-endif.4.i: ; preds = %shortcirc_done.1.i
- br label %endif.3.i
-
-else.i: ; preds = %loopexit.1.i.else.i_crit_edge, %then.2.i.else.i_crit_edge
- br i1 false, label %shortcirc_next.0.i.i, label %else.i.shortcirc_done.0.i.i_crit_edge
-
-else.i.shortcirc_done.0.i.i_crit_edge: ; preds = %else.i
- br label %shortcirc_done.0.i.i
-
-shortcirc_next.0.i.i: ; preds = %else.i
- br label %shortcirc_done.0.i.i
-
-shortcirc_done.0.i.i: ; preds = %shortcirc_next.0.i.i, %else.i.shortcirc_done.0.i.i_crit_edge
- br i1 false, label %shortcirc_next.1.i.i, label %shortcirc_done.0.i.i.shortcirc_done.1.i.i_crit_edge
-
-shortcirc_done.0.i.i.shortcirc_done.1.i.i_crit_edge: ; preds = %shortcirc_done.0.i.i
- br label %shortcirc_done.1.i.i
-
-shortcirc_next.1.i.i: ; preds = %shortcirc_done.0.i.i
- br i1 false, label %loopentry.i.i2.i.no_exit.i.i3.i_crit_edge, label %loopentry.i.i2.i.loopexit.i.i.i_crit_edge
-
-loopentry.i.i2.i: ; No predecessors!
- unreachable
-
-loopentry.i.i2.i.loopexit.i.i.i_crit_edge: ; preds = %shortcirc_next.1.i.i
- br label %loopexit.i.i.i
-
-loopentry.i.i2.i.no_exit.i.i3.i_crit_edge: ; preds = %shortcirc_next.1.i.i
- br label %no_exit.i.i3.i
-
-no_exit.i.i3.i: ; preds = %endif.i.i.i.no_exit.i.i3.i_crit_edge, %loopentry.i.i2.i.no_exit.i.i3.i_crit_edge
- br i1 false, label %shortcirc_next.0.i.i.i, label %no_exit.i.i3.i.shortcirc_done.0.i.i.i_crit_edge
-
-no_exit.i.i3.i.shortcirc_done.0.i.i.i_crit_edge: ; preds = %no_exit.i.i3.i
- br label %shortcirc_done.0.i.i.i
-
-shortcirc_next.0.i.i.i: ; preds = %no_exit.i.i3.i
- br label %shortcirc_done.0.i.i.i
-
-shortcirc_done.0.i.i.i: ; preds = %shortcirc_next.0.i.i.i, %no_exit.i.i3.i.shortcirc_done.0.i.i.i_crit_edge
- br i1 false, label %shortcirc_next.1.i.i.i, label %shortcirc_done.0.i.i.i.shortcirc_done.1.i.i.i_crit_edge
-
-shortcirc_done.0.i.i.i.shortcirc_done.1.i.i.i_crit_edge: ; preds = %shortcirc_done.0.i.i.i
- br label %shortcirc_done.1.i.i.i
-
-shortcirc_next.1.i.i.i: ; preds = %shortcirc_done.0.i.i.i
- br label %shortcirc_done.1.i.i.i
-
-shortcirc_done.1.i.i.i: ; preds = %shortcirc_next.1.i.i.i, %shortcirc_done.0.i.i.i.shortcirc_done.1.i.i.i_crit_edge
- br i1 false, label %then.i.i.i, label %endif.i.i.i
-
-then.i.i.i: ; preds = %shortcirc_done.1.i.i.i
- br label %then.0.i.i
-
-then.i.i.i.endif.0.i.i_crit_edge: ; No predecessors!
- unreachable
-
-then.i.i.i.then.0.i.i_crit_edge: ; No predecessors!
- unreachable
-
-endif.i.i.i: ; preds = %shortcirc_done.1.i.i.i
- br i1 false, label %endif.i.i.i.no_exit.i.i3.i_crit_edge, label %endif.i.i.i.loopexit.i.i.i_crit_edge
-
-endif.i.i.i.loopexit.i.i.i_crit_edge: ; preds = %endif.i.i.i
- br label %loopexit.i.i.i
-
-endif.i.i.i.no_exit.i.i3.i_crit_edge: ; preds = %endif.i.i.i
- br label %no_exit.i.i3.i
-
-loopexit.i.i.i: ; preds = %endif.i.i.i.loopexit.i.i.i_crit_edge, %loopentry.i.i2.i.loopexit.i.i.i_crit_edge
- br label %shortcirc_done.1.i.i
-
-check_compatible_id.exit.i.i: ; No predecessors!
- unreachable
-
-shortcirc_done.1.i.i: ; preds = %loopexit.i.i.i, %shortcirc_done.0.i.i.shortcirc_done.1.i.i_crit_edge
- br i1 false, label %shortcirc_done.1.i.i.then.0.i.i_crit_edge, label %shortcirc_done.1.i.i.endif.0.i.i_crit_edge
-
-shortcirc_done.1.i.i.endif.0.i.i_crit_edge: ; preds = %shortcirc_done.1.i.i
- br label %endif.0.i.i
-
-shortcirc_done.1.i.i.then.0.i.i_crit_edge: ; preds = %shortcirc_done.1.i.i
- br label %then.0.i.i
-
-then.0.i.i: ; preds = %shortcirc_done.1.i.i.then.0.i.i_crit_edge, %then.i.i.i
- br label %then.5.i
-
-then.0.i.i.endif.5.i_crit_edge: ; No predecessors!
- unreachable
-
-then.0.i.i.then.5.i_crit_edge: ; No predecessors!
- unreachable
-
-endif.0.i.i: ; preds = %shortcirc_done.1.i.i.endif.0.i.i_crit_edge
- br i1 false, label %endif.0.i.i.shortcirc_done.2.i.i_crit_edge, label %shortcirc_next.2.i.i
-
-endif.0.i.i.shortcirc_done.2.i.i_crit_edge: ; preds = %endif.0.i.i
- br label %shortcirc_done.2.i.i
-
-shortcirc_next.2.i.i: ; preds = %endif.0.i.i
- br label %shortcirc_done.2.i.i
-
-shortcirc_done.2.i.i: ; preds = %shortcirc_next.2.i.i, %endif.0.i.i.shortcirc_done.2.i.i_crit_edge
- br i1 false, label %then.1.i.i, label %endif.1.i.i
-
-then.1.i.i: ; preds = %shortcirc_done.2.i.i
- br label %then.5.i
-
-then.1.i.i.endif.5.i_crit_edge: ; No predecessors!
- unreachable
-
-then.1.i.i.then.5.i_crit_edge: ; No predecessors!
- unreachable
-
-endif.1.i.i: ; preds = %shortcirc_done.2.i.i
- br i1 false, label %loopentry.0.i7.i.no_exit.0.i8.i_crit_edge, label %loopentry.0.i7.i.loopexit.0.i11.i_crit_edge
-
-loopentry.0.i7.i: ; No predecessors!
- unreachable
-
-loopentry.0.i7.i.loopexit.0.i11.i_crit_edge: ; preds = %endif.1.i.i
- br label %loopexit.0.i11.i
-
-loopentry.0.i7.i.no_exit.0.i8.i_crit_edge: ; preds = %endif.1.i.i
- br label %no_exit.0.i8.i
-
-no_exit.0.i8.i: ; preds = %loopexit.1.i.i.no_exit.0.i8.i_crit_edge, %loopentry.0.i7.i.no_exit.0.i8.i_crit_edge
- br i1 false, label %loopentry.1.i9.i.no_exit.1.i10.i_crit_edge, label %loopentry.1.i9.i.loopexit.1.i.i_crit_edge
-
-loopentry.1.i9.i: ; No predecessors!
- unreachable
-
-loopentry.1.i9.i.loopexit.1.i.i_crit_edge: ; preds = %no_exit.0.i8.i
- br label %loopexit.1.i.i
-
-loopentry.1.i9.i.no_exit.1.i10.i_crit_edge: ; preds = %no_exit.0.i8.i
- br label %no_exit.1.i10.i
-
-no_exit.1.i10.i: ; preds = %endif.2.i.i.no_exit.1.i10.i_crit_edge, %loopentry.1.i9.i.no_exit.1.i10.i_crit_edge
- br i1 false, label %shortcirc_next.3.i.i, label %no_exit.1.i10.i.shortcirc_done.3.i.i_crit_edge
-
-no_exit.1.i10.i.shortcirc_done.3.i.i_crit_edge: ; preds = %no_exit.1.i10.i
- br label %shortcirc_done.3.i.i
-
-shortcirc_next.3.i.i: ; preds = %no_exit.1.i10.i
- br i1 false, label %shortcirc_next.3.i.i.shortcirc_done.4.i.i_crit_edge, label %shortcirc_next.4.i.i
-
-shortcirc_next.3.i.i.shortcirc_done.4.i.i_crit_edge: ; preds = %shortcirc_next.3.i.i
- br label %shortcirc_done.4.i.i
-
-shortcirc_next.4.i.i: ; preds = %shortcirc_next.3.i.i
- br label %shortcirc_done.4.i.i
-
-shortcirc_done.4.i.i: ; preds = %shortcirc_next.4.i.i, %shortcirc_next.3.i.i.shortcirc_done.4.i.i_crit_edge
- br i1 false, label %shortcirc_done.4.i.i.shortcirc_done.5.i.i_crit_edge, label %shortcirc_next.5.i.i
-
-shortcirc_done.4.i.i.shortcirc_done.5.i.i_crit_edge: ; preds = %shortcirc_done.4.i.i
- br label %shortcirc_done.5.i.i
-
-shortcirc_next.5.i.i: ; preds = %shortcirc_done.4.i.i
- %tmp.68.i.i = icmp eq i16 0, 1000 ; <i1> [#uses=1]
- br label %shortcirc_done.5.i.i
-
-shortcirc_done.5.i.i: ; preds = %shortcirc_next.5.i.i, %shortcirc_done.4.i.i.shortcirc_done.5.i.i_crit_edge
- %shortcirc_val.4.i.i = phi i1 [ true, %shortcirc_done.4.i.i.shortcirc_done.5.i.i_crit_edge ], [ %tmp.68.i.i, %shortcirc_next.5.i.i ] ; <i1> [#uses=1]
- br label %shortcirc_done.3.i.i
-
-shortcirc_done.3.i.i: ; preds = %shortcirc_done.5.i.i, %no_exit.1.i10.i.shortcirc_done.3.i.i_crit_edge
- %shortcirc_val.5.i.i = phi i1 [ false, %no_exit.1.i10.i.shortcirc_done.3.i.i_crit_edge ], [ %shortcirc_val.4.i.i, %shortcirc_done.5.i.i ] ; <i1> [#uses=1]
- br i1 %shortcirc_val.5.i.i, label %then.2.i.i, label %endif.2.i.i
-
-then.2.i.i: ; preds = %shortcirc_done.3.i.i
- %port.2.i.i.8.lcssa20 = phi %struct.isapnp_port* [ null, %shortcirc_done.3.i.i ] ; <%struct.isapnp_port*> [#uses=0]
- br label %endif.5.i
-
-then.2.i.i.endif.5.i_crit_edge: ; No predecessors!
- unreachable
-
-then.2.i.i.then.5.i_crit_edge: ; No predecessors!
- unreachable
-
-endif.2.i.i: ; preds = %shortcirc_done.3.i.i
- br i1 false, label %endif.2.i.i.no_exit.1.i10.i_crit_edge, label %endif.2.i.i.loopexit.1.i.i_crit_edge
-
-endif.2.i.i.loopexit.1.i.i_crit_edge: ; preds = %endif.2.i.i
- br label %loopexit.1.i.i
-
-endif.2.i.i.no_exit.1.i10.i_crit_edge: ; preds = %endif.2.i.i
- br label %no_exit.1.i10.i
-
-loopexit.1.i.i: ; preds = %endif.2.i.i.loopexit.1.i.i_crit_edge, %loopentry.1.i9.i.loopexit.1.i.i_crit_edge
- br i1 false, label %loopexit.1.i.i.no_exit.0.i8.i_crit_edge, label %loopexit.1.i.i.loopexit.0.i11.i_crit_edge
-
-loopexit.1.i.i.loopexit.0.i11.i_crit_edge: ; preds = %loopexit.1.i.i
- br label %loopexit.0.i11.i
-
-loopexit.1.i.i.no_exit.0.i8.i_crit_edge: ; preds = %loopexit.1.i.i
- br label %no_exit.0.i8.i
-
-loopexit.0.i11.i: ; preds = %loopexit.1.i.i.loopexit.0.i11.i_crit_edge, %loopentry.0.i7.i.loopexit.0.i11.i_crit_edge
- br i1 false, label %serial_pnp_guess_board.exit.i.then.5.i_crit_edge, label %serial_pnp_guess_board.exit.i.endif.5.i_crit_edge
-
-serial_pnp_guess_board.exit.i: ; No predecessors!
- unreachable
-
-serial_pnp_guess_board.exit.i.endif.5.i_crit_edge: ; preds = %loopexit.0.i11.i
- br label %endif.5.i
-
-serial_pnp_guess_board.exit.i.then.5.i_crit_edge: ; preds = %loopexit.0.i11.i
- br label %then.5.i
-
-then.5.i: ; preds = %serial_pnp_guess_board.exit.i.then.5.i_crit_edge, %then.1.i.i, %then.0.i.i
- br label %loopcont.0.i
-
-endif.5.i: ; preds = %serial_pnp_guess_board.exit.i.endif.5.i_crit_edge, %then.2.i.i
- br label %endif.3.i
-
-endif.3.i: ; preds = %endif.5.i, %endif.4.i, %then.4.i
- br i1 false, label %then.6.i, label %endif.3.i.endif.6.i_crit_edge
-
-endif.3.i.endif.6.i_crit_edge: ; preds = %endif.3.i
- br label %endif.6.i
-
-then.6.i: ; preds = %endif.3.i
- br label %loopentry.0.i.i
-
-loopentry.0.i.i: ; preds = %endif.i.i, %then.6.i
- br i1 false, label %loopentry.0.i.i.no_exit.0.i.i_crit_edge, label %loopentry.0.i.i.loopexit.0.i.i_crit_edge
-
-loopentry.0.i.i.loopexit.0.i.i_crit_edge: ; preds = %loopentry.0.i.i
- br label %loopexit.0.i.i
-
-loopentry.0.i.i.no_exit.0.i.i_crit_edge: ; preds = %loopentry.0.i.i
- br label %no_exit.0.i.i
-
-no_exit.0.i.i: ; preds = %clear_bit195.exit.i.i.no_exit.0.i.i_crit_edge, %loopentry.0.i.i.no_exit.0.i.i_crit_edge
- br i1 false, label %then.i.i, label %endif.i.i
-
-then.i.i: ; preds = %no_exit.0.i.i
- br label %loopentry.i.i.i
-
-loopentry.i.i.i: ; preds = %no_exit.i.i.i, %then.i.i
- br i1 false, label %no_exit.i.i.i, label %clear_bit195.exit.i.i
-
-no_exit.i.i.i: ; preds = %loopentry.i.i.i
- br label %loopentry.i.i.i
-
-clear_bit195.exit.i.i: ; preds = %loopentry.i.i.i
- br i1 false, label %clear_bit195.exit.i.i.no_exit.0.i.i_crit_edge, label %clear_bit195.exit.i.i.loopexit.0.i.i_crit_edge
-
-clear_bit195.exit.i.i.loopexit.0.i.i_crit_edge: ; preds = %clear_bit195.exit.i.i
- br label %loopexit.0.i.i
-
-clear_bit195.exit.i.i.no_exit.0.i.i_crit_edge: ; preds = %clear_bit195.exit.i.i
- br label %no_exit.0.i.i
-
-endif.i.i: ; preds = %no_exit.0.i.i
- br label %loopentry.0.i.i
-
-loopexit.0.i.i: ; preds = %clear_bit195.exit.i.i.loopexit.0.i.i_crit_edge, %loopentry.0.i.i.loopexit.0.i.i_crit_edge
- br i1 false, label %loopentry.1.i.i.no_exit.1.i.i_crit_edge, label %loopentry.1.i.i.avoid_irq_share.exit.i_crit_edge
-
-loopentry.1.i.i: ; No predecessors!
- unreachable
-
-loopentry.1.i.i.avoid_irq_share.exit.i_crit_edge: ; preds = %loopexit.0.i.i
- br label %avoid_irq_share.exit.i
-
-loopentry.1.i.i.no_exit.1.i.i_crit_edge: ; preds = %loopexit.0.i.i
- br label %no_exit.1.i.i
-
-no_exit.1.i.i: ; preds = %loopexit.2.i.i.no_exit.1.i.i_crit_edge, %loopentry.1.i.i.no_exit.1.i.i_crit_edge
- br i1 false, label %loopentry.2.i.i.no_exit.2.i.i_crit_edge, label %loopentry.2.i.i.loopexit.2.i.i_crit_edge
-
-loopentry.2.i.i: ; No predecessors!
- unreachable
-
-loopentry.2.i.i.loopexit.2.i.i_crit_edge: ; preds = %no_exit.1.i.i
- br label %loopexit.2.i.i
-
-loopentry.2.i.i.no_exit.2.i.i_crit_edge: ; preds = %no_exit.1.i.i
- br label %no_exit.2.i.i
-
-no_exit.2.i.i: ; preds = %no_exit.2.i.i.no_exit.2.i.i_crit_edge, %loopentry.2.i.i.no_exit.2.i.i_crit_edge
- br i1 false, label %no_exit.2.i.i.no_exit.2.i.i_crit_edge, label %no_exit.2.i.i.loopexit.2.i.i_crit_edge
-
-no_exit.2.i.i.loopexit.2.i.i_crit_edge: ; preds = %no_exit.2.i.i
- br label %loopexit.2.i.i
-
-no_exit.2.i.i.no_exit.2.i.i_crit_edge: ; preds = %no_exit.2.i.i
- br label %no_exit.2.i.i
-
-loopexit.2.i.i: ; preds = %no_exit.2.i.i.loopexit.2.i.i_crit_edge, %loopentry.2.i.i.loopexit.2.i.i_crit_edge
- br i1 false, label %loopexit.2.i.i.no_exit.1.i.i_crit_edge, label %loopexit.2.i.i.avoid_irq_share.exit.i_crit_edge
-
-loopexit.2.i.i.avoid_irq_share.exit.i_crit_edge: ; preds = %loopexit.2.i.i
- br label %avoid_irq_share.exit.i
-
-loopexit.2.i.i.no_exit.1.i.i_crit_edge: ; preds = %loopexit.2.i.i
- br label %no_exit.1.i.i
-
-avoid_irq_share.exit.i: ; preds = %loopexit.2.i.i.avoid_irq_share.exit.i_crit_edge, %loopentry.1.i.i.avoid_irq_share.exit.i_crit_edge
- br label %endif.6.i
-
-endif.6.i: ; preds = %avoid_irq_share.exit.i, %endif.3.i.endif.6.i_crit_edge
- br label %loopcont.0.i
-
-loopcont.0.i: ; preds = %endif.6.i, %then.5.i, %then.1.i
- br i1 false, label %loopcont.0.i.no_exit.0.i_crit_edge, label %loopcont.0.i.loopexit.0.i_crit_edge
-
-loopcont.0.i.loopexit.0.i_crit_edge: ; preds = %loopcont.0.i
- br label %loopexit.0.i
-
-loopcont.0.i.no_exit.0.i_crit_edge: ; preds = %loopcont.0.i
- br label %no_exit.0.i
-
-loopexit.0.i: ; preds = %loopcont.0.i.loopexit.0.i_crit_edge, %loopentry.0.i.loopexit.0.i_crit_edge
- ret void
-
-probe_serial_pnp.exit: ; No predecessors!
- unreachable
-
-after_ret: ; No predecessors!
- ret void
-
-return: ; No predecessors!
- unreachable
-}
diff --git a/test/Transforms/CondProp/2007-08-01-InvalidRead.ll b/test/Transforms/CondProp/2007-08-01-InvalidRead.ll
deleted file mode 100644
index 6d5f0f5a3aca..000000000000
--- a/test/Transforms/CondProp/2007-08-01-InvalidRead.ll
+++ /dev/null
@@ -1,814 +0,0 @@
-; RUN: opt < %s -inline -tailduplicate -condprop -simplifycfg -disable-output
-; PR1575
-target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64"
-target triple = "i686-pc-linux-gnu"
- %struct.DCTtab = type { i8, i8, i8 }
- %struct.FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct.FILE*, i32, i32, i32, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i8*, i8*, i32, i32, [40 x i8] }
- %struct.VLCtab = type { i8, i8 }
- %struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct.FILE*, i32, i32, i32, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i8*, i8*, i32, i32, [40 x i8] }
- %struct._IO_marker = type { %struct._IO_marker*, %struct.FILE*, i32 }
- %struct.layer_data = type { i32, [2048 x i8], i8*, [16 x i8], i32, i8*, i32, i32, [64 x i32], [64 x i32], [64 x i32], [64 x i32], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [12 x [64 x i16]] }
-@ld = external global %struct.layer_data* ; <%struct.layer_data**> [#uses=1]
-@System_Stream_Flag = external global i32 ; <i32*> [#uses=0]
-@Fault_Flag = external global i32 ; <i32*> [#uses=2]
-@picture_coding_type = external global i32 ; <i32*> [#uses=1]
-@DCTtabnext = external global [12 x %struct.DCTtab] ; <[12 x %struct.DCTtab]*> [#uses=0]
-@DCTtab0 = external global [60 x %struct.DCTtab] ; <[60 x %struct.DCTtab]*> [#uses=0]
-@DCTtab1 = external global [8 x %struct.DCTtab] ; <[8 x %struct.DCTtab]*> [#uses=0]
-@DCTtab2 = external global [16 x %struct.DCTtab] ; <[16 x %struct.DCTtab]*> [#uses=0]
-@DCTtab3 = external global [16 x %struct.DCTtab] ; <[16 x %struct.DCTtab]*> [#uses=0]
-@DCTtab4 = external global [16 x %struct.DCTtab] ; <[16 x %struct.DCTtab]*> [#uses=0]
-@DCTtab5 = external global [16 x %struct.DCTtab] ; <[16 x %struct.DCTtab]*> [#uses=0]
-@DCTtab6 = external global [16 x %struct.DCTtab] ; <[16 x %struct.DCTtab]*> [#uses=0]
-@Quiet_Flag = external global i32 ; <i32*> [#uses=0]
-@.str = external constant [51 x i8] ; <[51 x i8]*> [#uses=0]
-@stderr = external global %struct.FILE* ; <%struct.FILE**> [#uses=0]
-@.str1 = external constant [43 x i8] ; <[43 x i8]*> [#uses=0]
-@scan = external global [2 x [64 x i8]] ; <[2 x [64 x i8]]*> [#uses=0]
-@DCTtabfirst = external global [12 x %struct.DCTtab] ; <[12 x %struct.DCTtab]*> [#uses=0]
-@.str2 = external constant [55 x i8] ; <[55 x i8]*> [#uses=0]
-@.str3 = external constant [43 x i8] ; <[43 x i8]*> [#uses=0]
-@base = external global %struct.layer_data ; <%struct.layer_data*> [#uses=1]
-@enhan = external global %struct.layer_data ; <%struct.layer_data*> [#uses=0]
-@chroma_format = external global i32 ; <i32*> [#uses=2]
-@intra_dc_precision = external global i32 ; <i32*> [#uses=0]
-@intra_vlc_format = external global i32 ; <i32*> [#uses=0]
-@DCTtab0a = external global [252 x %struct.DCTtab] ; <[252 x %struct.DCTtab]*> [#uses=0]
-@DCTtab1a = external global [8 x %struct.DCTtab] ; <[8 x %struct.DCTtab]*> [#uses=0]
-@.str4 = external constant [51 x i8] ; <[51 x i8]*> [#uses=0]
-@.str5 = external constant [45 x i8] ; <[45 x i8]*> [#uses=0]
-@.str6 = external constant [44 x i8] ; <[44 x i8]*> [#uses=0]
-@.str7 = external constant [55 x i8] ; <[55 x i8]*> [#uses=0]
-@.str8 = external constant [44 x i8] ; <[44 x i8]*> [#uses=0]
-@Temporal_Reference_Base = external global i32 ; <i32*> [#uses=0]
-@True_Framenum_max = external global i32 ; <i32*> [#uses=0]
-@Temporal_Reference_GOP_Reset.b = external global i1 ; <i1*> [#uses=0]
-@frame_rate_Table = external constant [16 x double] ; <[16 x double]*> [#uses=0]
-@.str9 = external constant [43 x i8] ; <[43 x i8]*> [#uses=0]
-@horizontal_size = external global i32 ; <i32*> [#uses=0]
-@vertical_size = external global i32 ; <i32*> [#uses=0]
-@aspect_ratio_information = external global i32 ; <i32*> [#uses=0]
-@frame_rate_code = external global i32 ; <i32*> [#uses=0]
-@bit_rate_value = external global i32 ; <i32*> [#uses=0]
-@.str110 = external constant [18 x i8] ; <[18 x i8]*> [#uses=0]
-@vbv_buffer_size = external global i32 ; <i32*> [#uses=0]
-@constrained_parameters_flag = external global i32 ; <i32*> [#uses=0]
-@default_intra_quantizer_matrix = external global [64 x i8] ; <[64 x i8]*> [#uses=0]
-@drop_flag = external global i32 ; <i32*> [#uses=0]
-@hour = external global i32 ; <i32*> [#uses=0]
-@minute = external global i32 ; <i32*> [#uses=0]
-@.str211 = external constant [27 x i8] ; <[27 x i8]*> [#uses=0]
-@sec = external global i32 ; <i32*> [#uses=0]
-@frame = external global i32 ; <i32*> [#uses=0]
-@closed_gop = external global i32 ; <i32*> [#uses=0]
-@broken_link = external global i32 ; <i32*> [#uses=0]
-@temporal_reference = external global i32 ; <i32*> [#uses=0]
-@vbv_delay = external global i32 ; <i32*> [#uses=0]
-@full_pel_forward_vector = external global i32 ; <i32*> [#uses=0]
-@forward_f_code = external global i32 ; <i32*> [#uses=0]
-@full_pel_backward_vector = external global i32 ; <i32*> [#uses=0]
-@backward_f_code = external global i32 ; <i32*> [#uses=1]
-@Non_Linear_quantizer_scale = external global [32 x i8] ; <[32 x i8]*> [#uses=0]
-@.str312 = external constant [37 x i8] ; <[37 x i8]*> [#uses=0]
-@layer_id = external global i32 ; <i32*> [#uses=0]
-@profile_and_level_indication = external global i32 ; <i32*> [#uses=0]
-@progressive_sequence = external global i32 ; <i32*> [#uses=0]
-@.str413 = external constant [19 x i8] ; <[19 x i8]*> [#uses=0]
-@low_delay = external global i32 ; <i32*> [#uses=0]
-@frame_rate_extension_n = external global i32 ; <i32*> [#uses=0]
-@frame_rate_extension_d = external global i32 ; <i32*> [#uses=0]
-@frame_rate = external global double ; <double*> [#uses=0]
-@profile = external global i32 ; <i32*> [#uses=0]
-@level = external global i32 ; <i32*> [#uses=0]
-@bit_rate = external global double ; <double*> [#uses=0]
-@video_format = external global i32 ; <i32*> [#uses=0]
-@color_description = external global i32 ; <i32*> [#uses=0]
-@color_primaries = external global i32 ; <i32*> [#uses=0]
-@transfer_characteristics = external global i32 ; <i32*> [#uses=0]
-@matrix_coefficients = external global i32 ; <i32*> [#uses=0]
-@display_horizontal_size = external global i32 ; <i32*> [#uses=0]
-@.str514 = external constant [27 x i8] ; <[27 x i8]*> [#uses=0]
-@display_vertical_size = external global i32 ; <i32*> [#uses=0]
-@lower_layer_prediction_horizontal_size = external global i32 ; <i32*> [#uses=0]
-@.str615 = external constant [30 x i8] ; <[30 x i8]*> [#uses=0]
-@lower_layer_prediction_vertical_size = external global i32 ; <i32*> [#uses=0]
-@horizontal_subsampling_factor_m = external global i32 ; <i32*> [#uses=0]
-@horizontal_subsampling_factor_n = external global i32 ; <i32*> [#uses=0]
-@vertical_subsampling_factor_m = external global i32 ; <i32*> [#uses=0]
-@vertical_subsampling_factor_n = external global i32 ; <i32*> [#uses=0]
-@.str716 = external constant [38 x i8] ; <[38 x i8]*> [#uses=0]
-@repeat_first_field = external global i32 ; <i32*> [#uses=0]
-@top_field_first = external global i32 ; <i32*> [#uses=0]
-@picture_structure = external global i32 ; <i32*> [#uses=0]
-@frame_center_horizontal_offset = external global [3 x i32] ; <[3 x i32]*> [#uses=0]
-@.str817 = external constant [44 x i8] ; <[44 x i8]*> [#uses=0]
-@frame_center_vertical_offset = external global [3 x i32] ; <[3 x i32]*> [#uses=0]
-@.str918 = external constant [45 x i8] ; <[45 x i8]*> [#uses=0]
-@f_code = external global [2 x [2 x i32]] ; <[2 x [2 x i32]]*> [#uses=0]
-@frame_pred_frame_dct = external global i32 ; <i32*> [#uses=0]
-@concealment_motion_vectors = external global i32 ; <i32*> [#uses=1]
-@chroma_420_type = external global i32 ; <i32*> [#uses=0]
-@progressive_frame = external global i32 ; <i32*> [#uses=0]
-@composite_display_flag = external global i32 ; <i32*> [#uses=0]
-@v_axis = external global i32 ; <i32*> [#uses=0]
-@field_sequence = external global i32 ; <i32*> [#uses=0]
-@sub_carrier = external global i32 ; <i32*> [#uses=0]
-@burst_amplitude = external global i32 ; <i32*> [#uses=0]
-@sub_carrier_phase = external global i32 ; <i32*> [#uses=0]
-@lower_layer_temporal_reference = external global i32 ; <i32*> [#uses=0]
-@.str10 = external constant [55 x i8] ; <[55 x i8]*> [#uses=0]
-@lower_layer_horizontal_offset = external global i32 ; <i32*> [#uses=0]
-@.str11 = external constant [56 x i8] ; <[56 x i8]*> [#uses=0]
-@lower_layer_vertical_offset = external global i32 ; <i32*> [#uses=0]
-@spatial_temporal_weight_code_table_index = external global i32 ; <i32*> [#uses=0]
-@lower_layer_progressive_frame = external global i32 ; <i32*> [#uses=0]
-@lower_layer_deinterlaced_field_select = external global i32 ; <i32*> [#uses=0]
-@.str12 = external constant [36 x i8] ; <[36 x i8]*> [#uses=0]
-@copyright_flag = external global i32 ; <i32*> [#uses=0]
-@copyright_identifier = external global i32 ; <i32*> [#uses=0]
-@original_or_copy = external global i32 ; <i32*> [#uses=0]
-@.str13 = external constant [40 x i8] ; <[40 x i8]*> [#uses=0]
-@copyright_number_1 = external global i32 ; <i32*> [#uses=0]
-@.str14 = external constant [41 x i8] ; <[41 x i8]*> [#uses=0]
-@copyright_number_2 = external global i32 ; <i32*> [#uses=0]
-@.str15 = external constant [40 x i8] ; <[40 x i8]*> [#uses=0]
-@copyright_number_3 = external global i32 ; <i32*> [#uses=0]
-@Verbose_Flag = external global i32 ; <i32*> [#uses=0]
-@.str16 = external constant [31 x i8] ; <[31 x i8]*> [#uses=0]
-@.str17 = external constant [22 x i8] ; <[22 x i8]*> [#uses=0]
-@.str18 = external constant [27 x i8] ; <[27 x i8]*> [#uses=0]
-@.str19 = external constant [46 x i8] ; <[46 x i8]*> [#uses=0]
-@.str20 = external constant [25 x i8] ; <[25 x i8]*> [#uses=0]
-@.str21 = external constant [25 x i8] ; <[25 x i8]*> [#uses=0]
-@.str22 = external constant [25 x i8] ; <[25 x i8]*> [#uses=0]
-@temporal_reference_old.2592 = external global i32 ; <i32*> [#uses=0]
-@temporal_reference_wrap.2591.b = external global i1 ; <i1*> [#uses=0]
-@True_Framenum = external global i32 ; <i32*> [#uses=0]
-@Second_Field = external global i32 ; <i32*> [#uses=0]
-@.str23 = external constant [29 x i8] ; <[29 x i8]*> [#uses=0]
-@Ersatz_Flag = external global i32 ; <i32*> [#uses=0]
-@mb_width = external global i32 ; <i32*> [#uses=0]
-@mb_height = external global i32 ; <i32*> [#uses=0]
-@Two_Streams = external global i32 ; <i32*> [#uses=0]
-@.str124 = external constant [32 x i8] ; <[32 x i8]*> [#uses=0]
-@stwc_table.2193 = external constant [3 x [4 x i8]] ; <[3 x [4 x i8]]*> [#uses=0]
-@stwclass_table.2194 = external constant [9 x i8] ; <[9 x i8]*> [#uses=0]
-@current_frame = external global [3 x i8*] ; <[3 x i8*]*> [#uses=0]
-@Coded_Picture_Width = external global i32 ; <i32*> [#uses=0]
-@Chroma_Width = external global i32 ; <i32*> [#uses=0]
-@Clip = external global i8* ; <i8**> [#uses=0]
-@.str225 = external constant [30 x i8] ; <[30 x i8]*> [#uses=0]
-@.str326 = external constant [27 x i8] ; <[27 x i8]*> [#uses=0]
-@block_count = external global i32 ; <i32*> [#uses=1]
-@auxframe = external global [3 x i8*] ; <[3 x i8*]*> [#uses=0]
-@forward_reference_frame = external global [3 x i8*] ; <[3 x i8*]*> [#uses=0]
-@backward_reference_frame = external global [3 x i8*] ; <[3 x i8*]*> [#uses=0]
-@.str427 = external constant [34 x i8] ; <[34 x i8]*> [#uses=0]
-@Newref_progressive_frame.2631 = external global i32 ; <i32*> [#uses=0]
-@Oldref_progressive_frame.2630 = external global i32 ; <i32*> [#uses=0]
-@Reference_IDCT_Flag = external global i32 ; <i32*> [#uses=0]
-@.str528 = external constant [43 x i8] ; <[43 x i8]*> [#uses=0]
-@.str629 = external constant [29 x i8] ; <[29 x i8]*> [#uses=0]
-@.str730 = external constant [38 x i8] ; <[38 x i8]*> [#uses=0]
-@.str831 = external constant [32 x i8] ; <[32 x i8]*> [#uses=0]
-@PMBtab0 = external constant [8 x %struct.VLCtab] ; <[8 x %struct.VLCtab]*> [#uses=0]
-@PMBtab1 = external constant [8 x %struct.VLCtab] ; <[8 x %struct.VLCtab]*> [#uses=0]
-@BMBtab0 = external constant [16 x %struct.VLCtab] ; <[16 x %struct.VLCtab]*> [#uses=0]
-@BMBtab1 = external constant [8 x %struct.VLCtab] ; <[8 x %struct.VLCtab]*> [#uses=0]
-@spIMBtab = external constant [16 x %struct.VLCtab] ; <[16 x %struct.VLCtab]*> [#uses=0]
-@spPMBtab0 = external constant [16 x %struct.VLCtab] ; <[16 x %struct.VLCtab]*> [#uses=0]
-@spPMBtab1 = external constant [16 x %struct.VLCtab] ; <[16 x %struct.VLCtab]*> [#uses=0]
-@spBMBtab0 = external constant [14 x %struct.VLCtab] ; <[14 x %struct.VLCtab]*> [#uses=0]
-@spBMBtab1 = external constant [12 x %struct.VLCtab] ; <[12 x %struct.VLCtab]*> [#uses=0]
-@spBMBtab2 = external constant [8 x %struct.VLCtab] ; <[8 x %struct.VLCtab]*> [#uses=0]
-@SNRMBtab = external constant [8 x %struct.VLCtab] ; <[8 x %struct.VLCtab]*> [#uses=0]
-@MVtab0 = external constant [8 x %struct.VLCtab] ; <[8 x %struct.VLCtab]*> [#uses=0]
-@MVtab1 = external constant [8 x %struct.VLCtab] ; <[8 x %struct.VLCtab]*> [#uses=0]
-@MVtab2 = external constant [12 x %struct.VLCtab] ; <[12 x %struct.VLCtab]*> [#uses=0]
-@CBPtab0 = external constant [32 x %struct.VLCtab] ; <[32 x %struct.VLCtab]*> [#uses=0]
-@CBPtab1 = external constant [64 x %struct.VLCtab] ; <[64 x %struct.VLCtab]*> [#uses=0]
-@CBPtab2 = external constant [8 x %struct.VLCtab] ; <[8 x %struct.VLCtab]*> [#uses=0]
-@MBAtab1 = external constant [16 x %struct.VLCtab] ; <[16 x %struct.VLCtab]*> [#uses=0]
-@MBAtab2 = external constant [104 x %struct.VLCtab] ; <[104 x %struct.VLCtab]*> [#uses=0]
-@DClumtab0 = external constant [32 x %struct.VLCtab] ; <[32 x %struct.VLCtab]*> [#uses=0]
-@DClumtab1 = external constant [16 x %struct.VLCtab] ; <[16 x %struct.VLCtab]*> [#uses=0]
-@DCchromtab0 = external constant [32 x %struct.VLCtab] ; <[32 x %struct.VLCtab]*> [#uses=0]
-@DCchromtab1 = external constant [32 x %struct.VLCtab] ; <[32 x %struct.VLCtab]*> [#uses=0]
-@.str32 = external constant [56 x i8] ; <[56 x i8]*> [#uses=0]
-@.str133 = external constant [29 x i8] ; <[29 x i8]*> [#uses=0]
-@global_pic = external global i32 ; <i32*> [#uses=0]
-@global_MBA = external global i32 ; <i32*> [#uses=0]
-@.str1648 = external constant [45 x i8] ; <[45 x i8]*> [#uses=0]
-@.str1749 = external constant [33 x i8] ; <[33 x i8]*> [#uses=0]
-@.str1850 = external constant [42 x i8] ; <[42 x i8]*> [#uses=0]
-@iclp = external global i16* ; <i16**> [#uses=0]
-@iclip = external global [1024 x i16] ; <[1024 x i16]*> [#uses=0]
-@c = external global [8 x [8 x double]] ; <[8 x [8 x double]]*> [#uses=0]
-@Version = external global [28 x i8] ; <[28 x i8]*> [#uses=0]
-@Author = external global [41 x i8] ; <[41 x i8]*> [#uses=0]
-@Inverse_Table_6_9 = external global [8 x [4 x i32]] ; <[8 x [4 x i32]]*> [#uses=0]
-@Main_Bitstream_Filename = external global i8* ; <i8**> [#uses=0]
-@.str51 = external constant [36 x i8] ; <[36 x i8]*> [#uses=0]
-@Error_Text = external global [256 x i8] ; <[256 x i8]*> [#uses=0]
-@.str152 = external constant [52 x i8] ; <[52 x i8]*> [#uses=0]
-@.str253 = external constant [33 x i8] ; <[33 x i8]*> [#uses=0]
-@Enhancement_Layer_Bitstream_Filename = external global i8* ; <i8**> [#uses=0]
-@.str354 = external constant [46 x i8] ; <[46 x i8]*> [#uses=0]
-@.str455 = external constant [22 x i8] ; <[22 x i8]*> [#uses=0]
-@.str556 = external constant [30 x i8] ; <[30 x i8]*> [#uses=0]
-@Coded_Picture_Height = external global i32 ; <i32*> [#uses=0]
-@Chroma_Height = external global i32 ; <i32*> [#uses=0]
-@Table_6_20.3737 = external constant [3 x i32] ; <[3 x i32]*> [#uses=0]
-@.str657 = external constant [42 x i8] ; <[42 x i8]*> [#uses=0]
-@.str758 = external constant [41 x i8] ; <[41 x i8]*> [#uses=0]
-@.str859 = external constant [26 x i8] ; <[26 x i8]*> [#uses=0]
-@substitute_frame = external global [3 x i8*] ; <[3 x i8*]*> [#uses=0]
-@.str960 = external constant [34 x i8] ; <[34 x i8]*> [#uses=0]
-@llframe0 = external global [3 x i8*] ; <[3 x i8*]*> [#uses=0]
-@.str1061 = external constant [24 x i8] ; <[24 x i8]*> [#uses=0]
-@llframe1 = external global [3 x i8*] ; <[3 x i8*]*> [#uses=0]
-@.str1162 = external constant [24 x i8] ; <[24 x i8]*> [#uses=0]
-@lltmp = external global i16* ; <i16**> [#uses=0]
-@.str1263 = external constant [21 x i8] ; <[21 x i8]*> [#uses=0]
-@.str1364 = external constant [3 x i8] ; <[3 x i8]*> [#uses=0]
-@.str1465 = external constant [9 x i8] ; <[9 x i8]*> [#uses=0]
-@.str1566 = external constant [1195 x i8] ; <[1195 x i8]*> [#uses=0]
-@Output_Type = external global i32 ; <i32*> [#uses=0]
-@Main_Bitstream_Flag = external global i32 ; <i32*> [#uses=0]
-@.str1667 = external constant [55 x i8] ; <[55 x i8]*> [#uses=0]
-@.str1768 = external constant [49 x i8] ; <[49 x i8]*> [#uses=0]
-@.str1869 = external constant [39 x i8] ; <[39 x i8]*> [#uses=0]
-@Frame_Store_Flag = external global i32 ; <i32*> [#uses=0]
-@Big_Picture_Flag = external global i32 ; <i32*> [#uses=0]
-@.str1970 = external constant [49 x i8] ; <[49 x i8]*> [#uses=0]
-@Spatial_Flag = external global i32 ; <i32*> [#uses=0]
-@.str2071 = external constant [39 x i8] ; <[39 x i8]*> [#uses=0]
-@Lower_Layer_Picture_Filename = external global i8* ; <i8**> [#uses=0]
-@Output_Picture_Filename = external global i8* ; <i8**> [#uses=0]
-@.str2172 = external constant [1 x i8] ; <[1 x i8]*> [#uses=0]
-@.str2273 = external constant [39 x i8] ; <[39 x i8]*> [#uses=0]
-@.str2374 = external constant [49 x i8] ; <[49 x i8]*> [#uses=0]
-@User_Data_Flag = external global i32 ; <i32*> [#uses=0]
-@.str24 = external constant [40 x i8] ; <[40 x i8]*> [#uses=0]
-@.str25 = external constant [39 x i8] ; <[39 x i8]*> [#uses=0]
-@Substitute_Picture_Filename = external global i8* ; <i8**> [#uses=0]
-@.str26 = external constant [47 x i8] ; <[47 x i8]*> [#uses=0]
-@.str27 = external constant [55 x i8] ; <[55 x i8]*> [#uses=0]
-@Display_Progressive_Flag = external global i32 ; <i32*> [#uses=0]
-@.str28 = external constant [21 x i8] ; <[21 x i8]*> [#uses=0]
-@.str29 = external constant [2 x i8] ; <[2 x i8]*> [#uses=0]
-@hiQdither = external global i32 ; <i32*> [#uses=0]
-@Trace_Flag = external global i32 ; <i32*> [#uses=0]
-@Verify_Flag = external global i32 ; <i32*> [#uses=0]
-@Stats_Flag = external global i32 ; <i32*> [#uses=0]
-@Decode_Layer = external global i32 ; <i32*> [#uses=0]
-@.str75 = external constant [20 x i8] ; <[20 x i8]*> [#uses=0]
-@C.53.2124 = external constant [3 x [3 x i8]] ; <[3 x [3 x i8]]*> [#uses=0]
-@.str76 = external constant [3 x i8] ; <[3 x i8]*> [#uses=0]
-@C.60.2169 = external constant [3 x [3 x i8]] ; <[3 x [3 x i8]]*> [#uses=0]
-@.str77 = external constant [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str178 = external constant [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str279 = external constant [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str380 = external constant [11 x i8] ; <[11 x i8]*> [#uses=0]
-@outfile = external global i32 ; <i32*> [#uses=0]
-@.str481 = external constant [20 x i8] ; <[20 x i8]*> [#uses=0]
-@optr = external global i8* ; <i8**> [#uses=0]
-@obfr = external global [4096 x i8] ; <[4096 x i8]*> [#uses=0]
-@.str582 = external constant [35 x i8] ; <[35 x i8]*> [#uses=0]
-@u422.3075 = external global i8* ; <i8**> [#uses=0]
-@v422.3076 = external global i8* ; <i8**> [#uses=0]
-@.str683 = external constant [14 x i8] ; <[14 x i8]*> [#uses=0]
-@.str784 = external constant [5 x i8] ; <[5 x i8]*> [#uses=0]
-@u444.3185 = external global i8* ; <i8**> [#uses=0]
-@v444.3186 = external global i8* ; <i8**> [#uses=0]
-@u422.3183 = external global i8* ; <i8**> [#uses=0]
-@v422.3184 = external global i8* ; <i8**> [#uses=0]
-@.str885 = external constant [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str986 = external constant [5 x i8] ; <[5 x i8]*> [#uses=0]
-@tga24.3181 = external constant [14 x i8] ; <[14 x i8]*> [#uses=0]
-@.str1087 = external constant [14 x i8] ; <[14 x i8]*> [#uses=0]
-@bgate.2952.b = external global i1 ; <i1*> [#uses=0]
-@previous_temporal_reference.2947 = external global i32 ; <i32*> [#uses=0]
-@previous_picture_coding_type.2951 = external global i32 ; <i32*> [#uses=0]
-@previous_anchor_temporal_reference.2949 = external global i32 ; <i32*> [#uses=0]
-@.str88 = external constant [40 x i8] ; <[40 x i8]*> [#uses=0]
-@.str189 = external constant [31 x i8] ; <[31 x i8]*> [#uses=0]
-@.str290 = external constant [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str391 = external constant [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str492 = external constant [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str593 = external constant [49 x i8] ; <[49 x i8]*> [#uses=0]
-@.str694 = external constant [3 x i8] ; <[3 x i8]*> [#uses=0]
-@.str795 = external constant [18 x i8] ; <[18 x i8]*> [#uses=0]
-@.str896 = external constant [42 x i8] ; <[42 x i8]*> [#uses=0]
-@.str97 = external constant [18 x i8] ; <[18 x i8]*> [#uses=0]
-@.str198 = external constant [24 x i8] ; <[24 x i8]*> [#uses=0]
-@.str299 = external constant [43 x i8] ; <[43 x i8]*> [#uses=0]
-
-declare void @Initialize_Buffer()
-
-declare void @Fill_Buffer()
-
-declare i32 @read(...)
-
-declare i32 @Get_Byte()
-
-declare i32 @Get_Word()
-
-declare i32 @Show_Bits(i32)
-
-declare i32 @Get_Bits1()
-
-declare void @Flush_Buffer(i32)
-
-declare void @Next_Packet()
-
-declare i32 @Get_Bits(i32)
-
-declare void @Decode_MPEG1_Intra_Block(i32, i32*)
-
-declare i32 @Get_Luma_DC_dct_diff()
-
-declare i32 @Get_Chroma_DC_dct_diff()
-
-declare i32 @puts(i8*)
-
-declare i32 @fwrite(i8*, i32, i32, i8*)
-
-declare void @Decode_MPEG1_Non_Intra_Block(i32)
-
-declare void @Decode_MPEG2_Intra_Block(i32, i32*)
-
-declare void @Decode_MPEG2_Non_Intra_Block(i32)
-
-declare i32 @Get_Hdr()
-
-declare i32 @Get_Bits32()
-
-declare i32 @fprintf(%struct.FILE*, i8*, ...)
-
-declare void @next_start_code()
-
-declare fastcc void @sequence_header()
-
-define internal fastcc void @group_of_pictures_header() {
-entry:
- ret void
-}
-
-define internal fastcc void @picture_header() {
-entry:
- unreachable
-}
-
-declare i32 @slice_header()
-
-declare fastcc void @extension_and_user_data()
-
-declare void @Flush_Buffer32()
-
-declare fastcc void @sequence_extension()
-
-declare fastcc void @sequence_display_extension()
-
-declare fastcc void @quant_matrix_extension()
-
-declare fastcc void @sequence_scalable_extension()
-
-declare void @Error(i8*)
-
-declare fastcc void @picture_display_extension()
-
-declare fastcc void @picture_coding_extension()
-
-declare fastcc void @picture_spatial_scalable_extension()
-
-declare fastcc void @picture_temporal_scalable_extension()
-
-declare fastcc void @extra_bit_information()
-
-declare void @marker_bit(i8*)
-
-declare fastcc void @user_data()
-
-declare fastcc void @copyright_extension()
-
-declare i32 @printf(i8*, ...)
-
-declare fastcc void @Update_Temporal_Reference_Tacking_Data()
-
-define void @Decode_Picture(i32 %bitstream_framenum, i32 %sequence_framenum) {
-entry:
- %tmp16 = icmp eq i32 0, 0 ; <i1> [#uses=1]
- br i1 %tmp16, label %bb43, label %bb22
-
-bb22: ; preds = %entry
- ret void
-
-bb43: ; preds = %entry
- call fastcc void @picture_data( )
- ret void
-}
-
-declare void @Substitute_Frame_Buffer(i32, i32)
-
-define void @Spatial_Prediction() {
-entry:
- ret void
-}
-
-define internal fastcc void @picture_data() {
-entry:
- %tmp4 = icmp eq i32 0, 3 ; <i1> [#uses=1]
- br i1 %tmp4, label %bb8, label %bb
-
-bb: ; preds = %entry
- ret void
-
-bb8: ; preds = %entry
- %tmp11 = call fastcc i32 @slice( i32 0 ) ; <i32> [#uses=0]
- ret void
-}
-
-define internal fastcc i32 @slice(i32 %MBAmax) {
-entry:
- %tmp6 = icmp eq i32 0, 1 ; <i1> [#uses=1]
- br i1 %tmp6, label %bb9, label %bb231
-
-bb9: ; preds = %entry
- %tmp11 = icmp eq i32 0, 0 ; <i1> [#uses=1]
- br i1 %tmp11, label %bb27, label %bb17
-
-bb17: ; preds = %bb9
- ret i32 0
-
-bb27: ; preds = %bb9
- %tmp31 = icmp slt i32 0, %MBAmax ; <i1> [#uses=1]
- br i1 %tmp31, label %bb110, label %bb231
-
-resync: ; preds = %bb139
- ret i32 0
-
-bb110: ; preds = %bb27
- %tmp113 = icmp slt i32 0, %MBAmax ; <i1> [#uses=1]
- br i1 %tmp113, label %bb131, label %bb119
-
-bb119: ; preds = %bb110
- ret i32 0
-
-bb131: ; preds = %bb110
- %tmp133 = icmp eq i32 0, 1 ; <i1> [#uses=1]
- br i1 %tmp133, label %bb139, label %bb166
-
-bb139: ; preds = %bb131
- %tmp144 = call fastcc i32 @decode_macroblock( i32* null, i32* null, i32* null, i32* null, i32* null, [2 x [2 x i32]]* null, i32* null, [2 x i32]* null, i32* null ) ; <i32> [#uses=1]
- switch i32 %tmp144, label %bb166 [
- i32 -1, label %bb231
- i32 0, label %resync
- ]
-
-bb166: ; preds = %bb139, %bb131
- ret i32 0
-
-bb231: ; preds = %bb139, %bb27, %entry
- ret i32 0
-}
-
-declare i32 @Get_macroblock_address_increment()
-
-declare fastcc void @macroblock_modes(i32*, i32*, i32*, i32*, i32*, i32*, i32*, i32*, i32*)
-
-declare i32 @Get_macroblock_type()
-
-declare fastcc void @Add_Block(i32, i32, i32, i32, i32)
-
-declare fastcc void @Decode_SNR_Macroblock(i32*, i32*, i32, i32, i32*)
-
-declare i32 @Get_coded_block_pattern()
-
-declare fastcc void @Clear_Block(i32)
-
-declare fastcc void @Sum_Block(i32)
-
-declare fastcc void @Saturate(i16*)
-
-declare fastcc void @Update_Picture_Buffers()
-
-declare void @Output_Last_Frame_of_Sequence(i32)
-
-declare void @Write_Frame(i8**, i32)
-
-declare fastcc void @frame_reorder(i32, i32)
-
-declare fastcc void @motion_compensation(i32, i32, i32, [2 x [2 x i32]]*, [2 x i32]*, i32*, i32, i32)
-
-declare void @form_predictions(i32, i32, i32, i32, [2 x [2 x i32]]*, [2 x i32]*, i32*, i32)
-
-declare void @Reference_IDCT(i16*)
-
-declare void @Fast_IDCT(i16*)
-
-declare fastcc void @skipped_macroblock(i32*, [2 x [2 x i32]]*, i32*, [2 x i32]*, i32*, i32*)
-
-declare fastcc i32 @start_of_slice(i32*, i32*, i32*, [2 x [2 x i32]]*)
-
-define internal fastcc i32 @decode_macroblock(i32* %macroblock_type, i32* %stwtype, i32* %stwclass, i32* %motion_type, i32* %dct_type, [2 x [2 x i32]]* %PMV, i32* %dc_dct_pred, [2 x i32]* %motion_vertical_field_select, i32* %dmvector) {
-entry:
- %tmp3 = icmp eq i32 0, 1 ; <i1> [#uses=1]
- br i1 %tmp3, label %bb, label %bb15
-
-bb: ; preds = %entry
- %tmp7 = icmp slt i32 0, 3 ; <i1> [#uses=1]
- br i1 %tmp7, label %bb13, label %bb14
-
-bb13: ; preds = %bb
- br label %bb15
-
-bb14: ; preds = %bb
- ret i32 0
-
-bb15: ; preds = %bb13, %entry
- %tmp21 = load i32* @Fault_Flag, align 4 ; <i32> [#uses=1]
- %tmp22 = icmp eq i32 %tmp21, 0 ; <i1> [#uses=1]
- br i1 %tmp22, label %bb29, label %bb630
-
-bb29: ; preds = %bb15
- %tmp33 = icmp eq i32 0, 0 ; <i1> [#uses=1]
- br i1 %tmp33, label %bb91, label %bb39
-
-bb39: ; preds = %bb29
- ret i32 0
-
-bb91: ; preds = %bb29
- %tmp94 = and i32 0, 8 ; <i32> [#uses=0]
- %tmp121 = load %struct.layer_data** @ld, align 4 ; <%struct.layer_data*> [#uses=0]
- %tmp123 = load i32* null ; <i32> [#uses=1]
- %tmp124 = icmp eq i32 %tmp123, 0 ; <i1> [#uses=1]
- br i1 %tmp124, label %bb146, label %bb130
-
-bb130: ; preds = %bb91
- call void @motion_vectors( [2 x [2 x i32]]* %PMV, i32* %dmvector, [2 x i32]* %motion_vertical_field_select, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 )
- br label %bb157
-
-bb146: ; preds = %bb91
- br label %bb157
-
-bb157: ; preds = %bb146, %bb130
- %tmp159 = icmp eq i32 0, 0 ; <i1> [#uses=1]
- br i1 %tmp159, label %bb166, label %bb630
-
-bb166: ; preds = %bb157
- %tmp180 = icmp eq i32 0, 0 ; <i1> [#uses=1]
- br i1 %tmp180, label %bb201, label %bb186
-
-bb186: ; preds = %bb166
- br label %bb212
-
-bb201: ; preds = %bb166
- %tmp205 = load i32* @backward_f_code, align 4 ; <i32> [#uses=0]
- br label %bb212
-
-bb212: ; preds = %bb201, %bb186
- %tmp214 = icmp eq i32 0, 0 ; <i1> [#uses=1]
- br i1 %tmp214, label %bb221, label %bb630
-
-bb221: ; preds = %bb212
- %tmp22422511 = and i32 0, 1 ; <i32> [#uses=1]
- %toBool226 = icmp eq i32 %tmp22422511, 0 ; <i1> [#uses=1]
- br i1 %toBool226, label %bb239, label %bb230
-
-bb230: ; preds = %bb221
- ret i32 0
-
-bb239: ; preds = %bb221
- %tmp241 = load i32* getelementptr (%struct.layer_data* @base, i32 0, i32 17), align 4 ; <i32> [#uses=0]
- %tmp262 = icmp eq i32 0, 0 ; <i1> [#uses=1]
- br i1 %tmp262, label %bb296, label %bb268
-
-bb268: ; preds = %bb239
- %tmp270 = load i32* @chroma_format, align 4 ; <i32> [#uses=1]
- %tmp271 = icmp eq i32 %tmp270, 2 ; <i1> [#uses=1]
- br i1 %tmp271, label %bb277, label %bb282
-
-bb277: ; preds = %bb268
- br label %bb312
-
-bb282: ; preds = %bb268
- %tmp283 = load i32* @chroma_format, align 4 ; <i32> [#uses=0]
- br label %bb312
-
-bb296: ; preds = %bb239
- %tmp298 = load i32* %macroblock_type ; <i32> [#uses=1]
- %tmp2993009 = and i32 %tmp298, 1 ; <i32> [#uses=1]
- %toBool301 = icmp eq i32 %tmp2993009, 0 ; <i1> [#uses=1]
- br i1 %toBool301, label %bb312, label %bb305
-
-bb305: ; preds = %bb296
- %tmp306 = load i32* @block_count, align 4 ; <i32> [#uses=0]
- %tmp308 = add i32 0, -1 ; <i32> [#uses=0]
- br label %bb312
-
-bb312: ; preds = %bb305, %bb296, %bb282, %bb277
- %tmp313 = load i32* @Fault_Flag, align 4 ; <i32> [#uses=1]
- %tmp314 = icmp eq i32 %tmp313, 0 ; <i1> [#uses=1]
- br i1 %tmp314, label %bb398, label %bb630
-
-bb346: ; preds = %cond_true404
- %toBool351 = icmp eq i32 0, 0 ; <i1> [#uses=1]
- %tmp359 = icmp ne i32 0, 0 ; <i1> [#uses=2]
- br i1 %toBool351, label %bb372, label %bb355
-
-bb355: ; preds = %bb346
- br i1 %tmp359, label %bb365, label %bb368
-
-bb365: ; preds = %bb355
- br label %bb386
-
-bb368: ; preds = %bb355
- call void @Decode_MPEG1_Intra_Block( i32 0, i32* %dc_dct_pred )
- br label %bb386
-
-bb372: ; preds = %bb346
- br i1 %tmp359, label %bb382, label %bb384
-
-bb382: ; preds = %bb372
- br label %bb386
-
-bb384: ; preds = %bb372
- call void @Decode_MPEG1_Non_Intra_Block( i32 0 )
- br label %bb386
-
-bb386: ; preds = %bb384, %bb382, %bb368, %bb365
- %tmp388 = icmp eq i32 0, 0 ; <i1> [#uses=1]
- br i1 %tmp388, label %bb395, label %bb630
-
-bb395: ; preds = %cond_true404, %bb386
- %tmp397 = add i32 0, 1 ; <i32> [#uses=0]
- ret i32 0
-
-bb398: ; preds = %bb312
- %tmp401 = icmp slt i32 0, 0 ; <i1> [#uses=1]
- br i1 %tmp401, label %cond_true404, label %bb407
-
-cond_true404: ; preds = %bb398
- %tmp340341514 = and i32 0, 0 ; <i32> [#uses=1]
- %toBool342 = icmp eq i32 %tmp340341514, 0 ; <i1> [#uses=1]
- br i1 %toBool342, label %bb395, label %bb346
-
-bb407: ; preds = %bb398
- %tmp408 = load i32* @picture_coding_type, align 4 ; <i32> [#uses=0]
- %tmp419 = load i32* %macroblock_type ; <i32> [#uses=1]
- %tmp420 = and i32 %tmp419, 1 ; <i32> [#uses=1]
- %tmp421 = icmp eq i32 %tmp420, 0 ; <i1> [#uses=0]
- %tmp442 = load i32* %macroblock_type ; <i32> [#uses=1]
- %tmp4434447 = and i32 %tmp442, 1 ; <i32> [#uses=0]
- %tmp450 = load i32* @concealment_motion_vectors, align 4 ; <i32> [#uses=0]
- %tmp572 = icmp eq i32 0, 4 ; <i1> [#uses=1]
- br i1 %tmp572, label %bb578, label %bb630
-
-bb578: ; preds = %bb407
- %tmp613 = getelementptr [2 x [2 x i32]]* %PMV, i32 1, i32 1, i32 1 ; <i32*> [#uses=0]
- %tmp618 = getelementptr [2 x [2 x i32]]* %PMV, i32 1, i32 1, i32 0 ; <i32*> [#uses=0]
- %tmp623 = getelementptr [2 x [2 x i32]]* %PMV, i32 0, i32 1, i32 1 ; <i32*> [#uses=0]
- %tmp628 = getelementptr [2 x [2 x i32]]* %PMV, i32 0, i32 1, i32 0 ; <i32*> [#uses=0]
- ret i32 1
-
-bb630: ; preds = %bb407, %bb386, %bb312, %bb212, %bb157, %bb15
- %tmp.0 = phi i32 [ 0, %bb15 ], [ 0, %bb157 ], [ 0, %bb212 ], [ 0, %bb312 ], [ 0, %bb386 ], [ 1, %bb407 ] ; <i32> [#uses=1]
- ret i32 %tmp.0
-}
-
-declare void @motion_vectors([2 x [2 x i32]]*, i32*, [2 x i32]*, i32, i32, i32, i32, i32, i32, i32)
-
-declare void @motion_vector(i32*, i32*, i32, i32, i32, i32, i32)
-
-declare fastcc i32 @Get_I_macroblock_type()
-
-declare fastcc i32 @Get_P_macroblock_type()
-
-declare fastcc i32 @Get_B_macroblock_type()
-
-declare fastcc void @Get_D_macroblock_type()
-
-declare fastcc i32 @Get_I_Spatial_macroblock_type()
-
-declare fastcc i32 @Get_P_Spatial_macroblock_type()
-
-declare fastcc i32 @Get_B_Spatial_macroblock_type()
-
-declare fastcc i32 @Get_SNR_macroblock_type()
-
-declare i32 @Get_motion_code()
-
-declare i32 @Get_dmvector()
-
-declare fastcc void @idctrow(i16*)
-
-declare fastcc void @idctcol(i16*)
-
-declare void @Initialize_Fast_IDCT()
-
-declare void @Initialize_Reference_IDCT()
-
-declare double @cos(double)
-
-declare double @floor(double)
-
-declare fastcc void @decode_motion_vector(i32*, i32, i32, i32, i32)
-
-declare void @Dual_Prime_Arithmetic([2 x i32]*, i32*, i32, i32)
-
-declare i32 @main(i32, i8**)
-
-declare i32 @open(i8*, i32, ...)
-
-declare void @exit(i32)
-
-declare void @llvm.memcpy.i32(i8*, i8*, i32, i32)
-
-declare i32 @lseek(i32, i32, i32)
-
-declare i32 @sprintf(i8*, i8*, ...)
-
-declare i32 @close(i32)
-
-declare fastcc void @Initialize_Decoder()
-
-declare fastcc void @Initialize_Sequence()
-
-declare void @Print_Bits(i32, i32, i32)
-
-declare fastcc void @Process_Options(i32, i8**)
-
-declare i32 @toupper(i32)
-
-declare i32 @atoi(i8*)
-
-declare fastcc i32 @Headers()
-
-declare fastcc void @Decode_Bitstream()
-
-declare fastcc void @Deinitialize_Sequence()
-
-declare fastcc i32 @video_sequence(i32*)
-
-declare void @Clear_Options()
-
-declare fastcc void @form_prediction(i8**, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32)
-
-declare fastcc void @form_component_prediction(i8*, i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32)
-
-declare fastcc void @Read_Lower_Layer_Component_Framewise(i32, i32, i32)
-
-declare i8* @strcat(i8*, i8*)
-
-declare %struct.FILE* @fopen(i8*, i8*)
-
-declare i32 @_IO_getc(%struct.FILE*)
-
-declare i32 @fclose(%struct.FILE*)
-
-declare fastcc void @Read_Lower_Layer_Component_Fieldwise(i32, i32, i32)
-
-declare fastcc void @Make_Spatial_Prediction_Frame(i32, i32, i8*, i8*, i16*, i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32)
-
-declare fastcc void @Deinterlace(i8*, i8*, i32, i32, i32, i32)
-
-declare fastcc void @Subsample_Vertical(i8*, i16*, i32, i32, i32, i32, i32, i32, i32)
-
-declare fastcc void @Subsample_Horizontal(i16*, i8*, i32, i32, i32, i32, i32, i32, i32)
-
-declare fastcc void @store_one(i8*, i8**, i32, i32, i32)
-
-declare fastcc void @store_yuv(i8*, i8**, i32, i32, i32)
-
-declare fastcc void @store_yuv1(i8*, i8*, i32, i32, i32, i32)
-
-declare i32 @write(...)
-
-declare fastcc void @store_sif(i8*, i8**, i32, i32, i32)
-
-declare fastcc void @store_ppm_tga(i8*, i8**, i32, i32, i32, i32)
-
-declare fastcc void @putbyte(i32)
-
-declare fastcc void @putword(i32)
-
-declare fastcc void @conv422to444(i8*, i8*)
-
-declare fastcc void @conv420to422(i8*, i8*)
-
-declare fastcc void @Read_Frame(i8*, i8**, i32)
-
-declare fastcc i32 @Read_Components(i8*, i32)
-
-declare fastcc void @Read_Component(i8*, i8*, i32, i32)
-
-declare fastcc i32 @Extract_Components(i8*, i32)
-
-declare i32 @fseek(%struct.FILE*, i32, i32)
-
-declare i32 @fread(i8*, i32, i32, %struct.FILE*)
-
-declare fastcc void @Copy_Frame(i8*, i8*, i32, i32, i32, i32)
-
-declare i32 @Get_Long()
diff --git a/test/Transforms/CondProp/2009-01-25-SingleEntryPHI.ll b/test/Transforms/CondProp/2009-01-25-SingleEntryPHI.ll
deleted file mode 100644
index 58dd29f5e28e..000000000000
--- a/test/Transforms/CondProp/2009-01-25-SingleEntryPHI.ll
+++ /dev/null
@@ -1,37 +0,0 @@
-; RUN: opt < %s -condprop | llvm-dis
-; PR3405
-target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
-target triple = "x86_64-unknown-linux-gnu"
-
-define i32 @main(i32 %argc, i8** %argv) nounwind {
-entry:
- br label %bb2
-
-bb2: ; preds = %bb.bb2_crit_edge, %entry
- br i1 false, label %bb5.thread2, label %bb
-
-bb: ; preds = %bb2
- br i1 false, label %bb3, label %bb.bb2_crit_edge
-
-bb.bb2_crit_edge: ; preds = %bb
- br label %bb2
-
-bb3: ; preds = %bb
- %.lcssa4 = phi i1 [ false, %bb ] ; <i1> [#uses=1]
- br i1 %.lcssa4, label %bb5.thread, label %bb6
-
-bb5.thread: ; preds = %bb3
- br label %bb7
-
-bb7: ; preds = %bb5.thread2, %bb5.thread
- br label %UnifiedReturnBlock
-
-bb6: ; preds = %bb3
- br label %UnifiedReturnBlock
-
-bb5.thread2: ; preds = %bb2
- br label %bb7
-
-UnifiedReturnBlock: ; preds = %bb6, %bb7
- ret i32 0
-}
diff --git a/test/Transforms/CondProp/basictest-dbg.ll b/test/Transforms/CondProp/basictest-dbg.ll
deleted file mode 100644
index 9e05ff15105f..000000000000
--- a/test/Transforms/CondProp/basictest-dbg.ll
+++ /dev/null
@@ -1,45 +0,0 @@
-; RUN: opt < %s -condprop -S | \
-; RUN: not grep {br label}
-
- %llvm.dbg.anchor.type = type { i32, i32 }
- %llvm.dbg.compile_unit.type = type { i32, { }*, i32, i8*, i8*, i8*, i1, i1, i8* }
-
-@llvm.dbg.compile_units = linkonce constant %llvm.dbg.anchor.type { i32 458752, i32 17 }, section "llvm.metadata" ;
-
-@.str = internal constant [4 x i8] c"a.c\00", section "llvm.metadata" ; <[4 x i8]*> [#uses=1]
-@.str1 = internal constant [6 x i8] c"/tmp/\00", section "llvm.metadata" ; <[6 x i8]*> [#uses=1]
-@.str2 = internal constant [55 x i8] c"4.2.1 (Based on Apple Inc. build 5636) (LLVM build 00)\00", section "llvm.metadata" ; <[55 x i8]*> [#uses=1]
-@llvm.dbg.compile_unit = internal constant %llvm.dbg.compile_unit.type { i32 458769, { }* bitcast (%llvm.dbg.anchor.type* @llvm.dbg.compile_units to { }*), i32 1, i8* getelementptr ([4 x i8]* @.str, i32 0, i32 0), i8* getelementptr ([6 x i8]* @.str1, i32 0, i32 0), i8* getelementptr ([55 x i8]* @.str2, i32 0, i32 0), i1 true, i1 false, i8* null }, section "llvm.metadata" ; <%llvm.dbg.compile_unit.type*> [#uses=1]
-
-declare void @llvm.dbg.stoppoint(i32, i32, { }*) nounwind
-
-
-define i32 @test(i1 %C) {
- br i1 %C, label %T1, label %F1
-
-T1: ; preds = %0
-call void @llvm.dbg.stoppoint(i32 5, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
- br label %Cont
-
-F1: ; preds = %0
-call void @llvm.dbg.stoppoint(i32 5, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
- br label %Cont
-
-Cont: ; preds = %F1, %T1
- %C2 = phi i1 [ false, %F1 ], [ true, %T1 ] ; <i1> [#uses=1]
-call void @llvm.dbg.stoppoint(i32 5, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
- br i1 %C2, label %T2, label %F2
-
-T2: ; preds = %Cont
-call void @llvm.dbg.stoppoint(i32 5, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
- call void @bar( )
-call void @llvm.dbg.stoppoint(i32 5, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
- ret i32 17
-
-F2: ; preds = %Cont
-call void @llvm.dbg.stoppoint(i32 5, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*))
- ret i32 1
-}
-
-declare void @bar()
-
diff --git a/test/Transforms/CondProp/basictest.ll b/test/Transforms/CondProp/basictest.ll
deleted file mode 100644
index 49d473533a10..000000000000
--- a/test/Transforms/CondProp/basictest.ll
+++ /dev/null
@@ -1,28 +0,0 @@
-; RUN: opt < %s -condprop -S | \
-; RUN: not grep {br label}
-; RUN: opt < %s -condprop -S | not grep T2
-
-
-define i32 @test(i1 %C) {
- br i1 %C, label %T1, label %F1
-
-T1: ; preds = %0
- br label %Cont
-
-F1: ; preds = %0
- br label %Cont
-
-Cont: ; preds = %F1, %T1
- %C2 = phi i1 [ false, %F1 ], [ true, %T1 ] ; <i1> [#uses=1]
- br i1 %C2, label %T2, label %F2
-
-T2: ; preds = %Cont
- call void @bar( )
- ret i32 17
-
-F2: ; preds = %Cont
- ret i32 1
-}
-
-declare void @bar()
-
diff --git a/test/Transforms/CondProp/dg.exp b/test/Transforms/CondProp/dg.exp
deleted file mode 100644
index 39954d8a498d..000000000000
--- a/test/Transforms/CondProp/dg.exp
+++ /dev/null
@@ -1,3 +0,0 @@
-load_lib llvm.exp
-
-RunLLVMTests [lsort [glob -nocomplain $srcdir/$subdir/*.{ll}]]
diff --git a/test/Transforms/CondProp/phisimplify.ll b/test/Transforms/CondProp/phisimplify.ll
deleted file mode 100644
index ce33f1e59a65..000000000000
--- a/test/Transforms/CondProp/phisimplify.ll
+++ /dev/null
@@ -1,43 +0,0 @@
-; RUN: opt < %s -condprop -S | not grep phi
-
-define i32 @test(i32 %C, i1 %Val) {
- switch i32 %C, label %T1 [
- i32 4, label %T2
- i32 17, label %T3
- ]
-
-T1: ; preds = %0
- call void @a( )
- br label %Cont
-
-T2: ; preds = %0
- call void @b( )
- br label %Cont
-
-T3: ; preds = %0
- call void @c( )
- br label %Cont
-
-Cont: ; preds = %T3, %T2, %T1
- ;; PHI becomes dead after threading T2
- %C2 = phi i1 [ %Val, %T1 ], [ true, %T2 ], [ %Val, %T3 ] ; <i1> [#uses=1]
- br i1 %C2, label %L2, label %F2
-
-L2: ; preds = %Cont
- call void @d( )
- ret i32 17
-
-F2: ; preds = %Cont
- call void @e( )
- ret i32 1
-}
-
-declare void @a()
-
-declare void @b()
-
-declare void @c()
-
-declare void @d()
-
-declare void @e()
diff --git a/test/Transforms/CondProp/phisimplify2.ll b/test/Transforms/CondProp/phisimplify2.ll
deleted file mode 100644
index 4ecbd8856b78..000000000000
--- a/test/Transforms/CondProp/phisimplify2.ll
+++ /dev/null
@@ -1,46 +0,0 @@
-; RUN: opt < %s -condprop -S | not grep phi
-
-declare i1 @foo()
-
-define i32 @test(i32 %C) {
- %Val = call i1 @foo( ) ; <i1> [#uses=2]
- switch i32 %C, label %T1 [
- i32 4, label %T2
- i32 17, label %T3
- ]
-
-T1: ; preds = %0
- call void @a( )
- br label %Cont
-
-T2: ; preds = %0
- call void @b( )
- br label %Cont
-
-T3: ; preds = %0
- call void @c( )
- br label %Cont
-
-Cont: ; preds = %T3, %T2, %T1
- ;; PHI becomes dead after threading T2
- %C2 = phi i1 [ %Val, %T1 ], [ true, %T2 ], [ %Val, %T3 ] ; <i1> [#uses=1]
- br i1 %C2, label %L2, label %F2
-
-L2: ; preds = %Cont
- call void @d( )
- ret i32 17
-
-F2: ; preds = %Cont
- call void @e( )
- ret i32 1
-}
-
-declare void @a()
-
-declare void @b()
-
-declare void @c()
-
-declare void @d()
-
-declare void @e()
diff --git a/test/Transforms/CondProp/phisimplify3.ll b/test/Transforms/CondProp/phisimplify3.ll
deleted file mode 100644
index 6166efb1103f..000000000000
--- a/test/Transforms/CondProp/phisimplify3.ll
+++ /dev/null
@@ -1,26 +0,0 @@
-; RUN: opt < %s -condprop -S | not grep phi
-
-define i32 @foo(i1, i32, i32) {
-prologue:
- br i1 %0, label %eq, label %ne
-
-eq: ; preds = %prologue
- store i32 0, i32* inttoptr (i32 10000 to i32*)
- %3 = icmp eq i32 %1, %2 ; <i1> [#uses=1]
- br label %join
-
-ne: ; preds = %prologue
- %4 = icmp ne i32 %1, %2 ; <i1> [#uses=1]
- br label %join
-
-join: ; preds = %ne, %eq
- %5 = phi i1 [ %3, %eq ], [ %4, %ne ] ; <i1> [#uses=1]
- br i1 %5, label %yes, label %no
-
-yes: ; preds = %join
- store i32 0, i32* inttoptr (i32 20000 to i32*)
- ret i32 5
-
-no: ; preds = %join
- ret i32 20
-}
diff --git a/test/Transforms/ConstProp/2009-09-19-ConstFold-i1-ConstExpr.ll b/test/Transforms/ConstProp/2009-09-19-ConstFold-i1-ConstExpr.ll
deleted file mode 100644
index 8d92c3fba4bf..000000000000
--- a/test/Transforms/ConstProp/2009-09-19-ConstFold-i1-ConstExpr.ll
+++ /dev/null
@@ -1,41 +0,0 @@
-; RUN: llvm-as < %s | llvm-dis | FileCheck %s
-
-@X = external global i8
-@Y = external global i8
-@Z = external global i8
-
-@A = global i1 add (i1 icmp ult (i8* @X, i8* @Y), i1 icmp ult (i8* @X, i8* @Z))
-; CHECK: @A = global i1 xor (i1 icmp ult (i8* @X, i8* @Y), i1 icmp ult (i8* @X, i8* @Z)) ; <i1*> [#uses=0]
-@B = global i1 sub (i1 icmp ult (i8* @X, i8* @Y), i1 icmp ult (i8* @X, i8* @Z))
-; CHECK: @B = global i1 xor (i1 icmp ult (i8* @X, i8* @Y), i1 icmp ult (i8* @X, i8* @Z)) ; <i1*> [#uses=0]
-@C = global i1 mul (i1 icmp ult (i8* @X, i8* @Y), i1 icmp ult (i8* @X, i8* @Z))
-; CHECK: @C = global i1 and (i1 icmp ult (i8* @X, i8* @Y), i1 icmp ult (i8* @X, i8* @Z)) ; <i1*> [#uses=0]
-
-@D = global i1 sdiv (i1 icmp ult (i8* @X, i8* @Y), i1 icmp ult (i8* @X, i8* @Z))
-; CHECK: @D = global i1 icmp ult (i8* @X, i8* @Y) ; <i1*> [#uses=0]
-@E = global i1 udiv (i1 icmp ult (i8* @X, i8* @Y), i1 icmp ult (i8* @X, i8* @Z))
-; CHECK: @E = global i1 icmp ult (i8* @X, i8* @Y) ; <i1*> [#uses=0]
-@F = global i1 srem (i1 icmp ult (i8* @X, i8* @Y), i1 icmp ult (i8* @X, i8* @Z))
-; CHECK: @F = global i1 false ; <i1*> [#uses=0]
-@G = global i1 urem (i1 icmp ult (i8* @X, i8* @Y), i1 icmp ult (i8* @X, i8* @Z))
-; CHECK: @G = global i1 false ; <i1*> [#uses=0]
-
-@H = global i1 icmp ule (i32* bitcast (i8* @X to i32*), i32* bitcast (i8* @Y to i32*))
-; CHECK: @H = global i1 icmp ule (i8* @X, i8* @Y) ; <i1*> [#uses=0]
-
-@I = global i1 xor (i1 icmp ult (i8* @X, i8* @Y), i1 false)
-; CHECK: @I = global i1 icmp ult (i8* @X, i8* @Y) ; <i1*> [#uses=0]
-@J = global i1 xor (i1 icmp ult (i8* @X, i8* @Y), i1 true)
-; CHECK: @J = global i1 icmp uge (i8* @X, i8* @Y) ; <i1*> [#uses=0]
-
-@K = global i1 icmp eq (i1 icmp ult (i8* @X, i8* @Y), i1 false)
-; CHECK: @K = global i1 icmp uge (i8* @X, i8* @Y) ; <i1*> [#uses=0]
-@L = global i1 icmp eq (i1 icmp ult (i8* @X, i8* @Y), i1 true)
-; CHECK: @L = global i1 icmp ult (i8* @X, i8* @Y) ; <i1*> [#uses=0]
-@M = global i1 icmp ne (i1 icmp ult (i8* @X, i8* @Y), i1 true)
-; CHECK: @M = global i1 icmp uge (i8* @X, i8* @Y) ; <i1*> [#uses=0]
-@N = global i1 icmp ne (i1 icmp ult (i8* @X, i8* @Y), i1 false)
-; CHECK: @N = global i1 icmp ult (i8* @X, i8* @Y) ; <i1*> [#uses=0]
-
-@O = global i1 icmp eq (i32 zext (i1 icmp ult (i8* @X, i8* @Y) to i32), i32 0)
-; CHECK: @O = global i1 icmp uge (i8* @X, i8* @Y) ; <i1*> [#uses=0]
diff --git a/test/Transforms/DeadStoreElimination/crash.ll b/test/Transforms/DeadStoreElimination/crash.ll
index 7f82cbfd9263..f89f8f5185c6 100644
--- a/test/Transforms/DeadStoreElimination/crash.ll
+++ b/test/Transforms/DeadStoreElimination/crash.ll
@@ -1,4 +1,4 @@
-; RUN: opt < %s -dse | llvm-dis
+; RUN: opt < %s -dse -S
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
target triple = "i386-apple-darwin10.0"
@@ -24,3 +24,20 @@ bb: ; preds = %bb, %entry
%2 = tail call signext i8 @foo(i8 signext undef, i8 signext 1) nounwind ; <i8> [#uses=1]
br label %bb
}
+
+define fastcc i32 @test2() nounwind ssp {
+bb14: ; preds = %bb4
+ %0 = bitcast i8* undef to i8** ; <i8**> [#uses=1]
+ %1 = getelementptr inbounds i8** %0, i64 undef ; <i8**> [#uses=1]
+ %2 = bitcast i8** %1 to i16* ; <i16*> [#uses=2]
+ %3 = getelementptr inbounds i16* %2, i64 undef ; <i16*> [#uses=1]
+ %4 = bitcast i16* %3 to i8* ; <i8*> [#uses=1]
+ %5 = getelementptr inbounds i8* %4, i64 undef ; <i8*> [#uses=1]
+ %6 = getelementptr inbounds i16* %2, i64 undef ; <i16*> [#uses=1]
+ store i16 undef, i16* %6, align 2
+ %7 = getelementptr inbounds i8* %5, i64 undef ; <i8*> [#uses=1]
+ call void @llvm.memcpy.i64(i8* %7, i8* undef, i64 undef, i32 1) nounwind
+ unreachable
+}
+
+declare void @llvm.memcpy.i64(i8* nocapture, i8* nocapture, i64, i32) nounwind
diff --git a/test/Transforms/DeadStoreElimination/lifetime.ll b/test/Transforms/DeadStoreElimination/lifetime.ll
index b2da790db278..fd127d9f51bc 100644
--- a/test/Transforms/DeadStoreElimination/lifetime.ll
+++ b/test/Transforms/DeadStoreElimination/lifetime.ll
@@ -1,6 +1,9 @@
; RUN: opt -S -dse < %s | FileCheck %s
-declare void @llvm.lifetime.end(i64, i8*)
+target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"
+
+declare void @llvm.lifetime.start(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.end(i64, i8* nocapture) nounwind
declare void @llvm.memset.i8(i8*, i8, i8, i32)
define void @test1() {
@@ -17,3 +20,18 @@ define void @test1() {
ret void
; CHECK: ret void
}
+
+define void @test2(i32* %P) {
+; CHECK: test2
+ %Q = getelementptr i32* %P, i32 1
+ %R = bitcast i32* %Q to i8*
+ call void @llvm.lifetime.start(i64 4, i8* %R)
+; CHECK: lifetime.start
+ store i32 0, i32* %Q ;; This store is dead.
+; CHECK-NOT: store
+ call void @llvm.lifetime.end(i64 4, i8* %R)
+; CHECK: lifetime.end
+ ret void
+}
+
+
diff --git a/test/Transforms/GVN/crash.ll b/test/Transforms/GVN/crash.ll
new file mode 100644
index 000000000000..30563cd5848a
--- /dev/null
+++ b/test/Transforms/GVN/crash.ll
@@ -0,0 +1,94 @@
+; RUN: opt -gvn %s -disable-output
+
+; PR5631
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-apple-darwin10.0"
+
+define i32* @peel_to_type(i8* %name, i32 %namelen, i32* %o, i32 %expected_type) nounwind ssp {
+entry:
+ br i1 undef, label %if.end13, label %while.body.preheader
+
+
+if.end13: ; preds = %if.then6
+ br label %while.body.preheader
+
+while.body.preheader: ; preds = %if.end13, %if.end
+ br label %while.body
+
+while.body: ; preds = %while.body.backedge, %while.body.preheader
+ %o.addr.0 = phi i32* [ undef, %while.body.preheader ], [ %o.addr.0.be, %while.body.backedge ] ; <i32*> [#uses=2]
+ br i1 false, label %return.loopexit, label %lor.lhs.false
+
+lor.lhs.false: ; preds = %while.body
+ %tmp20 = bitcast i32* %o.addr.0 to i32* ; <i32*> [#uses=1]
+ %tmp22 = load i32* %tmp20 ; <i32> [#uses=0]
+ br i1 undef, label %land.lhs.true24, label %if.end31
+
+land.lhs.true24: ; preds = %lor.lhs.false
+ %call28 = call i32* @parse_object(i8* undef) nounwind ; <i32*> [#uses=0]
+ br i1 undef, label %return.loopexit, label %if.end31
+
+if.end31: ; preds = %land.lhs.true24, %lor.lhs.false
+ br i1 undef, label %return.loopexit, label %if.end41
+
+if.end41: ; preds = %if.end31
+ %tmp43 = bitcast i32* %o.addr.0 to i32* ; <i32*> [#uses=1]
+ %tmp45 = load i32* %tmp43 ; <i32> [#uses=0]
+ br i1 undef, label %if.then50, label %if.else
+
+if.then50: ; preds = %if.end41
+ %tmp53 = load i32** undef ; <i32*> [#uses=1]
+ br label %while.body.backedge
+
+if.else: ; preds = %if.end41
+ br i1 undef, label %if.then62, label %if.else67
+
+if.then62: ; preds = %if.else
+ br label %while.body.backedge
+
+while.body.backedge: ; preds = %if.then62, %if.then50
+ %o.addr.0.be = phi i32* [ %tmp53, %if.then50 ], [ undef, %if.then62 ] ; <i32*> [#uses=1]
+ br label %while.body
+
+if.else67: ; preds = %if.else
+ ret i32* null
+
+return.loopexit: ; preds = %if.end31, %land.lhs.true24, %while.body
+ ret i32* undef
+}
+
+declare i32* @parse_object(i8*)
+
+
+
+
+
+
+%struct.attribute_spec = type { i8*, i32, i32, i8, i8, i8 }
+
+@attribute_tables = external global [4 x %struct.attribute_spec*] ; <[4 x %struct.attribute_spec*]*> [#uses=2]
+
+define void @decl_attributes() nounwind {
+entry:
+ br label %bb69.i
+
+bb69.i: ; preds = %bb57.i.preheader
+ %tmp4 = getelementptr inbounds [4 x %struct.attribute_spec*]* @attribute_tables, i32 0, i32 undef ; <%struct.attribute_spec**> [#uses=1]
+ %tmp3 = load %struct.attribute_spec** %tmp4, align 4 ; <%struct.attribute_spec*> [#uses=1]
+ br label %bb65.i
+
+bb65.i: ; preds = %bb65.i.preheader, %bb64.i
+ %storemerge6.i = phi i32 [ 1, %bb64.i ], [ 0, %bb69.i ] ; <i32> [#uses=3]
+ %scevgep14 = getelementptr inbounds %struct.attribute_spec* %tmp3, i32 %storemerge6.i, i32 0 ; <i8**> [#uses=1]
+ %tmp2 = load i8** %scevgep14, align 4 ; <i8*> [#uses=0]
+ %tmp = load %struct.attribute_spec** %tmp4, align 4 ; <%struct.attribute_spec*> [#uses=1]
+ %scevgep1516 = getelementptr inbounds %struct.attribute_spec* %tmp, i32 %storemerge6.i, i32 0 ; <i8**> [#uses=0]
+ unreachable
+
+bb64.i: ; Unreachable
+ br label %bb65.i
+
+bb66.i: ; Unreachable
+ br label %bb69.i
+}
diff --git a/test/Transforms/GVN/lpre-basic.ll b/test/Transforms/GVN/lpre-basic.ll
deleted file mode 100644
index 41b51806cd46..000000000000
--- a/test/Transforms/GVN/lpre-basic.ll
+++ /dev/null
@@ -1,18 +0,0 @@
-; RUN: opt < %s -gvn -enable-load-pre -S | grep {%PRE = phi}
-
-define i32 @test(i32* %p, i1 %C) {
-block1:
- br i1 %C, label %block2, label %block3
-
-block2:
- br label %block4
-
-block3:
- %b = bitcast i32 0 to i32
- store i32 %b, i32* %p
- br label %block4
-
-block4:
- %PRE = load i32* %p
- ret i32 %PRE
-}
diff --git a/test/Transforms/GVN/nonescaping-malloc.ll b/test/Transforms/GVN/nonescaping-malloc.ll
new file mode 100644
index 000000000000..5a42d9536ca1
--- /dev/null
+++ b/test/Transforms/GVN/nonescaping-malloc.ll
@@ -0,0 +1,108 @@
+; RUN: opt < %s -gvn -stats -disable-output |& grep {Number of loads deleted}
+; rdar://7363102
+
+; GVN should be able to eliminate load %tmp22.i, because it is redundant with
+; load %tmp8.i. This requires being able to prove that %tmp7.i doesn't
+; alias the malloc'd value %tmp.i20.i.i, which it can do since %tmp7.i
+; is derived from %tmp5.i which is computed from a load, and %tmp.i20.i.i
+; is never stored and does not escape.
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
+target triple = "x86_64-apple-darwin10.0"
+
+%"struct.llvm::MallocAllocator" = type <{ i8 }>
+%"struct.llvm::StringMap<void*,llvm::MallocAllocator>" = type { %"struct.llvm::StringMapImpl", %"struct.llvm::MallocAllocator" }
+%"struct.llvm::StringMapEntry<void*>" = type { %"struct.llvm::StringMapEntryBase", i8* }
+%"struct.llvm::StringMapEntryBase" = type { i32 }
+%"struct.llvm::StringMapImpl" = type { %"struct.llvm::StringMapImpl::ItemBucket"*, i32, i32, i32, i32 }
+%"struct.llvm::StringMapImpl::ItemBucket" = type { i32, %"struct.llvm::StringMapEntryBase"* }
+%"struct.llvm::StringRef" = type { i8*, i64 }
+
+define %"struct.llvm::StringMapEntry<void*>"* @_Z3fooRN4llvm9StringMapIPvNS_15MallocAllocatorEEEPKc(%"struct.llvm::StringMap<void*,llvm::MallocAllocator>"* %X, i8* %P) ssp {
+entry:
+ %tmp = alloca %"struct.llvm::StringRef", align 8 ; <%"struct.llvm::StringRef"*> [#uses=3]
+ %tmp.i = getelementptr inbounds %"struct.llvm::StringRef"* %tmp, i64 0, i32 0 ; <i8**> [#uses=1]
+ store i8* %P, i8** %tmp.i, align 8
+ %tmp1.i = call i64 @strlen(i8* %P) nounwind readonly ; <i64> [#uses=1]
+ %tmp2.i = getelementptr inbounds %"struct.llvm::StringRef"* %tmp, i64 0, i32 1 ; <i64*> [#uses=1]
+ store i64 %tmp1.i, i64* %tmp2.i, align 8
+ %tmp1 = call %"struct.llvm::StringMapEntry<void*>"* @_ZN4llvm9StringMapIPvNS_15MallocAllocatorEE16GetOrCreateValueERKNS_9StringRefE(%"struct.llvm::StringMap<void*,llvm::MallocAllocator>"* %X, %"struct.llvm::StringRef"* %tmp) ssp ; <%"struct.llvm::StringMapEntry<void*>"*> [#uses=1]
+ ret %"struct.llvm::StringMapEntry<void*>"* %tmp1
+}
+
+declare i64 @strlen(i8* nocapture) nounwind readonly
+
+declare noalias i8* @malloc(i64) nounwind
+
+declare void @llvm.memcpy.i64(i8* nocapture, i8* nocapture, i64, i32) nounwind
+
+declare i32 @_ZN4llvm13StringMapImpl15LookupBucketForENS_9StringRefE(%"struct.llvm::StringMapImpl"*, i64, i64)
+
+define linkonce_odr %"struct.llvm::StringMapEntry<void*>"* @_ZN4llvm9StringMapIPvNS_15MallocAllocatorEE16GetOrCreateValueERKNS_9StringRefE(%"struct.llvm::StringMap<void*,llvm::MallocAllocator>"* %this, %"struct.llvm::StringRef"* nocapture %Key) ssp align 2 {
+entry:
+ %elt = bitcast %"struct.llvm::StringRef"* %Key to i64* ; <i64*> [#uses=1]
+ %val = load i64* %elt ; <i64> [#uses=3]
+ %tmp = getelementptr inbounds %"struct.llvm::StringRef"* %Key, i64 0, i32 1 ; <i64*> [#uses=1]
+ %val2 = load i64* %tmp ; <i64> [#uses=2]
+ %tmp2.i = getelementptr inbounds %"struct.llvm::StringMap<void*,llvm::MallocAllocator>"* %this, i64 0, i32 0 ; <%"struct.llvm::StringMapImpl"*> [#uses=1]
+ %tmp3.i = tail call i32 @_ZN4llvm13StringMapImpl15LookupBucketForENS_9StringRefE(%"struct.llvm::StringMapImpl"* %tmp2.i, i64 %val, i64 %val2) ; <i32> [#uses=1]
+ %tmp4.i = getelementptr inbounds %"struct.llvm::StringMap<void*,llvm::MallocAllocator>"* %this, i64 0, i32 0, i32 0 ; <%"struct.llvm::StringMapImpl::ItemBucket"**> [#uses=1]
+ %tmp5.i = load %"struct.llvm::StringMapImpl::ItemBucket"** %tmp4.i, align 8 ; <%"struct.llvm::StringMapImpl::ItemBucket"*> [#uses=1]
+ %tmp6.i = zext i32 %tmp3.i to i64 ; <i64> [#uses=1]
+ %tmp7.i = getelementptr inbounds %"struct.llvm::StringMapImpl::ItemBucket"* %tmp5.i, i64 %tmp6.i, i32 1 ; <%"struct.llvm::StringMapEntryBase"**> [#uses=2]
+ %tmp8.i = load %"struct.llvm::StringMapEntryBase"** %tmp7.i, align 8 ; <%"struct.llvm::StringMapEntryBase"*> [#uses=3]
+ %tmp9.i = icmp eq %"struct.llvm::StringMapEntryBase"* %tmp8.i, null ; <i1> [#uses=1]
+ %tmp13.i = icmp eq %"struct.llvm::StringMapEntryBase"* %tmp8.i, inttoptr (i64 -1 to %"struct.llvm::StringMapEntryBase"*) ; <i1> [#uses=1]
+ %or.cond.i = or i1 %tmp9.i, %tmp13.i ; <i1> [#uses=1]
+ br i1 %or.cond.i, label %bb4.i, label %bb6.i
+
+bb4.i: ; preds = %entry
+ %tmp41.i = inttoptr i64 %val to i8* ; <i8*> [#uses=2]
+ %tmp4.i35.i = getelementptr inbounds i8* %tmp41.i, i64 %val2 ; <i8*> [#uses=1]
+ %tmp.i.i = ptrtoint i8* %tmp4.i35.i to i64 ; <i64> [#uses=1]
+ %tmp1.i.i = trunc i64 %tmp.i.i to i32 ; <i32> [#uses=1]
+ %tmp3.i.i = trunc i64 %val to i32 ; <i32> [#uses=1]
+ %tmp4.i.i = sub i32 %tmp1.i.i, %tmp3.i.i ; <i32> [#uses=3]
+ %tmp5.i.i = add i32 %tmp4.i.i, 17 ; <i32> [#uses=1]
+ %tmp8.i.i = zext i32 %tmp5.i.i to i64 ; <i64> [#uses=1]
+ %tmp.i20.i.i = tail call noalias i8* @malloc(i64 %tmp8.i.i) nounwind ; <i8*> [#uses=7]
+ %tmp10.i.i = bitcast i8* %tmp.i20.i.i to %"struct.llvm::StringMapEntry<void*>"* ; <%"struct.llvm::StringMapEntry<void*>"*> [#uses=2]
+ %tmp12.i.i = icmp eq i8* %tmp.i20.i.i, null ; <i1> [#uses=1]
+ br i1 %tmp12.i.i, label %_ZN4llvm14StringMapEntryIPvE6CreateINS_15MallocAllocatorES1_EEPS2_PKcS7_RT_T0_.exit.i, label %bb.i.i
+
+bb.i.i: ; preds = %bb4.i
+ %tmp.i.i.i.i = bitcast i8* %tmp.i20.i.i to i32* ; <i32*> [#uses=1]
+ store i32 %tmp4.i.i, i32* %tmp.i.i.i.i, align 4
+ %tmp1.i19.i.i = getelementptr inbounds i8* %tmp.i20.i.i, i64 8 ; <i8*> [#uses=1]
+ %0 = bitcast i8* %tmp1.i19.i.i to i8** ; <i8**> [#uses=1]
+ store i8* null, i8** %0, align 8
+ br label %_ZN4llvm14StringMapEntryIPvE6CreateINS_15MallocAllocatorES1_EEPS2_PKcS7_RT_T0_.exit.i
+
+_ZN4llvm14StringMapEntryIPvE6CreateINS_15MallocAllocatorES1_EEPS2_PKcS7_RT_T0_.exit.i: ; preds = %bb4.i, %bb.i.i
+ %tmp.i18.i.i = getelementptr inbounds i8* %tmp.i20.i.i, i64 16 ; <i8*> [#uses=1]
+ %tmp15.i.i = zext i32 %tmp4.i.i to i64 ; <i64> [#uses=2]
+ tail call void @llvm.memcpy.i64(i8* %tmp.i18.i.i, i8* %tmp41.i, i64 %tmp15.i.i, i32 1) nounwind
+ %tmp.i18.sum.i.i = add i64 %tmp15.i.i, 16 ; <i64> [#uses=1]
+ %tmp17.i.i = getelementptr inbounds i8* %tmp.i20.i.i, i64 %tmp.i18.sum.i.i ; <i8*> [#uses=1]
+ store i8 0, i8* %tmp17.i.i, align 1
+ %tmp.i.i.i = getelementptr inbounds i8* %tmp.i20.i.i, i64 8 ; <i8*> [#uses=1]
+ %1 = bitcast i8* %tmp.i.i.i to i8** ; <i8**> [#uses=1]
+ store i8* null, i8** %1, align 8
+ %tmp22.i = load %"struct.llvm::StringMapEntryBase"** %tmp7.i, align 8 ; <%"struct.llvm::StringMapEntryBase"*> [#uses=1]
+ %tmp24.i = icmp eq %"struct.llvm::StringMapEntryBase"* %tmp22.i, inttoptr (i64 -1 to %"struct.llvm::StringMapEntryBase"*) ; <i1> [#uses=1]
+ br i1 %tmp24.i, label %bb9.i, label %_ZN4llvm9StringMapIPvNS_15MallocAllocatorEE16GetOrCreateValueIS1_EERNS_14StringMapEntryIS1_EENS_9StringRefET_.exit
+
+bb6.i: ; preds = %entry
+ %tmp16.i = bitcast %"struct.llvm::StringMapEntryBase"* %tmp8.i to %"struct.llvm::StringMapEntry<void*>"* ; <%"struct.llvm::StringMapEntry<void*>"*> [#uses=1]
+ ret %"struct.llvm::StringMapEntry<void*>"* %tmp16.i
+
+bb9.i: ; preds = %_ZN4llvm14StringMapEntryIPvE6CreateINS_15MallocAllocatorES1_EEPS2_PKcS7_RT_T0_.exit.i
+ %tmp25.i = getelementptr inbounds %"struct.llvm::StringMap<void*,llvm::MallocAllocator>"* %this, i64 0, i32 0, i32 3 ; <i32*> [#uses=2]
+ %tmp26.i = load i32* %tmp25.i, align 8 ; <i32> [#uses=1]
+ %tmp27.i = add i32 %tmp26.i, -1 ; <i32> [#uses=1]
+ store i32 %tmp27.i, i32* %tmp25.i, align 8
+ ret %"struct.llvm::StringMapEntry<void*>"* %tmp10.i.i
+
+_ZN4llvm9StringMapIPvNS_15MallocAllocatorEE16GetOrCreateValueIS1_EERNS_14StringMapEntryIS1_EENS_9StringRefET_.exit: ; preds = %_ZN4llvm14StringMapEntryIPvE6CreateINS_15MallocAllocatorES1_EEPS2_PKcS7_RT_T0_.exit.i
+ ret %"struct.llvm::StringMapEntry<void*>"* %tmp10.i.i
+}
diff --git a/test/Transforms/GVN/pre-load.ll b/test/Transforms/GVN/pre-load.ll
new file mode 100644
index 000000000000..7047d4eba485
--- /dev/null
+++ b/test/Transforms/GVN/pre-load.ll
@@ -0,0 +1,364 @@
+; RUN: opt < %s -gvn -enable-load-pre -S | FileCheck %s
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+
+define i32 @test1(i32* %p, i1 %C) {
+; CHECK: @test1
+block1:
+ br i1 %C, label %block2, label %block3
+
+block2:
+ br label %block4
+; CHECK: block2:
+; CHECK-NEXT: load i32* %p
+
+block3:
+ store i32 0, i32* %p
+ br label %block4
+
+block4:
+ %PRE = load i32* %p
+ ret i32 %PRE
+; CHECK: block4:
+; CHECK-NEXT: phi i32
+; CHECK-NEXT: ret i32
+}
+
+; This is a simple phi translation case.
+define i32 @test2(i32* %p, i32* %q, i1 %C) {
+; CHECK: @test2
+block1:
+ br i1 %C, label %block2, label %block3
+
+block2:
+ br label %block4
+; CHECK: block2:
+; CHECK-NEXT: load i32* %q
+
+block3:
+ store i32 0, i32* %p
+ br label %block4
+
+block4:
+ %P2 = phi i32* [%p, %block3], [%q, %block2]
+ %PRE = load i32* %P2
+ ret i32 %PRE
+; CHECK: block4:
+; CHECK-NEXT: phi i32 [
+; CHECK-NOT: load
+; CHECK: ret i32
+}
+
+; This is a PRE case that requires phi translation through a GEP.
+define i32 @test3(i32* %p, i32* %q, i32** %Hack, i1 %C) {
+; CHECK: @test3
+block1:
+ %B = getelementptr i32* %q, i32 1
+ store i32* %B, i32** %Hack
+ br i1 %C, label %block2, label %block3
+
+block2:
+ br label %block4
+; CHECK: block2:
+; CHECK-NEXT: load i32* %B
+
+block3:
+ %A = getelementptr i32* %p, i32 1
+ store i32 0, i32* %A
+ br label %block4
+
+block4:
+ %P2 = phi i32* [%p, %block3], [%q, %block2]
+ %P3 = getelementptr i32* %P2, i32 1
+ %PRE = load i32* %P3
+ ret i32 %PRE
+; CHECK: block4:
+; CHECK-NEXT: phi i32 [
+; CHECK-NOT: load
+; CHECK: ret i32
+}
+
+;; Here the loaded address is available, but the computation is in 'block3'
+;; which does not dominate 'block2'.
+define i32 @test4(i32* %p, i32* %q, i32** %Hack, i1 %C) {
+; CHECK: @test4
+block1:
+ br i1 %C, label %block2, label %block3
+
+block2:
+ br label %block4
+; CHECK: block2:
+; CHECK: load i32*
+; CHECK: br label %block4
+
+block3:
+ %B = getelementptr i32* %q, i32 1
+ store i32* %B, i32** %Hack
+
+ %A = getelementptr i32* %p, i32 1
+ store i32 0, i32* %A
+ br label %block4
+
+block4:
+ %P2 = phi i32* [%p, %block3], [%q, %block2]
+ %P3 = getelementptr i32* %P2, i32 1
+ %PRE = load i32* %P3
+ ret i32 %PRE
+; CHECK: block4:
+; CHECK-NEXT: phi i32 [
+; CHECK-NOT: load
+; CHECK: ret i32
+}
+
+;void test5(int N, double *G) {
+; int j;
+; for (j = 0; j < N - 1; j++)
+; G[j] = G[j] + G[j+1];
+;}
+
+define void @test5(i32 %N, double* nocapture %G) nounwind ssp {
+; CHECK: @test5
+entry:
+ %0 = add i32 %N, -1
+ %1 = icmp sgt i32 %0, 0
+ br i1 %1, label %bb.nph, label %return
+
+bb.nph:
+ %tmp = zext i32 %0 to i64
+ br label %bb
+
+; CHECK: bb.nph:
+; CHECK: load double*
+; CHECK: br label %bb
+
+bb:
+ %indvar = phi i64 [ 0, %bb.nph ], [ %tmp6, %bb ]
+ %tmp6 = add i64 %indvar, 1
+ %scevgep = getelementptr double* %G, i64 %tmp6
+ %scevgep7 = getelementptr double* %G, i64 %indvar
+ %2 = load double* %scevgep7, align 8
+ %3 = load double* %scevgep, align 8
+ %4 = fadd double %2, %3
+ store double %4, double* %scevgep7, align 8
+ %exitcond = icmp eq i64 %tmp6, %tmp
+ br i1 %exitcond, label %return, label %bb
+
+; Should only be one load in the loop.
+; CHECK: bb:
+; CHECK: load double*
+; CHECK-NOT: load double*
+; CHECK: br i1 %exitcond
+
+return:
+ ret void
+}
+
+;void test6(int N, double *G) {
+; int j;
+; for (j = 0; j < N - 1; j++)
+; G[j+1] = G[j] + G[j+1];
+;}
+
+define void @test6(i32 %N, double* nocapture %G) nounwind ssp {
+; CHECK: @test6
+entry:
+ %0 = add i32 %N, -1
+ %1 = icmp sgt i32 %0, 0
+ br i1 %1, label %bb.nph, label %return
+
+bb.nph:
+ %tmp = zext i32 %0 to i64
+ br label %bb
+
+; CHECK: bb.nph:
+; CHECK: load double*
+; CHECK: br label %bb
+
+bb:
+ %indvar = phi i64 [ 0, %bb.nph ], [ %tmp6, %bb ]
+ %tmp6 = add i64 %indvar, 1
+ %scevgep = getelementptr double* %G, i64 %tmp6
+ %scevgep7 = getelementptr double* %G, i64 %indvar
+ %2 = load double* %scevgep7, align 8
+ %3 = load double* %scevgep, align 8
+ %4 = fadd double %2, %3
+ store double %4, double* %scevgep, align 8
+ %exitcond = icmp eq i64 %tmp6, %tmp
+ br i1 %exitcond, label %return, label %bb
+
+; Should only be one load in the loop.
+; CHECK: bb:
+; CHECK: load double*
+; CHECK-NOT: load double*
+; CHECK: br i1 %exitcond
+
+return:
+ ret void
+}
+
+;void test7(int N, double* G) {
+; long j;
+; G[1] = 1;
+; for (j = 1; j < N - 1; j++)
+; G[j+1] = G[j] + G[j+1];
+;}
+
+; This requires phi translation of the adds.
+define void @test7(i32 %N, double* nocapture %G) nounwind ssp {
+entry:
+ %0 = getelementptr inbounds double* %G, i64 1
+ store double 1.000000e+00, double* %0, align 8
+ %1 = add i32 %N, -1
+ %2 = icmp sgt i32 %1, 1
+ br i1 %2, label %bb.nph, label %return
+
+bb.nph:
+ %tmp = sext i32 %1 to i64
+ %tmp7 = add i64 %tmp, -1
+ br label %bb
+
+bb:
+ %indvar = phi i64 [ 0, %bb.nph ], [ %tmp9, %bb ]
+ %tmp8 = add i64 %indvar, 2
+ %scevgep = getelementptr double* %G, i64 %tmp8
+ %tmp9 = add i64 %indvar, 1
+ %scevgep10 = getelementptr double* %G, i64 %tmp9
+ %3 = load double* %scevgep10, align 8
+ %4 = load double* %scevgep, align 8
+ %5 = fadd double %3, %4
+ store double %5, double* %scevgep, align 8
+ %exitcond = icmp eq i64 %tmp9, %tmp7
+ br i1 %exitcond, label %return, label %bb
+
+; Should only be one load in the loop.
+; CHECK: bb:
+; CHECK: load double*
+; CHECK-NOT: load double*
+; CHECK: br i1 %exitcond
+
+return:
+ ret void
+}
+
+;; Here the loaded address isn't available in 'block2' at all, requiring a new
+;; GEP to be inserted into it.
+define i32 @test8(i32* %p, i32* %q, i32** %Hack, i1 %C) {
+; CHECK: @test8
+block1:
+ br i1 %C, label %block2, label %block3
+
+block2:
+ br label %block4
+; CHECK: block2:
+; CHECK: load i32*
+; CHECK: br label %block4
+
+block3:
+ %A = getelementptr i32* %p, i32 1
+ store i32 0, i32* %A
+ br label %block4
+
+block4:
+ %P2 = phi i32* [%p, %block3], [%q, %block2]
+ %P3 = getelementptr i32* %P2, i32 1
+ %PRE = load i32* %P3
+ ret i32 %PRE
+; CHECK: block4:
+; CHECK-NEXT: phi i32 [
+; CHECK-NOT: load
+; CHECK: ret i32
+}
+
+;void test9(int N, double* G) {
+; long j;
+; for (j = 1; j < N - 1; j++)
+; G[j+1] = G[j] + G[j+1];
+;}
+
+; This requires phi translation of the adds.
+define void @test9(i32 %N, double* nocapture %G) nounwind ssp {
+entry:
+ add i32 0, 0
+ %1 = add i32 %N, -1
+ %2 = icmp sgt i32 %1, 1
+ br i1 %2, label %bb.nph, label %return
+
+bb.nph:
+ %tmp = sext i32 %1 to i64
+ %tmp7 = add i64 %tmp, -1
+ br label %bb
+
+; CHECK: bb.nph:
+; CHECK: load double*
+; CHECK: br label %bb
+
+bb:
+ %indvar = phi i64 [ 0, %bb.nph ], [ %tmp9, %bb ]
+ %tmp8 = add i64 %indvar, 2
+ %scevgep = getelementptr double* %G, i64 %tmp8
+ %tmp9 = add i64 %indvar, 1
+ %scevgep10 = getelementptr double* %G, i64 %tmp9
+ %3 = load double* %scevgep10, align 8
+ %4 = load double* %scevgep, align 8
+ %5 = fadd double %3, %4
+ store double %5, double* %scevgep, align 8
+ %exitcond = icmp eq i64 %tmp9, %tmp7
+ br i1 %exitcond, label %return, label %bb
+
+; Should only be one load in the loop.
+; CHECK: bb:
+; CHECK: load double*
+; CHECK-NOT: load double*
+; CHECK: br i1 %exitcond
+
+return:
+ ret void
+}
+
+;void test10(int N, double* G) {
+; long j;
+; for (j = 1; j < N - 1; j++)
+; G[j] = G[j] + G[j+1] + G[j-1];
+;}
+
+; PR5501
+define void @test10(i32 %N, double* nocapture %G) nounwind ssp {
+entry:
+ %0 = add i32 %N, -1
+ %1 = icmp sgt i32 %0, 1
+ br i1 %1, label %bb.nph, label %return
+
+bb.nph:
+ %tmp = sext i32 %0 to i64
+ %tmp8 = add i64 %tmp, -1
+ br label %bb
+; CHECK: bb.nph:
+; CHECK: load double*
+; CHECK: load double*
+; CHECK: br label %bb
+
+
+bb:
+ %indvar = phi i64 [ 0, %bb.nph ], [ %tmp11, %bb ]
+ %scevgep = getelementptr double* %G, i64 %indvar
+ %tmp9 = add i64 %indvar, 2
+ %scevgep10 = getelementptr double* %G, i64 %tmp9
+ %tmp11 = add i64 %indvar, 1
+ %scevgep12 = getelementptr double* %G, i64 %tmp11
+ %2 = load double* %scevgep12, align 8
+ %3 = load double* %scevgep10, align 8
+ %4 = fadd double %2, %3
+ %5 = load double* %scevgep, align 8
+ %6 = fadd double %4, %5
+ store double %6, double* %scevgep12, align 8
+ %exitcond = icmp eq i64 %tmp11, %tmp8
+ br i1 %exitcond, label %return, label %bb
+
+; Should only be one load in the loop.
+; CHECK: bb:
+; CHECK: load double*
+; CHECK-NOT: load double*
+; CHECK: br i1 %exitcond
+
+return:
+ ret void
+}
diff --git a/test/Transforms/GVN/rle-must-alias.ll b/test/Transforms/GVN/rle-must-alias.ll
index 79cc3636b11c..d61eb81b0691 100644
--- a/test/Transforms/GVN/rle-must-alias.ll
+++ b/test/Transforms/GVN/rle-must-alias.ll
@@ -1,7 +1,6 @@
; RUN: opt < %s -gvn -S | grep {DEAD = phi i32 }
-; XFAIL: *
-; FIXME: GVN should eliminate the fully redundant %9 GEP which
+; GVN should eliminate the fully redundant %9 GEP which
; allows DEAD to be removed. This is PR3198.
; The %7 and %4 loads combine to make %DEAD unneeded.
diff --git a/test/Transforms/GVN/rle-no-phi-translate.ll b/test/Transforms/GVN/rle-no-phi-translate.ll
index 57457a7af9f0..96dbf481899c 100644
--- a/test/Transforms/GVN/rle-no-phi-translate.ll
+++ b/test/Transforms/GVN/rle-no-phi-translate.ll
@@ -1,4 +1,5 @@
-; RUN: opt < %s -gvn -S | grep load
+; RUN: opt < %s -gvn -S | FileCheck %s
+; XFAIL: *
; FIXME: This should be promotable, but memdep/gvn don't track values
; path/edge sensitively enough.
@@ -20,5 +21,8 @@ bb2: ; preds = %bb1, %bb
%c_addr.0 = phi i32* [ %b, %entry ], [ %c, %bb ] ; <i32*> [#uses=1]
%cv = load i32* %c_addr.0, align 4 ; <i32> [#uses=1]
ret i32 %cv
+; CHECK: bb2:
+; CHECK-NOT: load i32
+; CHECK: ret i32
}
diff --git a/test/Transforms/GVN/rle-phi-translate.ll b/test/Transforms/GVN/rle-phi-translate.ll
index 1f1baa98b48b..912f58064a26 100644
--- a/test/Transforms/GVN/rle-phi-translate.ll
+++ b/test/Transforms/GVN/rle-phi-translate.ll
@@ -1,32 +1,114 @@
-; RUN: opt < %s -gvn -S | grep {%cv = phi i32}
-; RUN: opt < %s -gvn -S | grep {%bv = phi i32}
+; RUN: opt < %s -gvn -S | FileCheck %s
+
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
target triple = "i386-apple-darwin7"
-define i32 @g(i32* %b, i32* %c) nounwind {
+define i32 @test1(i32* %b, i32* %c) nounwind {
+; CHECK: @test1
entry:
- %g = alloca i32 ; <i32*> [#uses=4]
- %t1 = icmp eq i32* %b, null ; <i1> [#uses=1]
+ %g = alloca i32
+ %t1 = icmp eq i32* %b, null
br i1 %t1, label %bb, label %bb1
-bb: ; preds = %entry
- %t2 = load i32* %c, align 4 ; <i32> [#uses=1]
- %t3 = add i32 %t2, 1 ; <i32> [#uses=1]
+bb:
+ %t2 = load i32* %c, align 4
+ %t3 = add i32 %t2, 1
store i32 %t3, i32* %g, align 4
br label %bb2
bb1: ; preds = %entry
- %t5 = load i32* %b, align 4 ; <i32> [#uses=1]
- %t6 = add i32 %t5, 1 ; <i32> [#uses=1]
+ %t5 = load i32* %b, align 4
+ %t6 = add i32 %t5, 1
store i32 %t6, i32* %g, align 4
br label %bb2
bb2: ; preds = %bb1, %bb
- %c_addr.0 = phi i32* [ %g, %bb1 ], [ %c, %bb ] ; <i32*> [#uses=1]
- %b_addr.0 = phi i32* [ %b, %bb1 ], [ %g, %bb ] ; <i32*> [#uses=1]
- %cv = load i32* %c_addr.0, align 4 ; <i32> [#uses=1]
- %bv = load i32* %b_addr.0, align 4 ; <i32> [#uses=1]
- %ret = add i32 %cv, %bv ; <i32> [#uses=1]
+ %c_addr.0 = phi i32* [ %g, %bb1 ], [ %c, %bb ]
+ %b_addr.0 = phi i32* [ %b, %bb1 ], [ %g, %bb ]
+ %cv = load i32* %c_addr.0, align 4
+ %bv = load i32* %b_addr.0, align 4
+; CHECK: %bv = phi i32
+; CHECK: %cv = phi i32
+; CHECK-NOT: load
+; CHECK: ret i32
+ %ret = add i32 %cv, %bv
ret i32 %ret
}
+define i8 @test2(i1 %cond, i32* %b, i32* %c) nounwind {
+; CHECK: @test2
+entry:
+ br i1 %cond, label %bb, label %bb1
+
+bb:
+ %b1 = bitcast i32* %b to i8*
+ store i8 4, i8* %b1
+ br label %bb2
+
+bb1:
+ %c1 = bitcast i32* %c to i8*
+ store i8 92, i8* %c1
+ br label %bb2
+
+bb2:
+ %d = phi i32* [ %c, %bb1 ], [ %b, %bb ]
+ %d1 = bitcast i32* %d to i8*
+ %dv = load i8* %d1
+; CHECK: %dv = phi i8 [ 92, %bb1 ], [ 4, %bb ]
+; CHECK-NOT: load
+; CHECK: ret i8 %dv
+ ret i8 %dv
+}
+
+define i32 @test3(i1 %cond, i32* %b, i32* %c) nounwind {
+; CHECK: @test3
+entry:
+ br i1 %cond, label %bb, label %bb1
+
+bb:
+ %b1 = getelementptr i32* %b, i32 17
+ store i32 4, i32* %b1
+ br label %bb2
+
+bb1:
+ %c1 = getelementptr i32* %c, i32 7
+ store i32 82, i32* %c1
+ br label %bb2
+
+bb2:
+ %d = phi i32* [ %c, %bb1 ], [ %b, %bb ]
+ %i = phi i32 [ 7, %bb1 ], [ 17, %bb ]
+ %d1 = getelementptr i32* %d, i32 %i
+ %dv = load i32* %d1
+; CHECK: %dv = phi i32 [ 82, %bb1 ], [ 4, %bb ]
+; CHECK-NOT: load
+; CHECK: ret i32 %dv
+ ret i32 %dv
+}
+
+; PR5313
+define i32 @test4(i1 %cond, i32* %b, i32* %c) nounwind {
+; CHECK: @test4
+entry:
+ br i1 %cond, label %bb, label %bb1
+
+bb:
+ store i32 4, i32* %b
+ br label %bb2
+
+bb1:
+ %c1 = getelementptr i32* %c, i32 7
+ store i32 82, i32* %c1
+ br label %bb2
+
+bb2:
+ %d = phi i32* [ %c, %bb1 ], [ %b, %bb ]
+ %i = phi i32 [ 7, %bb1 ], [ 0, %bb ]
+ %d1 = getelementptr i32* %d, i32 %i
+ %dv = load i32* %d1
+; CHECK: %dv = phi i32 [ 82, %bb1 ], [ 4, %bb ]
+; CHECK-NOT: load
+; CHECK: ret i32 %dv
+ ret i32 %dv
+}
+
diff --git a/test/Transforms/GlobalOpt/constantfold-initializers.ll b/test/Transforms/GlobalOpt/constantfold-initializers.ll
new file mode 100644
index 000000000000..834bd0012e7a
--- /dev/null
+++ b/test/Transforms/GlobalOpt/constantfold-initializers.ll
@@ -0,0 +1,8 @@
+; RUN: opt < %s -S -globalopt | FileCheck %s
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
+
+@.str91250 = global [3 x i8] zeroinitializer
+
+; CHECK: @A = global i1 false
+@A = global i1 icmp ne (i64 sub nsw (i64 ptrtoint (i8* getelementptr inbounds ([3 x i8]* @.str91250, i64 0, i64 1) to i64), i64 ptrtoint ([3 x i8]* @.str91250 to i64)), i64 1)
diff --git a/test/Transforms/IPConstantProp/dangling-block-address.ll b/test/Transforms/IPConstantProp/dangling-block-address.ll
new file mode 100644
index 000000000000..0489dfa796f3
--- /dev/null
+++ b/test/Transforms/IPConstantProp/dangling-block-address.ll
@@ -0,0 +1,42 @@
+; RUN: opt < %s -internalize -ipsccp -S | FileCheck %s
+; PR5569
+
+; IPSCCP should prove that the blocks are dead and delete them, and
+; properly handle the dangling blockaddress constants.
+
+; CHECK: @bar.l = internal constant [2 x i8*] [i8* inttoptr (i32 1 to i8*), i8* inttoptr (i32 1 to i8*)]
+
+@code = global [5 x i32] [i32 0, i32 0, i32 0, i32 0, i32 1], align 4 ; <[5 x i32]*> [#uses=0]
+@bar.l = internal constant [2 x i8*] [i8* blockaddress(@bar, %lab0), i8* blockaddress(@bar, %end)] ; <[2 x i8*]*> [#uses=1]
+
+define void @foo(i32 %x) nounwind readnone {
+entry:
+ %b = alloca i32, align 4 ; <i32*> [#uses=1]
+ volatile store i32 -1, i32* %b
+ ret void
+}
+
+define void @bar(i32* nocapture %pc) nounwind readonly {
+entry:
+ br label %indirectgoto
+
+lab0: ; preds = %indirectgoto
+ %indvar.next = add i32 %indvar, 1 ; <i32> [#uses=1]
+ br label %indirectgoto
+
+end: ; preds = %indirectgoto
+ ret void
+
+indirectgoto: ; preds = %lab0, %entry
+ %indvar = phi i32 [ %indvar.next, %lab0 ], [ 0, %entry ] ; <i32> [#uses=2]
+ %pc.addr.0 = getelementptr i32* %pc, i32 %indvar ; <i32*> [#uses=1]
+ %tmp1.pn = load i32* %pc.addr.0 ; <i32> [#uses=1]
+ %indirect.goto.dest.in = getelementptr inbounds [2 x i8*]* @bar.l, i32 0, i32 %tmp1.pn ; <i8**> [#uses=1]
+ %indirect.goto.dest = load i8** %indirect.goto.dest.in ; <i8*> [#uses=1]
+ indirectbr i8* %indirect.goto.dest, [label %lab0, label %end]
+}
+
+define i32 @main() nounwind readnone {
+entry:
+ ret i32 0
+}
diff --git a/test/Transforms/IPConstantProp/user-with-multiple-uses.ll b/test/Transforms/IPConstantProp/user-with-multiple-uses.ll
new file mode 100644
index 000000000000..402ea41167ce
--- /dev/null
+++ b/test/Transforms/IPConstantProp/user-with-multiple-uses.ll
@@ -0,0 +1,30 @@
+; RUN: opt < %s -S -ipsccp | FileCheck %s
+; PR5596
+
+; IPSCCP should propagate the 0 argument, eliminate the switch, and propagate
+; the result.
+
+; CHECK: define i32 @main() noreturn nounwind {
+; CHECK-NEXT: entry:
+; CHECK-NEXT: %call2 = tail call i32 @wwrite(i64 0) nounwind
+; CHECK-NEXT: ret i32 123
+
+define i32 @main() noreturn nounwind {
+entry:
+ %call2 = tail call i32 @wwrite(i64 0) nounwind
+ ret i32 %call2
+}
+
+define internal i32 @wwrite(i64 %i) nounwind readnone {
+entry:
+ switch i64 %i, label %sw.default [
+ i64 3, label %return
+ i64 10, label %return
+ ]
+
+sw.default:
+ ret i32 123
+
+return:
+ ret i32 0
+}
diff --git a/test/Transforms/IndMemRem/2009-01-24-Noalias.ll b/test/Transforms/IndMemRem/2009-01-24-Noalias.ll
deleted file mode 100644
index b6d98031b732..000000000000
--- a/test/Transforms/IndMemRem/2009-01-24-Noalias.ll
+++ /dev/null
@@ -1,11 +0,0 @@
-; RUN: opt < %s -indmemrem -S | grep bounce | grep noalias
-
-declare i8* @malloc(i32)
-
-@g = external global i8*
-
-define void @test() {
- %A = bitcast i8* (i32) * @malloc to i8*
- store i8* %A, i8** @g
- ret void
-}
diff --git a/test/Transforms/IndMemRem/dg.exp b/test/Transforms/IndMemRem/dg.exp
deleted file mode 100644
index f2005891a59a..000000000000
--- a/test/Transforms/IndMemRem/dg.exp
+++ /dev/null
@@ -1,3 +0,0 @@
-load_lib llvm.exp
-
-RunLLVMTests [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,c,cpp}]]
diff --git a/test/Transforms/InstCombine/cast-malloc.ll b/test/Transforms/InstCombine/cast-malloc.ll
deleted file mode 100644
index 3754032cc2f7..000000000000
--- a/test/Transforms/InstCombine/cast-malloc.ll
+++ /dev/null
@@ -1,15 +0,0 @@
-; test that casted mallocs get converted to malloc of the right type
-; RUN: opt < %s -instcombine -S | \
-; RUN: not grep bitcast
-
-; The target datalayout is important for this test case. We have to tell
-; instcombine that the ABI alignment for a long is 4-bytes, not 8, otherwise
-; it won't do the transform.
-target datalayout = "e-i64:32:64"
-
-define i32* @test(i32 %size) {
- %X = malloc i64, i32 %size ; <i64*> [#uses=1]
- %ret = bitcast i64* %X to i32* ; <i32*> [#uses=1]
- ret i32* %ret
-}
-
diff --git a/test/Transforms/InstCombine/cast.ll b/test/Transforms/InstCombine/cast.ll
index e7695b74b75e..5f75cd0a8930 100644
--- a/test/Transforms/InstCombine/cast.ll
+++ b/test/Transforms/InstCombine/cast.ll
@@ -103,7 +103,7 @@ define i32* @test12() {
%p = malloc [4 x i8] ; <[4 x i8]*> [#uses=1]
%c = bitcast [4 x i8]* %p to i32* ; <i32*> [#uses=1]
ret i32* %c
-; CHECK: %malloccall = tail call i8* @malloc(i32 ptrtoint ([4 x i8]* getelementptr ([4 x i8]* null, i32 1) to i32))
+; CHECK: %malloccall = tail call i8* @malloc(i32 4)
; CHECK: ret i32* %c
}
@@ -275,7 +275,7 @@ define void @test32(double** %tmp) {
%tmp8.upgrd.1 = bitcast [16 x i8]* %tmp8 to double* ; <double*> [#uses=1]
store double* %tmp8.upgrd.1, double** %tmp
ret void
-; CHECK: %malloccall = tail call i8* @malloc(i32 ptrtoint ([16 x i8]* getelementptr ([16 x i8]* null, i32 1) to i32))
+; CHECK: %malloccall = tail call i8* @malloc(i32 16)
; CHECK: %tmp8.upgrd.1 = bitcast i8* %malloccall to double*
; CHECK: store double* %tmp8.upgrd.1, double** %tmp
; CHECK: ret void
diff --git a/test/Transforms/InstCombine/compare-signs.ll b/test/Transforms/InstCombine/compare-signs.ll
index 2f98641a2494..ba638ba36fc0 100644
--- a/test/Transforms/InstCombine/compare-signs.ll
+++ b/test/Transforms/InstCombine/compare-signs.ll
@@ -1,5 +1,4 @@
; RUN: opt %s -instcombine -S | FileCheck %s
-; XFAIL: *
; PR5438
; TODO: This should also optimize down.
diff --git a/test/Transforms/InstCombine/crash.ll b/test/Transforms/InstCombine/crash.ll
index fbac472e1972..1528f6ddf3c0 100644
--- a/test/Transforms/InstCombine/crash.ll
+++ b/test/Transforms/InstCombine/crash.ll
@@ -125,3 +125,15 @@ l10:
%v11 = select i1 %v5_, i64 0, i64 %v6
ret i64 %v11
}
+
+; PR5471
+define arm_apcscc i32 @test5a() {
+ ret i32 0
+}
+
+define arm_apcscc void @test5() {
+ store i1 true, i1* undef
+ %1 = invoke i32 @test5a() to label %exit unwind label %exit
+exit:
+ ret void
+}
diff --git a/test/Transforms/InstCombine/getelementptr.ll b/test/Transforms/InstCombine/getelementptr.ll
index 285e0ba602f4..de325f64021f 100644
--- a/test/Transforms/InstCombine/getelementptr.ll
+++ b/test/Transforms/InstCombine/getelementptr.ll
@@ -445,7 +445,7 @@ define i32 @test35() nounwind {
i8* getelementptr (%t1* bitcast (%t0* @s to %t1*), i32 0, i32 1, i32 0)) nounwind
ret i32 0
; CHECK: @test35
-; CHECK: call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([17 x i8]* @"\01LC8", i64 0, i64 0), i8* bitcast (i8** getelementptr (%t1* bitcast (%t0* @s to %t1*), i64 1, i32 0) to i8*)) nounwind
+; CHECK: call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([17 x i8]* @"\01LC8", i64 0, i64 0), i8* getelementptr inbounds (%t0* @s, i64 0, i32 1, i64 0)) nounwind
}
; Instcombine should constant-fold the GEP so that indices that have
diff --git a/test/Transforms/InstCombine/intrinsics.ll b/test/Transforms/InstCombine/intrinsics.ll
index 7abd38040136..fda4386e9439 100644
--- a/test/Transforms/InstCombine/intrinsics.ll
+++ b/test/Transforms/InstCombine/intrinsics.ll
@@ -1,12 +1,79 @@
; RUN: opt %s -instcombine -S | FileCheck %s
-declare {i8, i1} @llvm.uadd.with.overflow.i8(i8, i8)
+%overflow.result = type {i8, i1}
+
+declare %overflow.result @llvm.uadd.with.overflow.i8(i8, i8)
+declare %overflow.result @llvm.umul.with.overflow.i8(i8, i8)
define i8 @test1(i8 %A, i8 %B) {
- %x = call {i8, i1} @llvm.uadd.with.overflow.i8(i8 %A, i8 %B)
- %y = extractvalue {i8, i1} %x, 0
+ %x = call %overflow.result @llvm.uadd.with.overflow.i8(i8 %A, i8 %B)
+ %y = extractvalue %overflow.result %x, 0
ret i8 %y
; CHECK: @test1
; CHECK-NEXT: %y = add i8 %A, %B
; CHECK-NEXT: ret i8 %y
}
+
+define i8 @test2(i8 %A, i8 %B, i1* %overflowPtr) {
+ %and.A = and i8 %A, 127
+ %and.B = and i8 %B, 127
+ %x = call %overflow.result @llvm.uadd.with.overflow.i8(i8 %and.A, i8 %and.B)
+ %y = extractvalue %overflow.result %x, 0
+ %z = extractvalue %overflow.result %x, 1
+ store i1 %z, i1* %overflowPtr
+ ret i8 %y
+; CHECK: @test2
+; CHECK-NEXT: %and.A = and i8 %A, 127
+; CHECK-NEXT: %and.B = and i8 %B, 127
+; CHECK-NEXT: %1 = add nuw i8 %and.A, %and.B
+; CHECK-NEXT: store i1 false, i1* %overflowPtr
+; CHECK-NEXT: ret i8 %1
+}
+
+define i8 @test3(i8 %A, i8 %B, i1* %overflowPtr) {
+ %or.A = or i8 %A, -128
+ %or.B = or i8 %B, -128
+ %x = call %overflow.result @llvm.uadd.with.overflow.i8(i8 %or.A, i8 %or.B)
+ %y = extractvalue %overflow.result %x, 0
+ %z = extractvalue %overflow.result %x, 1
+ store i1 %z, i1* %overflowPtr
+ ret i8 %y
+; CHECK: @test3
+; CHECK-NEXT: %or.A = or i8 %A, -128
+; CHECK-NEXT: %or.B = or i8 %B, -128
+; CHECK-NEXT: %1 = add i8 %or.A, %or.B
+; CHECK-NEXT: store i1 true, i1* %overflowPtr
+; CHECK-NEXT: ret i8 %1
+}
+
+define i8 @test4(i8 %A, i1* %overflowPtr) {
+ %x = call %overflow.result @llvm.uadd.with.overflow.i8(i8 undef, i8 %A)
+ %y = extractvalue %overflow.result %x, 0
+ %z = extractvalue %overflow.result %x, 1
+ store i1 %z, i1* %overflowPtr
+ ret i8 %y
+; CHECK: @test4
+; CHECK-NEXT: ret i8 undef
+}
+
+define i8 @test5(i8 %A, i1* %overflowPtr) {
+ %x = call %overflow.result @llvm.umul.with.overflow.i8(i8 0, i8 %A)
+ %y = extractvalue %overflow.result %x, 0
+ %z = extractvalue %overflow.result %x, 1
+ store i1 %z, i1* %overflowPtr
+ ret i8 %y
+; CHECK: @test5
+; CHECK-NEXT: store i1 false, i1* %overflowPtr
+; CHECK-NEXT: ret i8 0
+}
+
+define i8 @test6(i8 %A, i1* %overflowPtr) {
+ %x = call %overflow.result @llvm.umul.with.overflow.i8(i8 1, i8 %A)
+ %y = extractvalue %overflow.result %x, 0
+ %z = extractvalue %overflow.result %x, 1
+ store i1 %z, i1* %overflowPtr
+ ret i8 %y
+; CHECK: @test6
+; CHECK-NEXT: store i1 false, i1* %overflowPtr
+; CHECK-NEXT: ret i8 %A
+}
diff --git a/test/Transforms/InstCombine/or.ll b/test/Transforms/InstCombine/or.ll
index b72480b4f9d0..4a140815f620 100644
--- a/test/Transforms/InstCombine/or.ll
+++ b/test/Transforms/InstCombine/or.ll
@@ -1,7 +1,8 @@
; This test makes sure that these instructions are properly eliminated.
-;
; RUN: opt < %s -instcombine -S | FileCheck %s
+target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
+
define i32 @test1(i32 %A) {
%B = or i32 %A, 0
ret i32 %B
@@ -253,3 +254,44 @@ define i1 @test25(i32 %A, i32 %B) {
; CHECK-NEXT: %F = and i1
; CHECK-NEXT: ret i1 %F
}
+
+; PR5634
+define i1 @test26(i32 %A, i32 %B) {
+ %C1 = icmp eq i32 %A, 0
+ %C2 = icmp eq i32 %B, 0
+ ; (A == 0) & (A == 0) --> (A|B) == 0
+ %D = and i1 %C1, %C2
+ ret i1 %D
+; CHECK: @test26
+; CHECK: or i32 %A, %B
+; CHECK: icmp eq i32 {{.*}}, 0
+; CHECK: ret i1
+}
+
+; PR5634
+define i1 @test27(i32* %A, i32* %B) {
+ %C1 = icmp eq i32* %A, null
+ %C2 = icmp eq i32* %B, null
+ ; (A == 0) & (A == 0) --> (A|B) == 0
+ %D = and i1 %C1, %C2
+ ret i1 %D
+; CHECK: @test27
+; CHECK: ptrtoint i32* %A
+; CHECK: ptrtoint i32* %B
+; CHECK: or i32
+; CHECK: icmp eq i32 {{.*}}, 0
+; CHECK: ret i1
+}
+
+; PR5634
+define i1 @test28(i32 %A, i32 %B) {
+ %C1 = icmp ne i32 %A, 0
+ %C2 = icmp ne i32 %B, 0
+ ; (A != 0) | (A != 0) --> (A|B) != 0
+ %D = or i1 %C1, %C2
+ ret i1 %D
+; CHECK: @test28
+; CHECK: or i32 %A, %B
+; CHECK: icmp ne i32 {{.*}}, 0
+; CHECK: ret i1
+}
diff --git a/test/Transforms/InstCombine/or2.ll b/test/Transforms/InstCombine/or2.ll
deleted file mode 100644
index c01229a78a0d..000000000000
--- a/test/Transforms/InstCombine/or2.ll
+++ /dev/null
@@ -1,12 +0,0 @@
-; This test makes sure that these instructions are properly eliminated.
-;
-; RUN: opt < %s -instcombine -S | grep -v xor | not grep {or }
-
-; PR1738
-define i1 @test1(double %X, double %Y) {
- %tmp9 = fcmp uno double %X, 0.000000e+00 ; <i1> [#uses=1]
- %tmp13 = fcmp uno double %Y, 0.000000e+00 ; <i1> [#uses=1]
- %bothcond = or i1 %tmp13, %tmp9 ; <i1> [#uses=1]
- ret i1 %bothcond
-}
-
diff --git a/test/Transforms/InstCombine/phi-merge.ll b/test/Transforms/InstCombine/phi-merge.ll
deleted file mode 100644
index c41f50325d6f..000000000000
--- a/test/Transforms/InstCombine/phi-merge.ll
+++ /dev/null
@@ -1,31 +0,0 @@
-; RUN: opt < %s -instcombine -S | not grep {phi i32}
-; PR1777
-
-declare i1 @rrr()
-
-define i1 @zxcv() {
-entry:
-%a = alloca i32
-%i = ptrtoint i32* %a to i32
-%b = call i1 @rrr()
-br i1 %b, label %one, label %two
-
-one:
-%x = phi i32 [%i, %entry], [%y, %two]
-%c = call i1 @rrr()
-br i1 %c, label %two, label %end
-
-two:
-%y = phi i32 [%i, %entry], [%x, %one]
-%d = call i1 @rrr()
-br i1 %d, label %one, label %end
-
-end:
-%f = phi i32 [ %x, %one], [%y, %two]
-; Change the %f to %i, and the optimizer suddenly becomes a lot smarter
-; even though %f must equal %i at this point
-%g = inttoptr i32 %f to i32*
-store i32 10, i32* %g
-%z = call i1 @rrr()
-ret i1 %z
-}
diff --git a/test/Transforms/InstCombine/shufflevec-constant.ll b/test/Transforms/InstCombine/shufflevec-constant.ll
index 2c667903b1eb..29ae5a79824a 100644
--- a/test/Transforms/InstCombine/shufflevec-constant.ll
+++ b/test/Transforms/InstCombine/shufflevec-constant.ll
@@ -1,4 +1,4 @@
-; RUN: opt < %s -instcombine -S | grep "2 x float"
+; RUN: opt < %s -instcombine -S | grep {ret <4 x float> <float 0.000000e+00, float 0.000000e+00, float 0x7FF0000000000000, float 0x7FF0000000000000>}
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
target triple = "i386-apple-darwin9"
diff --git a/test/Transforms/InstCombine/store-merge.ll b/test/Transforms/InstCombine/store-merge.ll
deleted file mode 100644
index 06d497d10dbf..000000000000
--- a/test/Transforms/InstCombine/store-merge.ll
+++ /dev/null
@@ -1,37 +0,0 @@
-; RUN: opt < %s -instcombine -S | \
-; RUN: grep {ret i32 %.toremerge} | count 2
-;; Simple sinking tests
-
-; "if then else"
-define i32 @test1(i1 %C) {
- %A = alloca i32
- br i1 %C, label %Cond, label %Cond2
-
-Cond:
- store i32 -987654321, i32* %A
- br label %Cont
-
-Cond2:
- store i32 47, i32* %A
- br label %Cont
-
-Cont:
- %V = load i32* %A
- ret i32 %V
-}
-
-; "if then"
-define i32 @test2(i1 %C) {
- %A = alloca i32
- store i32 47, i32* %A
- br i1 %C, label %Cond, label %Cont
-
-Cond:
- store i32 -987654321, i32* %A
- br label %Cont
-
-Cont:
- %V = load i32* %A
- ret i32 %V
-}
-
diff --git a/test/Transforms/InstCombine/store.ll b/test/Transforms/InstCombine/store.ll
index 314441eb8653..64460d7a6d61 100644
--- a/test/Transforms/InstCombine/store.ll
+++ b/test/Transforms/InstCombine/store.ll
@@ -6,6 +6,7 @@ define void @test1(i32* %P) {
store i32 124, i32* null
ret void
; CHECK: @test1(
+; CHECK-NEXT: store i32 123, i32* undef
; CHECK-NEXT: store i32 undef, i32* null
; CHECK-NEXT: ret void
}
diff --git a/test/Transforms/JumpThreading/2008-11-28-InfLoop.ll b/test/Transforms/JumpThreading/2008-11-28-InfLoop.ll
deleted file mode 100644
index 306b2d5435fc..000000000000
--- a/test/Transforms/JumpThreading/2008-11-28-InfLoop.ll
+++ /dev/null
@@ -1,17 +0,0 @@
-; RUN: opt < %s -jump-threading -S
-
-target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
-target triple = "i386-apple-darwin9.5"
- %struct.decContext = type { i32 }
- %struct.decNumber = type { i32, i32 }
-
-define i32 @decNumberPower(%struct.decNumber* %res, %struct.decNumber* %lhs, %struct.decNumber* %rhs, %struct.decContext* %set) nounwind {
-entry:
- br i1 true, label %decDivideOp.exit, label %bb7.i
-
-bb7.i: ; preds = %bb7.i, %entry
- br label %bb7.i
-
-decDivideOp.exit: ; preds = %entry
- ret i32 undef
-}
diff --git a/test/Transforms/JumpThreading/2009-01-08-DeadLoopRepl.ll b/test/Transforms/JumpThreading/2009-01-08-DeadLoopRepl.ll
deleted file mode 100644
index 208c8229875e..000000000000
--- a/test/Transforms/JumpThreading/2009-01-08-DeadLoopRepl.ll
+++ /dev/null
@@ -1,49 +0,0 @@
-; RUN: opt < %s -jump-threading | llvm-dis
-; PR3298
-
-target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
-target triple = "i386-apple-darwin9.6"
-
-define i32 @func(i32 %p_79, i32 %p_80) nounwind {
-entry:
- br label %bb7
-
-bb1: ; preds = %bb2
- br label %bb2
-
-bb2: ; preds = %bb7, %bb1
- %l_82.0 = phi i8 [ 0, %bb1 ], [ %l_82.1, %bb7 ] ; <i8> [#uses=3]
- br i1 true, label %bb3, label %bb1
-
-bb3: ; preds = %bb2
- %0 = icmp eq i32 %p_80_addr.1, 0 ; <i1> [#uses=1]
- br i1 %0, label %bb7, label %bb6
-
-bb5: ; preds = %bb6
- %1 = icmp eq i8 %l_82.0, 0 ; <i1> [#uses=1]
- br i1 %1, label %bb1.i, label %bb.i
-
-bb.i: ; preds = %bb5
- br label %safe_div_func_char_s_s.exit
-
-bb1.i: ; preds = %bb5
- br label %safe_div_func_char_s_s.exit
-
-safe_div_func_char_s_s.exit: ; preds = %bb1.i, %bb.i
- br label %bb6
-
-bb6: ; preds = %safe_div_func_char_s_s.exit, %bb3
- %p_80_addr.0 = phi i32 [ %p_80_addr.1, %bb3 ], [ 1, %safe_div_func_char_s_s.exit ] ; <i32> [#uses=2]
- %2 = icmp eq i32 %p_80_addr.0, 0 ; <i1> [#uses=1]
- br i1 %2, label %bb7, label %bb5
-
-bb7: ; preds = %bb6, %bb3, %entry
- %l_82.1 = phi i8 [ 1, %entry ], [ %l_82.0, %bb3 ], [ %l_82.0, %bb6 ] ; <i8> [#uses=2]
- %p_80_addr.1 = phi i32 [ 0, %entry ], [ %p_80_addr.1, %bb3 ], [ %p_80_addr.0, %bb6 ] ; <i32> [#uses=4]
- %3 = icmp eq i32 %p_80_addr.1, 0 ; <i1> [#uses=1]
- br i1 %3, label %bb8, label %bb2
-
-bb8: ; preds = %bb7
- %4 = sext i8 %l_82.1 to i32 ; <i32> [#uses=0]
- ret i32 0
-}
diff --git a/test/Transforms/JumpThreading/2009-01-19-InfSwitchLoop.ll b/test/Transforms/JumpThreading/2009-01-19-InfSwitchLoop.ll
deleted file mode 100644
index 05a3ef9017db..000000000000
--- a/test/Transforms/JumpThreading/2009-01-19-InfSwitchLoop.ll
+++ /dev/null
@@ -1,21 +0,0 @@
-; RUN: opt < %s -jump-threading -S
-; PR3353
-
-define i32 @test(i8 %X) {
-entry:
- %Y = add i8 %X, 1
- %Z = add i8 %Y, 1
- br label %bb33.i
-
-bb33.i: ; preds = %bb33.i, %bb32.i
- switch i8 %Y, label %bb32.i [
- i8 39, label %bb35.split.i
- i8 13, label %bb33.i
- ]
-
-bb35.split.i:
- ret i32 5
-bb32.i:
- ret i32 1
-}
-
diff --git a/test/Transforms/JumpThreading/crash.ll b/test/Transforms/JumpThreading/crash.ll
index 7e2a2a047d11..b2b9d69e16d2 100644
--- a/test/Transforms/JumpThreading/crash.ll
+++ b/test/Transforms/JumpThreading/crash.ll
@@ -192,3 +192,23 @@ bb61:
ret void
}
+
+; PR5640
+define fastcc void @test6(i1 %tmp, i1 %tmp1) nounwind ssp {
+entry:
+ br i1 %tmp, label %bb12, label %bb14
+
+bb12:
+ br label %bb14
+
+bb14:
+ %A = phi i1 [ %A, %bb13 ], [ true, %bb12 ], [%tmp1, %entry]
+ br label %bb13
+
+bb13:
+ br i1 %A, label %bb14, label %bb61
+
+
+bb61:
+ ret void
+}
diff --git a/test/Transforms/LICM/2008-07-22-LoadGlobalConstant.ll b/test/Transforms/LICM/2008-07-22-LoadGlobalConstant.ll
index 723440f101e5..10b00bab8fd9 100644
--- a/test/Transforms/LICM/2008-07-22-LoadGlobalConstant.ll
+++ b/test/Transforms/LICM/2008-07-22-LoadGlobalConstant.ll
@@ -1,4 +1,4 @@
-; RUN: opt < %s -licm -enable-licm-constant-variables -S | FileCheck %s
+; RUN: opt < %s -licm -S | FileCheck %s
@a = external constant float*
diff --git a/test/Transforms/LoopRotate/indirectbr.ll b/test/Transforms/LoopRotate/indirectbr.ll
new file mode 100644
index 000000000000..9c82aa883463
--- /dev/null
+++ b/test/Transforms/LoopRotate/indirectbr.ll
@@ -0,0 +1,43 @@
+; RUN: opt < %s -S -loop-rotate -disable-output -verify-loop-info -verify-dom-info
+; PR5502
+
+define void @z80_do_opcodes() nounwind {
+entry:
+ br label %while.cond
+
+while.cond: ; preds = %end_opcode, %entry
+ br label %while.body
+
+while.body: ; preds = %while.cond
+ br label %indirectgoto
+
+run_opcode: ; preds = %indirectgoto
+ %tmp276 = load i8* undef ; <i8> [#uses=1]
+ br label %indirectgoto
+
+if.else295: ; preds = %divide_late
+ br label %end_opcode
+
+end_opcode: ; preds = %indirectgoto, %sw.default42406, %sw.default, %if.else295
+ %opcode.2 = phi i8 [ %opcode.0, %indirectgoto ], [ 0, %sw.default42406 ], [ undef, %sw.default ], [ %opcode.0, %if.else295 ] ; <i8> [#uses=0]
+ switch i32 undef, label %while.cond [
+ i32 221, label %sw.bb11691
+ i32 253, label %sw.bb30351
+ ]
+
+sw.bb11691: ; preds = %end_opcode
+ br label %sw.default
+
+sw.default: ; preds = %sw.bb11691
+ br label %end_opcode
+
+sw.bb30351: ; preds = %end_opcode
+ br label %sw.default42406
+
+sw.default42406: ; preds = %sw.bb30351
+ br label %end_opcode
+
+indirectgoto: ; preds = %run_opcode, %while.body
+ %opcode.0 = phi i8 [ undef, %while.body ], [ %tmp276, %run_opcode ] ; <i8> [#uses=2]
+ indirectbr i8* undef, [label %run_opcode, label %if.else295, label %end_opcode]
+}
diff --git a/test/Transforms/LoopSimplify/indirectbr.ll b/test/Transforms/LoopSimplify/indirectbr.ll
index b0238473b681..2e4549d1e9c0 100644
--- a/test/Transforms/LoopSimplify/indirectbr.ll
+++ b/test/Transforms/LoopSimplify/indirectbr.ll
@@ -81,3 +81,20 @@ L1:
%y = phi i64 [ %z, %L0 ], [ 1, %entry ]
ret i64 %y
}
+
+define void @pr5502() nounwind {
+entry:
+ br label %while.cond
+
+while.cond:
+ br i1 undef, label %while.body, label %while.end
+
+while.body:
+ indirectbr i8* undef, [label %end_opcode, label %end_opcode]
+
+end_opcode:
+ br i1 false, label %end_opcode, label %while.cond
+
+while.end:
+ ret void
+}
diff --git a/test/Transforms/LoopUnroll/shifted-tripcount.ll b/test/Transforms/LoopUnroll/shifted-tripcount.ll
new file mode 100644
index 000000000000..a118a463172e
--- /dev/null
+++ b/test/Transforms/LoopUnroll/shifted-tripcount.ll
@@ -0,0 +1,28 @@
+; RUN: opt < %s -loop-unroll -unroll-count=2 -S | FileCheck %s
+
+; LoopUnroll should unroll this loop into one big basic block.
+
+; CHECK: for.body:
+; CHECK: %i.013 = phi i64 [ 0, %entry ], [ %tmp16.1, %for.body ]
+; CHECK: br i1 %exitcond.1, label %for.end, label %for.body
+
+define void @foo(double* nocapture %p, i64 %n) nounwind {
+entry:
+ %mul10 = shl i64 %n, 1 ; <i64> [#uses=2]
+ br label %for.body
+
+for.body: ; preds = %entry, %for.body
+ %i.013 = phi i64 [ %tmp16, %for.body ], [ 0, %entry ] ; <i64> [#uses=2]
+ %arrayidx7 = getelementptr double* %p, i64 %i.013 ; <double*> [#uses=2]
+ %tmp16 = add i64 %i.013, 1 ; <i64> [#uses=3]
+ %arrayidx = getelementptr double* %p, i64 %tmp16 ; <double*> [#uses=1]
+ %tmp4 = load double* %arrayidx ; <double> [#uses=1]
+ %tmp8 = load double* %arrayidx7 ; <double> [#uses=1]
+ %mul9 = fmul double %tmp8, %tmp4 ; <double> [#uses=1]
+ store double %mul9, double* %arrayidx7
+ %exitcond = icmp eq i64 %tmp16, %mul10 ; <i1> [#uses=1]
+ br i1 %exitcond, label %for.end, label %for.body
+
+for.end: ; preds = %for.body, %entry
+ ret void
+}
diff --git a/test/Transforms/RaiseAllocations/2004-11-08-FreeUseCrash.ll b/test/Transforms/RaiseAllocations/2004-11-08-FreeUseCrash.ll
deleted file mode 100644
index 75e02e84fac9..000000000000
--- a/test/Transforms/RaiseAllocations/2004-11-08-FreeUseCrash.ll
+++ /dev/null
@@ -1,10 +0,0 @@
-; RUN: opt < %s -raiseallocs -disable-output
-
-define void @main() {
- %tmp.13 = call i32 (...)* @free( i32 32 ) ; <i32> [#uses=1]
- %tmp.14 = inttoptr i32 %tmp.13 to i32* ; <i32*> [#uses=0]
- ret void
-}
-
-declare i32 @free(...)
-
diff --git a/test/Transforms/RaiseAllocations/2007-10-17-InvokeFree.ll b/test/Transforms/RaiseAllocations/2007-10-17-InvokeFree.ll
deleted file mode 100644
index 675bb3d829f7..000000000000
--- a/test/Transforms/RaiseAllocations/2007-10-17-InvokeFree.ll
+++ /dev/null
@@ -1,17 +0,0 @@
-; RUN: opt < %s -raiseallocs -stats -disable-output |& \
-; RUN: not grep {Number of allocations raised}
-define void @foo() {
-entry:
- %buffer = alloca i16*
- %tmp = load i16** %buffer, align 8
- invoke i32(...)* @free(i16* %tmp)
- to label %invcont unwind label %unwind
-invcont:
- br label %finally
-unwind:
- br label %finally
-finally:
- ret void
-}
-declare i32 @free(...)
-
diff --git a/test/Transforms/RaiseAllocations/FreeCastConstantExpr.ll b/test/Transforms/RaiseAllocations/FreeCastConstantExpr.ll
deleted file mode 100644
index 1cf072910a60..000000000000
--- a/test/Transforms/RaiseAllocations/FreeCastConstantExpr.ll
+++ /dev/null
@@ -1,11 +0,0 @@
-; This situation can occur due to the funcresolve pass.
-;
-; RUN: opt < %s -raiseallocs -S | not grep call
-
-declare void @free(i8*)
-
-define void @test(i32* %P) {
- call void bitcast (void (i8*)* @free to void (i32*)*)( i32* %P )
- ret void
-}
-
diff --git a/test/Transforms/RaiseAllocations/dg.exp b/test/Transforms/RaiseAllocations/dg.exp
deleted file mode 100644
index f2005891a59a..000000000000
--- a/test/Transforms/RaiseAllocations/dg.exp
+++ /dev/null
@@ -1,3 +0,0 @@
-load_lib llvm.exp
-
-RunLLVMTests [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,c,cpp}]]
diff --git a/test/Transforms/SCCP/2008-03-10-sret.ll b/test/Transforms/SCCP/2008-03-10-sret.ll
deleted file mode 100644
index 85bcaf4d2db4..000000000000
--- a/test/Transforms/SCCP/2008-03-10-sret.ll
+++ /dev/null
@@ -1,19 +0,0 @@
-; RUN: opt < %s -ipsccp -S > %t
-; RUN: grep {ret i32 36} %t
-; RUN: grep {%mrv = insertvalue %T undef, i32 18, 0} %t
-; RUN: grep {%mrv1 = insertvalue %T %mrv, i32 17, 1} %t
-; RUN: grep {ret %T %mrv1} %t
-
-%T = type {i32,i32}
-
-define internal {i32, i32} @bar(i32 %A) {
- %X = add i32 1, %A
- ret i32 %X, i32 %A
-}
-
-define i32 @foo() {
- %X = call {i32, i32} @bar(i32 17)
- %Y = getresult {i32, i32} %X, 0
- %Z = add i32 %Y, %Y
- ret i32 %Z
-}
diff --git a/test/Transforms/SCCP/basictest.ll b/test/Transforms/SCCP/basictest.ll
deleted file mode 100644
index dc0f702bcd96..000000000000
--- a/test/Transforms/SCCP/basictest.ll
+++ /dev/null
@@ -1,17 +0,0 @@
-; This is a basic sanity check for constant propogation. The add instruction
-; should be eliminated.
-
-; RUN: opt < %s -sccp -S | not grep add
-
-define i32 @test(i1 %B) {
- br i1 %B, label %BB1, label %BB2
-BB1: ; preds = %0
- %Val = add i32 0, 0 ; <i32> [#uses=1]
- br label %BB3
-BB2: ; preds = %0
- br label %BB3
-BB3: ; preds = %BB2, %BB1
- %Ret = phi i32 [ %Val, %BB1 ], [ 1, %BB2 ] ; <i32> [#uses=1]
- ret i32 %Ret
-}
-
diff --git a/test/Transforms/SCCP/empty-struct.ll b/test/Transforms/SCCP/empty-struct.ll
deleted file mode 100644
index 4e3dc69514e5..000000000000
--- a/test/Transforms/SCCP/empty-struct.ll
+++ /dev/null
@@ -1,20 +0,0 @@
-; RUN: llvm-as < %s > %t.bc
-; RUN: llvm-ld %t.bc -o %t.sh
-; PR2612
-
-@current_foo = internal global { } zeroinitializer
-
-define i32 @main(...) {
-entry:
- %retval = alloca i32 ; <i32*> [#uses=2]
- store i32 0, i32* %retval
- %local_foo = alloca { } ; <{ }*> [#uses=1]
- load { }* @current_foo ; <{ }>:0 [#uses=1]
- store { } %0, { }* %local_foo
- br label %return
-
-return: ; preds = %entry
- load i32* %retval ; <i32>:1 [#uses=1]
- ret i32 %1
-}
-
diff --git a/test/Transforms/SCCP/ipsccp-conditional.ll b/test/Transforms/SCCP/ipsccp-conditional.ll
deleted file mode 100644
index 07a427ea91f1..000000000000
--- a/test/Transforms/SCCP/ipsccp-conditional.ll
+++ /dev/null
@@ -1,19 +0,0 @@
-; RUN: opt < %s -ipsccp -S | \
-; RUN: grep -v {ret i32 0} | grep -v {ret i32 undef} | not grep ret
-
-define internal i32 @bar(i32 %A) {
- %C = icmp eq i32 %A, 0 ; <i1> [#uses=1]
- br i1 %C, label %T, label %F
-T: ; preds = %0
- %B = call i32 @bar( i32 0 ) ; <i32> [#uses=0]
- ret i32 0
-F: ; preds = %0
- %C.upgrd.1 = call i32 @bar( i32 1 ) ; <i32> [#uses=1]
- ret i32 %C.upgrd.1
-}
-
-define i32 @foo() {
- %X = call i32 @bar( i32 0 ) ; <i32> [#uses=1]
- ret i32 %X
-}
-
diff --git a/test/Transforms/SCCP/ipsccp-gvar.ll b/test/Transforms/SCCP/ipsccp-gvar.ll
deleted file mode 100644
index ecbd95969521..000000000000
--- a/test/Transforms/SCCP/ipsccp-gvar.ll
+++ /dev/null
@@ -1,22 +0,0 @@
-; RUN: opt < %s -ipsccp -S | not grep global
-
-@G = internal global i32 undef ; <i32*> [#uses=5]
-
-define void @foo() {
- %X = load i32* @G ; <i32> [#uses=1]
- store i32 %X, i32* @G
- ret void
-}
-
-define i32 @bar() {
- %V = load i32* @G ; <i32> [#uses=2]
- %C = icmp eq i32 %V, 17 ; <i1> [#uses=1]
- br i1 %C, label %T, label %F
-T: ; preds = %0
- store i32 17, i32* @G
- ret i32 %V
-F: ; preds = %0
- store i32 123, i32* @G
- ret i32 0
-}
-
diff --git a/test/Transforms/ScalarRepl/badarray.ll b/test/Transforms/ScalarRepl/badarray.ll
index 909966f19038..3ec3c01b2836 100644
--- a/test/Transforms/ScalarRepl/badarray.ll
+++ b/test/Transforms/ScalarRepl/badarray.ll
@@ -1,9 +1,15 @@
-; RUN: opt < %s -scalarrepl -instcombine -S | not grep alloca
-; PR3466
+; RUN: opt < %s -scalarrepl -S | FileCheck %s
+
+target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32"
+target triple = "i386-pc-linux-gnu"
+
-define i32 @test() {
- %X = alloca [4 x i32] ; <[4 x i32]*> [#uses=1]
- ; Off end of array!
+; PR3466
+; Off end of array, don't transform.
+define i32 @test1() {
+; CHECK: @test1
+; CHECK-NOT: = alloca
+ %X = alloca [4 x i32]
%Y = getelementptr [4 x i32]* %X, i64 0, i64 6 ; <i32*> [#uses=2]
store i32 0, i32* %Y
%Z = load i32* %Y ; <i32> [#uses=1]
@@ -11,10 +17,41 @@ define i32 @test() {
}
+; Off end of array, don't transform.
define i32 @test2() nounwind {
entry:
+; CHECK: @test2
+; CHECK-NOT: = alloca
%yx2.i = alloca float, align 4 ; <float*> [#uses=1]
%yx26.i = bitcast float* %yx2.i to i64* ; <i64*> [#uses=1]
%0 = load i64* %yx26.i, align 8 ; <i64> [#uses=0]
unreachable
}
+
+%base = type { i32, [0 x i8] }
+%padded = type { %base, [1 x i32] }
+
+; PR5436
+define void @test3() {
+entry:
+; CHECK: @test3
+; CHECK-NOT: = alloca
+; CHECK: store i64
+ %var_1 = alloca %padded, align 8 ; <%padded*> [#uses=3]
+ %0 = getelementptr inbounds %padded* %var_1, i32 0, i32 0 ; <%base*> [#uses=2]
+
+ %p2 = getelementptr inbounds %base* %0, i32 0, i32 1, i32 0 ; <i8*> [#uses=1]
+ store i8 72, i8* %p2, align 1
+
+ ; 72 -> a[0].
+
+ %callret = call %padded *@test3f() ; <i32> [#uses=2]
+ %callretcast = bitcast %padded* %callret to i8* ; <i8*> [#uses=1]
+ %var_11 = bitcast %padded* %var_1 to i8* ; <i8*> [#uses=1]
+ call void @llvm.memcpy.i32(i8* %callretcast, i8* %var_11, i32 8, i32 4)
+ ret void
+}
+
+declare void @llvm.memcpy.i32(i8* nocapture, i8* nocapture, i32, i32) nounwind
+
+declare %padded* @test3f()