brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.2 KiB · 5e4dd29 Raw
111 lines · plain
1# RUN: llc --run-pass=livedebugvalues %s -o - -experimental-debug-variable-locations | FileCheck %s2 3## Tests that when a block that is not directly reachable from the entry block4## contains a DBG_PHI, we treat those DBG_PHIs as referring to live-in values,5## and resolve them for users as normal.6## FIXME: "def" currently does not have a value due to blocks that are not7## directly reachable from the entry block not being fully covered by the8## LiveDebugValues analysis.9 10# CHECK-DAG: ![[UNDEFVAR:[0-9]+]] = !DILocalVariable(name: "undef"11# CHECK-DAG: ![[DEFVAR:[0-9]+]] = !DILocalVariable(name: "def"12 13# CHECK-LABEL: bb.1.bb114# CHECK: DBG_VALUE_LIST ![[UNDEFVAR]], {{.+}}, $noreg15# CHECK-LABEL: bb.4.bb316# CHECK: DBG_VALUE_LIST ![[DEFVAR]], {{.+}}, $noreg17 18--- |19  ; ModuleID = 'llvm/test/DebugInfo/X86/instr-ref-unreachable.mir'20  source_filename = "/tmp/b.ll"21  target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"22  target triple = "x86_64-unknown-linux-gnu"23 24  @global = private constant [2 x ptr] [ptr blockaddress(@foo, %bb3), ptr blockaddress(@foo, %bb1)]25 26  define ptr @foo() !dbg !4 {27  bb:28    br label %bb329 30  bb1:                                              ; preds = %bb331    call void @llvm.dbg.value(metadata i64 %phi, metadata !6, metadata !DIExpression()), !dbg !832    call void @llvm.dbg.value(metadata i64 %phi, metadata !9, metadata !DIExpression()), !dbg !833    store i32 0, ptr null, align 4, !dbg !1034    %getelementptr = getelementptr i32, ptr null, i64 %phi35    store i32 0, ptr %getelementptr, align 436    br label %bb237 38  bb2:                                              ; preds = %bb2, %bb139    %select = select i1 false, i1 false, i1 false40    br i1 %select, label %bb3, label %bb241 42  bb3:                                              ; preds = %bb2, %bb43    %phi = phi i64 [ 1, %bb ], [ 0, %bb2 ]44    br label %bb145  }46 47  declare void @llvm.dbg.value(metadata, metadata, metadata)48 49  !llvm.dbg.cu = !{!0}50  !llvm.module.flags = !{!3}51 52  !0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !1, isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !2, globals: !2, imports: !2, splitDebugInlining: false, nameTableKind: GNU)53  !1 = !DIFile(filename: "test.cpp", directory: ".")54  !2 = !{}55  !3 = !{i32 2, !"Debug Info Version", i32 3}56  !4 = distinct !DISubprogram(name: "GetNumericFormat", linkageName: "f", scope: null, file: !1, line: 980, type: !5, scopeLine: 984, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)57  !5 = distinct !DISubroutineType(types: !2)58  !6 = !DILocalVariable(name: "undef", scope: !4, file: !1, line: 263, type: !7)59  !7 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned)60  !8 = !DILocation(line: 0, scope: !4)61  !9 = !DILocalVariable(name: "def", scope: !4, file: !1, line: 263, type: !7)62  !10 = !DILocation(line: 151, column: 41, scope: !4)63 64...65---66name:            foo67alignment:       1668tracksRegLiveness: true69debugInstrRef:   true70tracksDebugUserValues: true71frameInfo:72  maxAlignment:    173body:             |74  bb.0.bb:75    successors: %bb.1(0x80000000)76 77    $ecx = MOV32ri 1, implicit-def $rcx78    renamable $al = MOV8ri 179 80  bb.1.bb1 (ir-block-address-taken %ir-block.bb1, align 16):81    successors: %bb.2(0x80000000)82    liveins: $al, $rcx83 84    DBG_INSTR_REF !6, !DIExpression(DW_OP_LLVM_arg, 0), dbg-instr-ref(1, 0), debug-location !885    MOV32mi $noreg, 1, $noreg, 0, $noreg, 0, debug-location !10 :: (store (s32) into `ptr null`)86    MOV32mi $noreg, 4, killed renamable $rcx, 0, $noreg, 0 :: (store (s32) into %ir.getelementptr)87 88  bb.2.bb2 (align 16):89    successors: %bb.3(0x04000000), %bb.2(0x7c000000)90    liveins: $al91 92    TEST8rr renamable $al, renamable $al, implicit-def $eflags93    JCC_1 %bb.2, 5, implicit killed $eflags94 95  bb.3:96    successors: %bb.1(0x80000000)97    liveins: $al98 99    renamable $ecx = XOR32rr undef $ecx, undef $ecx, implicit-def dead $eflags, implicit-def $rcx100    JMP_1 %bb.1101 102  bb.4.bb3 (ir-block-address-taken %ir-block.bb3):103    successors: %bb.1(0x80000000)104    liveins: $al, $rcx105 106    DBG_PHI $rcx, 1107    DBG_INSTR_REF !9, !DIExpression(DW_OP_LLVM_arg, 0), dbg-instr-ref(1, 0), debug-location !8108    JMP_1 %bb.1109 110...111