The debug-use flag must be set exactly for uses on DBG_VALUEs. This is so obvious that it can be trivially inferred while parsing. This will reduce noise when printing while omitting an information that has little value to the user. The parser will keep recognizing the flag for compatibility with old `.mir` files. Differential Revision: https://reviews.llvm.org/D53903 llvm-svn: 345671
160 lines
7.8 KiB
YAML
160 lines
7.8 KiB
YAML
# RUN: llc -mtriple thumbv7 -verify-machineinstrs -run-pass arm-ldst-opt %s -o - | FileCheck %s
|
|
--- |
|
|
; ModuleID = '/Volumes/Data/llvm/test/CodeGen/ARM/sched-it-debug-nodes.ll'
|
|
target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
|
|
target triple = "thumbv7"
|
|
|
|
%struct.s = type opaque
|
|
|
|
; Function Attrs: nounwind
|
|
define arm_aapcscc i32 @f(%struct.s* %s, i32 %u, i8* %b, i32 %n) #0 !dbg !4 {
|
|
entry:
|
|
tail call void @llvm.dbg.value(metadata %struct.s* %s, i64 0, metadata !18, metadata !27), !dbg !28
|
|
tail call void @llvm.dbg.value(metadata i32 %u, i64 0, metadata !19, metadata !27), !dbg !28
|
|
tail call void @llvm.dbg.value(metadata i8* %b, i64 0, metadata !20, metadata !27), !dbg !28
|
|
tail call void @llvm.dbg.value(metadata i32 %n, i64 0, metadata !21, metadata !27), !dbg !28
|
|
%cmp = icmp ult i32 %n, 4, !dbg !29
|
|
br i1 %cmp, label %return, label %if.end, !dbg !31
|
|
|
|
if.end: ; preds = %entry
|
|
tail call arm_aapcscc void @g(%struct.s* %s, i8* %b, i32 %n) #3, !dbg !32
|
|
br label %return, !dbg !33
|
|
|
|
return: ; preds = %if.end, %entry
|
|
%retval.0 = phi i32 [ 0, %if.end ], [ -1, %entry ]
|
|
ret i32 %retval.0, !dbg !34
|
|
}
|
|
|
|
declare arm_aapcscc void @g(%struct.s*, i8*, i32) #1
|
|
|
|
; Function Attrs: nounwind readnone
|
|
declare void @llvm.dbg.value(metadata, i64, metadata, metadata) #2
|
|
|
|
attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
|
|
attributes #1 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
|
|
attributes #2 = { nounwind readnone }
|
|
attributes #3 = { nounwind }
|
|
|
|
!llvm.dbg.cu = !{!0}
|
|
!llvm.module.flags = !{!22, !23, !24, !25}
|
|
!llvm.ident = !{!26}
|
|
|
|
!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.7.0 (llvm/trunk 237059)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
|
|
!1 = !DIFile(filename: "<stdin>", directory: "/Users/compnerd/Source/llvm")
|
|
!2 = !{}
|
|
!4 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 9, type: !5, isLocal: false, isDefinition: true, scopeLine: 9, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !17)
|
|
!5 = !DISubroutineType(types: !6)
|
|
!6 = !{!7, !8, !11, !12, !16}
|
|
!7 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
|
!8 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !9, size: 32, align: 32)
|
|
!9 = !DIDerivedType(tag: DW_TAG_typedef, name: "s", file: !1, line: 5, baseType: !10)
|
|
!10 = !DICompositeType(tag: DW_TAG_structure_type, name: "s", file: !1, line: 5, flags: DIFlagFwdDecl)
|
|
!11 = !DIBasicType(name: "unsigned int", size: 32, align: 32, encoding: DW_ATE_unsigned)
|
|
!12 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !13, size: 32, align: 32)
|
|
!13 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !14)
|
|
!14 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint8_t", file: !1, line: 2, baseType: !15)
|
|
!15 = !DIBasicType(name: "unsigned char", size: 8, align: 8, encoding: DW_ATE_unsigned_char)
|
|
!16 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !1, line: 3, baseType: !11)
|
|
!17 = !{!18, !19, !20, !21}
|
|
!18 = !DILocalVariable(name: "s", arg: 1, scope: !4, file: !1, line: 9, type: !8)
|
|
!19 = !DILocalVariable(name: "u", arg: 2, scope: !4, file: !1, line: 9, type: !11)
|
|
!20 = !DILocalVariable(name: "b", arg: 3, scope: !4, file: !1, line: 9, type: !12)
|
|
!21 = !DILocalVariable(name: "n", arg: 4, scope: !4, file: !1, line: 9, type: !16)
|
|
!22 = !{i32 2, !"Dwarf Version", i32 4}
|
|
!23 = !{i32 2, !"Debug Info Version", i32 3}
|
|
!24 = !{i32 1, !"wchar_size", i32 4}
|
|
!25 = !{i32 1, !"min_enum_size", i32 4}
|
|
!26 = !{!"clang version 3.7.0 (llvm/trunk 237059)"}
|
|
!27 = !DIExpression()
|
|
!28 = !DILocation(line: 9, scope: !4)
|
|
!29 = !DILocation(line: 10, scope: !30)
|
|
!30 = distinct !DILexicalBlock(scope: !4, file: !1, line: 10)
|
|
!31 = !DILocation(line: 10, scope: !4)
|
|
!32 = !DILocation(line: 13, scope: !4)
|
|
!33 = !DILocation(line: 14, scope: !4)
|
|
!34 = !DILocation(line: 15, scope: !4)
|
|
|
|
...
|
|
---
|
|
name: f
|
|
alignment: 1
|
|
exposesReturnsTwice: false
|
|
tracksRegLiveness: true
|
|
liveins:
|
|
- { reg: '$r0' }
|
|
- { reg: '$r1' }
|
|
- { reg: '$r2' }
|
|
- { reg: '$r3' }
|
|
calleeSavedRegisters: [ '$lr', '$d8', '$d9', '$d10', '$d11', '$d12', '$d13',
|
|
'$d14', '$d15', '$q4', '$q5', '$q6', '$q7', '$r4',
|
|
'$r5', '$r6', '$r7', '$r8', '$r9', '$r10', '$r11',
|
|
'$s16', '$s17', '$s18', '$s19', '$s20', '$s21',
|
|
'$s22', '$s23', '$s24', '$s25', '$s26', '$s27',
|
|
'$s28', '$s29', '$s30', '$s31', '$d8_d10', '$d9_d11',
|
|
'$d10_d12', '$d11_d13', '$d12_d14', '$d13_d15',
|
|
'$q4_q5', '$q5_q6', '$q6_q7', '$q4_q5_q6_q7', '$r4_r5',
|
|
'$r6_r7', '$r8_r9', '$r10_r11', '$d8_d9_d10', '$d9_d10_d11',
|
|
'$d10_d11_d12', '$d11_d12_d13', '$d12_d13_d14',
|
|
'$d13_d14_d15', '$d8_d10_d12', '$d9_d11_d13', '$d10_d12_d14',
|
|
'$d11_d13_d15', '$d8_d10_d12_d14', '$d9_d11_d13_d15',
|
|
'$d9_d10', '$d11_d12', '$d13_d14', '$d9_d10_d11_d12',
|
|
'$d11_d12_d13_d14' ]
|
|
frameInfo:
|
|
isFrameAddressTaken: false
|
|
isReturnAddressTaken: false
|
|
hasStackMap: false
|
|
hasPatchPoint: false
|
|
stackSize: 8
|
|
offsetAdjustment: 0
|
|
maxAlignment: 4
|
|
adjustsStack: true
|
|
hasCalls: true
|
|
maxCallFrameSize: 0
|
|
hasOpaqueSPAdjustment: false
|
|
hasVAStart: false
|
|
hasMustTailInVarArgFunc: false
|
|
stack:
|
|
- { id: 0, type: spill-slot, offset: -4, size: 4, alignment: 4, callee-saved-register: '$lr', callee-saved-restored: false }
|
|
- { id: 1, type: spill-slot, offset: -8, size: 4, alignment: 4, callee-saved-register: '$r7', callee-saved-restored: true }
|
|
body: |
|
|
bb.0.entry:
|
|
liveins: $r0, $r1, $r2, $r3, $lr, $r7
|
|
|
|
DBG_VALUE $r0, $noreg, !18, !27, debug-location !28
|
|
DBG_VALUE $r1, $noreg, !19, !27, debug-location !28
|
|
DBG_VALUE $r2, $noreg, !20, !27, debug-location !28
|
|
DBG_VALUE $r3, $noreg, !21, !27, debug-location !28
|
|
t2CMPri $r3, 4, 14, $noreg, implicit-def $cpsr, debug-location !31
|
|
t2Bcc %bb.2.if.end, 2, killed $cpsr
|
|
|
|
bb.1:
|
|
liveins: $lr, $r7
|
|
|
|
DBG_VALUE $r1, $noreg, !19, !27, debug-location !28
|
|
$r0 = t2MOVi -1, 14, $noreg, $noreg
|
|
DBG_VALUE $r1, $noreg, !19, !27, debug-location !28
|
|
tBX_RET 14, $noreg, implicit $r0, debug-location !34
|
|
|
|
bb.2.if.end:
|
|
liveins: $r0, $r2, $r3, $r7, $lr
|
|
|
|
$sp = frame-setup t2STMDB_UPD $sp, 14, $noreg, killed $r7, killed $lr
|
|
frame-setup CFI_INSTRUCTION def_cfa_offset 8
|
|
frame-setup CFI_INSTRUCTION offset $lr, -4
|
|
frame-setup CFI_INSTRUCTION offset $r7, -8
|
|
DBG_VALUE $r0, $noreg, !18, !27, debug-location !28
|
|
DBG_VALUE $r1, $noreg, !19, !27, debug-location !28
|
|
DBG_VALUE $r2, $noreg, !20, !27, debug-location !28
|
|
DBG_VALUE $r3, $noreg, !21, !27, debug-location !28
|
|
$r1 = COPY killed $r2, debug-location !32
|
|
DBG_VALUE $r1, $noreg, !19, !27, debug-location !28
|
|
$r2 = COPY killed $r3, debug-location !32
|
|
tBL 14, $noreg, @g, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit $r0, implicit $r1, implicit $r2, implicit-def $sp, debug-location !32
|
|
$r0 = t2MOVi 0, 14, $noreg, $noreg
|
|
$sp = t2LDMIA_UPD $sp, 14, $noreg, def $r7, def $lr
|
|
tBX_RET 14, $noreg, implicit $r0, debug-location !34
|
|
# Verify that the DBG_VALUE is ignored.
|
|
# CHECK: $sp = t2LDMIA_RET $sp, 14, $noreg, def $r7, def $pc, implicit $r0
|
|
|
|
...
|