1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=x86_64-apple-macosx < %s -verify-machineinstrs | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; 3*9880d681SAndroid Build Coastguard Worker; PR16143: MachineOperand::setIsKill(bool): Assertion 4*9880d681SAndroid Build Coastguard Worker; 5*9880d681SAndroid Build Coastguard Worker; verify-machineinstrs should ensure that DEBUG_VALUEs go before the 6*9880d681SAndroid Build Coastguard Worker; terminator. 7*9880d681SAndroid Build Coastguard Worker; 8*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test: 9*9880d681SAndroid Build Coastguard Worker; CHECK: ##DEBUG_VALUE: foo:i 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Worker%a = type { i32, i32 } 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Workerdefine hidden fastcc %a* @test() #1 !dbg !1 { 14*9880d681SAndroid Build Coastguard Workerentry: 15*9880d681SAndroid Build Coastguard Worker %0 = icmp eq %a* undef, null, !dbg !12 16*9880d681SAndroid Build Coastguard Worker br i1 %0, label %"14", label %return, !dbg !12 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Worker"14": ; preds = %"8" 19*9880d681SAndroid Build Coastguard Worker br i1 undef, label %"25", label %"21", !dbg !12 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Worker"21": ; preds = %"14" 22*9880d681SAndroid Build Coastguard Worker br i1 undef, label %may_unswitch_on.exit, label %"6.i", !dbg !12 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Worker"6.i": ; preds = %"21" 25*9880d681SAndroid Build Coastguard Worker br i1 undef, label %"10.i", label %may_unswitch_on.exit, !dbg !12 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Worker"10.i": ; preds = %"6.i" 28*9880d681SAndroid Build Coastguard Worker br i1 undef, label %may_unswitch_on.exit, label %"12.i", !dbg !12 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Worker"12.i": ; preds = %"10.i" 31*9880d681SAndroid Build Coastguard Worker br i1 undef, label %"4.i.i", label %"3.i.i", !dbg !12 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker"3.i.i": ; preds = %"12.i" 34*9880d681SAndroid Build Coastguard Worker br i1 undef, label %"4.i.i", label %VEC_edge_base_index.exit.i, !dbg !12 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Worker"4.i.i": ; preds = %"3.i.i", %"12.i" 37*9880d681SAndroid Build Coastguard Worker unreachable, !dbg !12 38*9880d681SAndroid Build Coastguard Worker 39*9880d681SAndroid Build Coastguard WorkerVEC_edge_base_index.exit.i: ; preds = %"3.i.i" 40*9880d681SAndroid Build Coastguard Worker br i1 undef, label %may_unswitch_on.exit, label %"16.i", !dbg !12 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Worker"16.i": ; preds = %VEC_edge_base_index.exit.i 43*9880d681SAndroid Build Coastguard Worker br i1 undef, label %"4.i6.i", label %"3.i5.i", !dbg !12 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Worker"3.i5.i": ; preds = %"16.i" 46*9880d681SAndroid Build Coastguard Worker br i1 undef, label %VEC_edge_base_index.exit7.i, label %"4.i6.i", !dbg !12 47*9880d681SAndroid Build Coastguard Worker 48*9880d681SAndroid Build Coastguard Worker"4.i6.i": ; preds = %"3.i5.i", %"16.i" 49*9880d681SAndroid Build Coastguard Worker unreachable, !dbg !12 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard WorkerVEC_edge_base_index.exit7.i: ; preds = %"3.i5.i" 52*9880d681SAndroid Build Coastguard Worker br i1 undef, label %may_unswitch_on.exit, label %"21.i", !dbg !12 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Worker"21.i": ; preds = %VEC_edge_base_index.exit7.i 55*9880d681SAndroid Build Coastguard Worker br i1 undef, label %may_unswitch_on.exit, label %"23.i", !dbg !12 56*9880d681SAndroid Build Coastguard Worker 57*9880d681SAndroid Build Coastguard Worker"23.i": ; preds = %"21.i" 58*9880d681SAndroid Build Coastguard Worker br i1 undef, label %may_unswitch_on.exit, label %"26.i", !dbg !12 59*9880d681SAndroid Build Coastguard Worker 60*9880d681SAndroid Build Coastguard Worker"26.i": ; preds = %"34.i", %"23.i" 61*9880d681SAndroid Build Coastguard Worker %1 = icmp eq i32 undef, 9, !dbg !12 62*9880d681SAndroid Build Coastguard Worker br i1 %1, label %"34.i", label %"28.i", !dbg !12 63*9880d681SAndroid Build Coastguard Worker 64*9880d681SAndroid Build Coastguard Worker"28.i": ; preds = %"26.i" 65*9880d681SAndroid Build Coastguard Worker unreachable 66*9880d681SAndroid Build Coastguard Worker 67*9880d681SAndroid Build Coastguard Worker"34.i": ; preds = %"26.i" 68*9880d681SAndroid Build Coastguard Worker br i1 undef, label %"26.i", label %"36.i", !dbg !12 69*9880d681SAndroid Build Coastguard Worker 70*9880d681SAndroid Build Coastguard Worker"36.i": ; preds = %"34.i" 71*9880d681SAndroid Build Coastguard Worker br i1 undef, label %"37.i", label %"38.i", !dbg !12 72*9880d681SAndroid Build Coastguard Worker 73*9880d681SAndroid Build Coastguard Worker"37.i": ; preds = %"36.i" 74*9880d681SAndroid Build Coastguard Worker br label %"38.i", !dbg !12 75*9880d681SAndroid Build Coastguard Worker 76*9880d681SAndroid Build Coastguard Worker"38.i": ; preds = %"37.i", %"36.i" 77*9880d681SAndroid Build Coastguard Worker br i1 undef, label %"39.i", label %"45.i", !dbg !12 78*9880d681SAndroid Build Coastguard Worker 79*9880d681SAndroid Build Coastguard Worker"39.i": ; preds = %"38.i" 80*9880d681SAndroid Build Coastguard Worker br i1 undef, label %"41.i", label %may_unswitch_on.exit, !dbg !12 81*9880d681SAndroid Build Coastguard Worker 82*9880d681SAndroid Build Coastguard Worker"41.i": ; preds = %"39.i" 83*9880d681SAndroid Build Coastguard Worker br i1 undef, label %may_unswitch_on.exit, label %"42.i", !dbg !12 84*9880d681SAndroid Build Coastguard Worker 85*9880d681SAndroid Build Coastguard Worker"42.i": ; preds = %"41.i" 86*9880d681SAndroid Build Coastguard Worker br i1 undef, label %may_unswitch_on.exit, label %"44.i", !dbg !12 87*9880d681SAndroid Build Coastguard Worker 88*9880d681SAndroid Build Coastguard Worker"44.i": ; preds = %"42.i" 89*9880d681SAndroid Build Coastguard Worker %2 = load %a*, %a** undef, align 8, !dbg !12 90*9880d681SAndroid Build Coastguard Worker %3 = bitcast %a* %2 to %a*, !dbg !12 91*9880d681SAndroid Build Coastguard Worker call void @llvm.dbg.value(metadata %a* %3, i64 0, metadata !6, metadata !DIExpression(DW_OP_deref)), !dbg !12 92*9880d681SAndroid Build Coastguard Worker br label %may_unswitch_on.exit, !dbg !12 93*9880d681SAndroid Build Coastguard Worker 94*9880d681SAndroid Build Coastguard Worker"45.i": ; preds = %"38.i" 95*9880d681SAndroid Build Coastguard Worker unreachable 96*9880d681SAndroid Build Coastguard Worker 97*9880d681SAndroid Build Coastguard Workermay_unswitch_on.exit: ; preds = %"44.i", %"42.i", %"41.i", %"39.i", %"23.i", %"21.i", %VEC_edge_base_index.exit7.i, %VEC_edge_base_index.exit.i, %"10.i", %"6.i", %"21" 98*9880d681SAndroid Build Coastguard Worker %4 = phi %a* [ %3, %"44.i" ], [ null, %"6.i" ], [ null, %"10.i" ], [ null, %VEC_edge_base_index.exit7.i ], [ null, %VEC_edge_base_index.exit.i ], [ null, %"21.i" ], [ null, %"23.i" ], [ null, %"39.i" ], [ null, %"42.i" ], [ null, %"41.i" ], [ null, %"21" ] 99*9880d681SAndroid Build Coastguard Worker br label %return 100*9880d681SAndroid Build Coastguard Worker 101*9880d681SAndroid Build Coastguard Worker"25": ; preds = %"14" 102*9880d681SAndroid Build Coastguard Worker unreachable 103*9880d681SAndroid Build Coastguard Worker 104*9880d681SAndroid Build Coastguard Worker"return": 105*9880d681SAndroid Build Coastguard Worker %result = phi %a* [ null, %entry ], [ %4, %may_unswitch_on.exit ] 106*9880d681SAndroid Build Coastguard Worker ret %a* %result, !dbg !12 107*9880d681SAndroid Build Coastguard Worker} 108*9880d681SAndroid Build Coastguard Worker 109*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind readnone } 110*9880d681SAndroid Build Coastguard Workerattributes #1 = { nounwind uwtable } 111*9880d681SAndroid Build Coastguard Worker 112*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.dbg.value(metadata, i64, metadata, metadata) nounwind readnone 113*9880d681SAndroid Build Coastguard Worker 114*9880d681SAndroid Build Coastguard Worker!llvm.dbg.cu = !{!0} 115*9880d681SAndroid Build Coastguard Worker!llvm.module.flags = !{!22} 116*9880d681SAndroid Build Coastguard Worker 117*9880d681SAndroid Build Coastguard Worker!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "Apple clang version", isOptimized: true, emissionKind: FullDebug, file: !20, enums: !21, retainedTypes: !21, imports: null) 118*9880d681SAndroid Build Coastguard Worker!1 = distinct !DISubprogram(name: "foo", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, file: !20, scope: !2, type: !3, variables: !19) 119*9880d681SAndroid Build Coastguard Worker!2 = !DIFile(filename: "a.c", directory: "/private/tmp") 120*9880d681SAndroid Build Coastguard Worker!3 = !DISubroutineType(types: !4) 121*9880d681SAndroid Build Coastguard Worker!4 = !{!5} 122*9880d681SAndroid Build Coastguard Worker!5 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) 123*9880d681SAndroid Build Coastguard Worker!6 = !DILocalVariable(name: "i", line: 2, arg: 1, scope: !1, file: !2, type: !5) 124*9880d681SAndroid Build Coastguard Worker!7 = !DILocalVariable(name: "c", line: 2, arg: 2, scope: !1, file: !2, type: !8) 125*9880d681SAndroid Build Coastguard Worker!8 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, scope: !0, baseType: !9) 126*9880d681SAndroid Build Coastguard Worker!9 = !DIBasicType(tag: DW_TAG_base_type, name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char) 127*9880d681SAndroid Build Coastguard Worker!10 = !DILocalVariable(name: "a", line: 3, scope: !11, file: !2, type: !9) 128*9880d681SAndroid Build Coastguard Worker!11 = distinct !DILexicalBlock(line: 2, column: 25, file: !20, scope: !1) 129*9880d681SAndroid Build Coastguard Worker!12 = !DILocation(line: 2, column: 13, scope: !1) 130*9880d681SAndroid Build Coastguard Worker!19 = !{!6, !7, !10} 131*9880d681SAndroid Build Coastguard Worker!20 = !DIFile(filename: "a.c", directory: "/private/tmp") 132*9880d681SAndroid Build Coastguard Worker!21 = !{} 133*9880d681SAndroid Build Coastguard Worker!22 = !{i32 1, !"Debug Info Version", i32 3} 134