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
124 lines
5.5 KiB
YAML
124 lines
5.5 KiB
YAML
# RUN: llc -start-before=livedebugvalues -filetype=obj -o - %s | \
|
|
# RUN: llvm-dwarfdump - | FileCheck %s
|
|
#
|
|
# This is an artificial example of a debug value residing in a composite
|
|
# location with a complex expression. Because the semantics of applying a DWARF
|
|
# expression to a composite location are ill-defined, the compiler should bail
|
|
# out of emitting a location.
|
|
#
|
|
# CHECK: .debug_info contents:
|
|
# CHECK: DW_TAG_variable
|
|
# CHECK-NOT: DW_AT_location
|
|
# CHECK: DW_TAG
|
|
--- |
|
|
; Generated from:
|
|
; typedef float vec2 __attribute__((vector_size(16)));
|
|
; vec2 v();
|
|
; float f() {
|
|
; vec2 vec = v();
|
|
; return vec[0] + vec[1];
|
|
; }
|
|
|
|
target datalayout = "e-m:o-p:32:32-f64:32:64-v64:32:64-v128:32:128-a:0:32-n32-S32"
|
|
target triple = "thumbv7s-apple-ios5.0.0"
|
|
|
|
define float @f() local_unnamed_addr #0 !dbg !9 {
|
|
entry:
|
|
%call = tail call <4 x float> bitcast (<4 x float> (...)* @v to <4 x float> ()*)() #0, !dbg !19
|
|
tail call void @llvm.dbg.value(metadata <4 x float> %call, i64 0, metadata !14, metadata !20), !dbg !21
|
|
%vecext = extractelement <4 x float> %call, i32 0, !dbg !22
|
|
%vecext1 = extractelement <4 x float> %call, i32 1, !dbg !23
|
|
%add = fadd float %vecext, %vecext1, !dbg !24
|
|
ret float %add, !dbg !25
|
|
}
|
|
|
|
declare arm_aapcs_vfpcc <4 x float> @v(...) local_unnamed_addr #0
|
|
declare void @llvm.dbg.value(metadata, i64, metadata, metadata) #0
|
|
|
|
attributes #0 = { nounwind readnone }
|
|
|
|
!llvm.dbg.cu = !{!0}
|
|
!llvm.module.flags = !{!3, !4}
|
|
!llvm.ident = !{!8}
|
|
|
|
!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 4.0.0 (trunk 286322) (llvm/trunk 286305)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
|
|
!1 = !DIFile(filename: "v.c", directory: "/")
|
|
!2 = !{}
|
|
!3 = !{i32 2, !"Dwarf Version", i32 2}
|
|
!4 = !{i32 2, !"Debug Info Version", i32 3}
|
|
!8 = !{!"clang version 4.0.0 (trunk 286322) (llvm/trunk 286305)"}
|
|
!9 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 3, type: !10, isLocal: false, isDefinition: true, scopeLine: 3, isOptimized: true, unit: !0, retainedNodes: !13)
|
|
!10 = !DISubroutineType(types: !11)
|
|
!11 = !{!12}
|
|
!12 = !DIBasicType(name: "float", size: 32, encoding: DW_ATE_float)
|
|
!13 = !{!14}
|
|
!14 = !DILocalVariable(name: "vec", scope: !9, file: !1, line: 4, type: !15)
|
|
!15 = !DIDerivedType(tag: DW_TAG_typedef, name: "vec2", file: !1, line: 1, baseType: !16)
|
|
!16 = !DICompositeType(tag: DW_TAG_array_type, baseType: !12, size: 128, flags: DIFlagVector, elements: !17)
|
|
!17 = !{!18}
|
|
!18 = !DISubrange(count: 4)
|
|
!19 = !DILocation(line: 4, column: 13, scope: !9)
|
|
!20 = !DIExpression(DW_OP_plus_uconst, 1, DW_OP_constu, 1, DW_OP_minus)
|
|
!21 = !DILocation(line: 4, column: 7, scope: !9)
|
|
!22 = !DILocation(line: 5, column: 9, scope: !9)
|
|
!23 = !DILocation(line: 5, column: 18, scope: !9)
|
|
!24 = !DILocation(line: 5, column: 16, scope: !9)
|
|
!25 = !DILocation(line: 5, column: 2, scope: !9)
|
|
|
|
...
|
|
---
|
|
name: f
|
|
alignment: 1
|
|
exposesReturnsTwice: false
|
|
legalized: false
|
|
regBankSelected: false
|
|
selected: false
|
|
tracksRegLiveness: true
|
|
calleeSavedRegisters: [ '$lr', '$d8', '$d9', '$d10', '$d11', '$d12', '$d13',
|
|
'$d14', '$d15', '$q4', '$q5', '$q6', '$q7', '$r4',
|
|
'$r5', '$r6', '$r7', '$r8', '$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', '$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: 4
|
|
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' }
|
|
body: |
|
|
bb.0.entry:
|
|
liveins: $lr
|
|
|
|
early-clobber $sp = frame-setup t2STR_PRE killed undef $lr, $sp, -4, 14, _
|
|
frame-setup CFI_INSTRUCTION def_cfa_offset 4
|
|
frame-setup CFI_INSTRUCTION offset $lr, -4
|
|
tBL 14, _, @v, csr_ios, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $r0, implicit-def $r1, implicit-def $r2, implicit-def $r3, debug-location !19
|
|
$d1 = VMOVDRR killed $r2, killed $r3, 14, _, implicit-def $q0, debug-location !19
|
|
$d0 = VMOVDRR killed $r0, killed $r1, 14, _, implicit killed $q0, implicit-def $q0, debug-location !19
|
|
DBG_VALUE $q0, _, !14, !20, debug-location !21
|
|
$s4 = VMOVS $s1, 14, _, implicit-def $d2, debug-location !24
|
|
$d0 = VADDfd $d0, killed $d2, 14, _, implicit killed $q0, debug-location !24
|
|
$r0 = VMOVRS $s0, 14, _, implicit killed $d0, debug-location !25
|
|
$lr, $sp = t2LDR_POST $sp, 4, 14, _, debug-location !25
|
|
tBX_RET 14, _, implicit $r0, debug-location !25
|
|
|
|
...
|