new testcase from PR877
authorChris Lattner <sabre@nondot.org>
Mon, 14 Aug 2006 21:37:32 +0000 (21:37 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 14 Aug 2006 21:37:32 +0000 (21:37 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29672 91177308-0d34-0410-b5e6-96231b3b80d8

test/Transforms/CondProp/2006-08-14-SingleEntryPhiCrash.ll [new file with mode: 0644]

diff --git a/test/Transforms/CondProp/2006-08-14-SingleEntryPhiCrash.ll b/test/Transforms/CondProp/2006-08-14-SingleEntryPhiCrash.ll
new file mode 100644 (file)
index 0000000..698f810
--- /dev/null
@@ -0,0 +1,466 @@
+; RUN: llvm-as < %s | opt -condprop -disable-output
+; PR877
+
+target endian = big
+target pointersize = 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"*, int, "struct.kc::impl_casestring__Str"* }
+       "struct.kc::impl_abstract_phylum" = type { int (...)** }
+       "struct.kc::impl_casestring__Str" = type { "struct.kc::impl_abstract_phylum", sbyte* }
+       "struct.kc::impl_elem_patternrepresentation" = type { "struct.kc::impl_abstract_phylum", int, "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"* }
+
+implementation   ; Functions:
+
+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 bool false, label %cond_next, label %bb51
+
+cond_next:             ; preds = %cond_false
+       br bool false, label %bb52, label %bb51
+
+bb51:          ; preds = %cond_next, %cond_false
+       br label %bb52
+
+bb52:          ; preds = %bb51, %cond_next
+       br bool false, label %cond_false82, label %cond_true55
+
+cond_true55:           ; preds = %bb52
+       br bool false, label %UnifiedReturnBlock, label %cond_true57
+
+cond_true57:           ; preds = %cond_true55
+       br label %UnifiedReturnBlock
+
+cond_false82:          ; preds = %bb52
+       br bool false, label %cond_next97, label %bb113
+
+cond_next97:           ; preds = %cond_false82
+       br bool false, label %bb114, label %bb113
+
+bb113:         ; preds = %cond_next97, %cond_false82
+       br label %bb114
+
+bb114:         ; preds = %bb113, %cond_next97
+       br bool false, label %cond_false151, label %cond_true117
+
+cond_true117:          ; preds = %bb114
+       br bool false, label %UnifiedReturnBlock, label %cond_true120
+
+cond_true120:          ; preds = %cond_true117
+       br label %UnifiedReturnBlock
+
+cond_false151:         ; preds = %bb114
+       br bool false, label %cond_next166, label %bb182
+
+cond_next166:          ; preds = %cond_false151
+       br bool false, label %bb183, label %bb182
+
+bb182:         ; preds = %cond_next166, %cond_false151
+       br label %bb183
+
+bb183:         ; preds = %bb182, %cond_next166
+       br bool false, label %cond_false256, label %cond_true186
+
+cond_true186:          ; preds = %bb183
+       br bool 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 bool 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 bool false, label %UnifiedReturnBlock, label %cond_false250
+
+cond_false250:         ; preds = %cond_false235
+       br label %UnifiedUnreachableBlock
+
+cond_false256:         ; preds = %bb183
+       br bool false, label %cond_next271, label %bb287
+
+cond_next271:          ; preds = %cond_false256
+       br bool false, label %bb288, label %bb287
+
+bb287:         ; preds = %cond_next271, %cond_false256
+       br label %bb288
+
+bb288:         ; preds = %bb287, %cond_next271
+       br bool false, label %cond_false369, label %cond_true291
+
+cond_true291:          ; preds = %bb288
+       br bool false, label %cond_true320, label %cond_false327
+
+cond_true320:          ; preds = %cond_true291
+       br label %bb1269.outer38.backedge
+
+cond_false327:         ; preds = %cond_true291
+       br bool false, label %cond_true341, label %cond_false348
+
+cond_true341:          ; preds = %cond_false327
+       br label %bb1269.outer21.backedge
+
+cond_false348:         ; preds = %cond_false327
+       br bool false, label %UnifiedReturnBlock, label %cond_false363
+
+cond_false363:         ; preds = %cond_false348
+       br label %UnifiedUnreachableBlock
+
+cond_false369:         ; preds = %bb288
+       br bool false, label %cond_next384, label %bb400
+
+cond_next384:          ; preds = %cond_false369
+       br bool false, label %bb401, label %bb400
+
+bb400:         ; preds = %cond_next384, %cond_false369
+       br label %bb401
+
+bb401:         ; preds = %bb400, %cond_next384
+       br bool false, label %cond_false481, label %cond_true404
+
+cond_true404:          ; preds = %bb401
+       br bool false, label %cond_true432, label %cond_false439
+
+cond_true432:          ; preds = %cond_true404
+       br label %bb1269.outer38.backedge
+
+cond_false439:         ; preds = %cond_true404
+       br bool false, label %cond_true453, label %cond_false460
+
+cond_true453:          ; preds = %cond_false439
+       br label %bb1269.outer21.backedge
+
+cond_false460:         ; preds = %cond_false439
+       br bool false, label %UnifiedReturnBlock, label %cond_false475
+
+cond_false475:         ; preds = %cond_false460
+       br label %UnifiedUnreachableBlock
+
+cond_false481:         ; preds = %bb401
+       br bool false, label %cond_next496, label %bb512
+
+cond_next496:          ; preds = %cond_false481
+       br bool false, label %bb513, label %bb512
+
+bb512:         ; preds = %cond_next496, %cond_false481
+       br label %bb513
+
+bb513:         ; preds = %bb512, %cond_next496
+       br bool false, label %cond_false594, label %cond_true516
+
+cond_true516:          ; preds = %bb513
+       br bool false, label %cond_true545, label %cond_false552
+
+cond_true545:          ; preds = %cond_true516
+       br label %bb1269.outer38.backedge
+
+cond_false552:         ; preds = %cond_true516
+       br bool false, label %cond_true566, label %cond_false573
+
+cond_true566:          ; preds = %cond_false552
+       br label %bb1269.outer21.backedge
+
+cond_false573:         ; preds = %cond_false552
+       br bool false, label %UnifiedReturnBlock, label %cond_false588
+
+cond_false588:         ; preds = %cond_false573
+       br label %UnifiedUnreachableBlock
+
+cond_false594:         ; preds = %bb513
+       br bool false, label %cond_next609, label %bb625
+
+cond_next609:          ; preds = %cond_false594
+       br bool false, label %bb626, label %bb625
+
+bb625:         ; preds = %cond_next609, %cond_false594
+       br label %bb626
+
+bb626:         ; preds = %bb625, %cond_next609
+       br bool false, label %cond_false707, label %cond_true629
+
+cond_true629:          ; preds = %bb626
+       br bool 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 bool false, label %cond_true679, label %cond_false686
+
+cond_true679:          ; preds = %cond_false665
+       br label %bb1269.outer2.backedge
+
+cond_false686:         ; preds = %cond_false665
+       br bool false, label %UnifiedReturnBlock, label %cond_false701
+
+cond_false701:         ; preds = %cond_false686
+       br label %UnifiedUnreachableBlock
+
+cond_false707:         ; preds = %bb626
+       br bool false, label %cond_next722, label %bb738
+
+cond_next722:          ; preds = %cond_false707
+       br bool false, label %bb739, label %bb738
+
+bb738:         ; preds = %cond_next722, %cond_false707
+       br label %bb739
+
+bb739:         ; preds = %bb738, %cond_next722
+       br bool false, label %cond_false820, label %cond_true742
+
+cond_true742:          ; preds = %bb739
+       br bool 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 bool false, label %cond_true792, label %cond_false799
+
+cond_true792:          ; preds = %cond_false778
+       br label %bb1269.outer.backedge
+
+cond_false799:         ; preds = %cond_false778
+       br bool false, label %UnifiedReturnBlock, label %cond_false814
+
+cond_false814:         ; preds = %cond_false799
+       br label %UnifiedUnreachableBlock
+
+cond_false820:         ; preds = %bb739
+       br bool false, label %cond_next835, label %bb851
+
+cond_next835:          ; preds = %cond_false820
+       br bool false, label %bb852, label %bb851
+
+bb851:         ; preds = %cond_next835, %cond_false820
+       br label %bb852
+
+bb852:         ; preds = %bb851, %cond_next835
+       br bool false, label %cond_false933, label %cond_true855
+
+cond_true855:          ; preds = %bb852
+       br bool 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 bool false, label %cond_true905, label %cond_false912
+
+cond_true905:          ; preds = %cond_false891
+       br label %bb1269.outer.outer.backedge
+
+cond_false912:         ; preds = %cond_false891
+       br bool false, label %UnifiedReturnBlock, label %cond_false927
+
+cond_false927:         ; preds = %cond_false912
+       br label %UnifiedUnreachableBlock
+
+cond_false933:         ; preds = %bb852
+       br bool false, label %cond_next948, label %bb964
+
+cond_next948:          ; preds = %cond_false933
+       br bool false, label %bb965, label %bb964
+
+bb964:         ; preds = %cond_next948, %cond_false933
+       br label %bb965
+
+bb965:         ; preds = %bb964, %cond_next948
+       br bool false, label %cond_false1046, label %cond_true968
+
+cond_true968:          ; preds = %bb965
+       br bool 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 bool 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 bool false, label %UnifiedReturnBlock, label %cond_false1040
+
+cond_false1040:                ; preds = %cond_false1025
+       br label %UnifiedUnreachableBlock
+
+cond_false1046:                ; preds = %bb965
+       br bool false, label %cond_next1061, label %bb1077
+
+cond_next1061:         ; preds = %cond_false1046
+       br bool false, label %bb1078, label %bb1077
+
+bb1077:                ; preds = %cond_next1061, %cond_false1046
+       br label %bb1078
+
+bb1078:                ; preds = %bb1077, %cond_next1061
+       %tmp1080 = phi bool [ true, %bb1077 ], [ false, %cond_next1061 ]                ; <bool> [#uses=1]
+       br bool %tmp1080, label %cond_false1159, label %cond_true1081
+
+cond_true1081:         ; preds = %bb1078
+       br bool 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 bool 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 bool 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 bool false, label %UnifiedReturnBlock, label %cond_false1174
+
+cond_false1174:                ; preds = %cond_false1159
+       br bool false, label %UnifiedReturnBlock, label %cond_false1189
+
+cond_false1189:                ; preds = %cond_false1174
+       br bool false, label %UnifiedReturnBlock, label %cond_false1204
+
+cond_false1204:                ; preds = %cond_false1189
+       br bool false, label %UnifiedReturnBlock, label %cond_false1219
+
+cond_false1219:                ; preds = %cond_false1204
+       br bool 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 bool false, label %cond_next1281, label %bb1294
+
+cond_next1281:         ; preds = %bb1269
+       br bool false, label %cond_true1298, label %bb1294
+
+bb1294:                ; preds = %cond_next1281, %bb1269
+       br bool false, label %cond_true1331, label %cond_next1313
+
+cond_true1298:         ; preds = %cond_next1281
+       br bool false, label %cond_false, label %cond_true
+
+cond_next1313:         ; preds = %bb1294
+       br bool false, label %cond_true1331, label %cond_next1355
+
+cond_true1331:         ; preds = %cond_next1313, %bb1294
+       br bool 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 bool 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 bool false, label %cond_next1363, label %bb1388
+
+cond_next1363:         ; preds = %cond_next1355
+       br bool false, label %UnifiedReturnBlock, label %cond_true1366
+
+cond_true1366:         ; preds = %cond_next1363
+       br label %UnifiedReturnBlock
+
+bb1388:                ; preds = %cond_next1355
+       br bool false, label %UnifiedReturnBlock, label %bb1414.preheader
+
+bb1414.preheader:              ; preds = %bb1388
+       br label %bb1414
+
+bb1414:                ; preds = %cond_true1426, %bb1414.preheader
+       br bool false, label %cond_true1426, label %bb1429
+
+cond_true1426:         ; preds = %bb1414
+       br label %bb1414
+
+bb1429:                ; preds = %bb1414
+       br bool false, label %cond_true1431, label %UnifiedReturnBlock
+
+cond_true1431:         ; preds = %bb1429
+       br bool 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
+}