1a971bc38SShubham Sandeep Rastogi# RUN: llc -O2 %s -start-after=arm-mve-vpt-opts -stop-after=arm-prera-ldst-opt -o - | FileCheck %s 2a971bc38SShubham Sandeep Rastogi# CHECK: DBG_VALUE 13, $noreg, !11, !DIExpression(), debug-location !13 3a971bc38SShubham Sandeep Rastogi 4a971bc38SShubham Sandeep Rastogi 5a971bc38SShubham Sandeep Rastogi# This test checks to make sure that a DBG_VALUE that uses an immediate doesn't get zero-ed out by a DBG_VALUE that comes later in the basic block, and describes the same variable. 6a971bc38SShubham Sandeep Rastogi 7a971bc38SShubham Sandeep Rastogi--- | 8a971bc38SShubham Sandeep Rastogi ; ModuleID = '/Users/shubham/Development/llvm-project/llvm/test/DebugInfo/Generic/incorrect-variable-debugloc1.ll' 9a971bc38SShubham Sandeep Rastogi source_filename = "/Users/shubham/Development/llvm-project/llvm/test/DebugInfo/Generic/incorrect-variable-debugloc1.ll" 10a971bc38SShubham Sandeep Rastogi target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64" 11a971bc38SShubham Sandeep Rastogi target triple = "armv8-unknown-linux" 12a971bc38SShubham Sandeep Rastogi 13a971bc38SShubham Sandeep Rastogi ; Function Attrs: uwtable 14*7fde0b2fSShubham Sandeep Rastogi define i32 @main() !dbg !6 { 15a971bc38SShubham Sandeep Rastogi entry: 16a971bc38SShubham Sandeep Rastogi %c = alloca i32, align 4 17a971bc38SShubham Sandeep Rastogi tail call void @llvm.dbg.value(metadata i32 13, metadata !11, metadata !DIExpression()), !dbg !13 18a971bc38SShubham Sandeep Rastogi store volatile i32 13, ptr %c, align 4, !dbg !14 19a971bc38SShubham Sandeep Rastogi %call = tail call i32 @_Z4funcv(), !dbg !15 20a971bc38SShubham Sandeep Rastogi tail call void @llvm.dbg.value(metadata i32 %call, metadata !11, metadata !DIExpression()), !dbg !13 21a971bc38SShubham Sandeep Rastogi store volatile i32 %call, ptr %c, align 4, !dbg !15 22a971bc38SShubham Sandeep Rastogi tail call void @llvm.dbg.value(metadata ptr %c, metadata !11, metadata !DIExpression(DW_OP_deref)), !dbg !13 23a971bc38SShubham Sandeep Rastogi %c.0.c.0. = load volatile i32, ptr %c, align 4, !dbg !16 24a971bc38SShubham Sandeep Rastogi ret i32 %c.0.c.0., !dbg !16 25a971bc38SShubham Sandeep Rastogi } 26a971bc38SShubham Sandeep Rastogi 27*7fde0b2fSShubham Sandeep Rastogi declare i32 @_Z4funcv() 28a971bc38SShubham Sandeep Rastogi 29*7fde0b2fSShubham Sandeep Rastogi declare void @llvm.dbg.value(metadata, metadata, metadata) 30a971bc38SShubham Sandeep Rastogi 31a971bc38SShubham Sandeep Rastogi !llvm.dbg.cu = !{!0} 32a971bc38SShubham Sandeep Rastogi !llvm.module.flags = !{!3, !4} 33a971bc38SShubham Sandeep Rastogi !llvm.ident = !{!5} 34a971bc38SShubham Sandeep Rastogi 35a971bc38SShubham Sandeep Rastogi !0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.6.0 (trunk 223522)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !2, globals: !2, imports: !2) 36a971bc38SShubham Sandeep Rastogi !1 = !DIFile(filename: "test.cpp", directory: "/home/kromanova/ngh/ToT_latest/llvm/test/DebugInfo") 37a971bc38SShubham Sandeep Rastogi !2 = !{} 38a971bc38SShubham Sandeep Rastogi !3 = !{i32 2, !"Dwarf Version", i32 2} 39a971bc38SShubham Sandeep Rastogi !4 = !{i32 2, !"Debug Info Version", i32 3} 40a971bc38SShubham Sandeep Rastogi !5 = !{!"clang version 3.6.0 (trunk 223522)"} 41a971bc38SShubham Sandeep Rastogi !6 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 3, type: !7, scopeLine: 4, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !10) 42a971bc38SShubham Sandeep Rastogi !7 = !DISubroutineType(types: !8) 43a971bc38SShubham Sandeep Rastogi !8 = !{!9} 44a971bc38SShubham Sandeep Rastogi !9 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed) 45a971bc38SShubham Sandeep Rastogi !10 = !{!11} 46a971bc38SShubham Sandeep Rastogi !11 = !DILocalVariable(name: "c", scope: !6, file: !1, line: 5, type: !12) 47a971bc38SShubham Sandeep Rastogi !12 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !9) 48a971bc38SShubham Sandeep Rastogi !13 = !DILocation(line: 5, column: 16, scope: !6) 49a971bc38SShubham Sandeep Rastogi !14 = !DILocation(line: 5, column: 3, scope: !6) 50a971bc38SShubham Sandeep Rastogi !15 = !DILocation(line: 6, column: 7, scope: !6) 51a971bc38SShubham Sandeep Rastogi !16 = !DILocation(line: 7, column: 3, scope: !6) 52a971bc38SShubham Sandeep Rastogi 53a971bc38SShubham Sandeep Rastogi... 54a971bc38SShubham Sandeep Rastogi--- 55a971bc38SShubham Sandeep Rastoginame: main 56a971bc38SShubham Sandeep Rastogialignment: 4 57a971bc38SShubham Sandeep RastogiexposesReturnsTwice: false 58a971bc38SShubham Sandeep Rastogilegalized: false 59a971bc38SShubham Sandeep RastogiregBankSelected: false 60a971bc38SShubham Sandeep Rastogiselected: false 61a971bc38SShubham Sandeep RastogifailedISel: false 62a971bc38SShubham Sandeep RastogitracksRegLiveness: true 63a971bc38SShubham Sandeep RastogihasWinCFI: false 64a971bc38SShubham Sandeep RastogicallsEHReturn: false 65a971bc38SShubham Sandeep RastogicallsUnwindInit: false 66a971bc38SShubham Sandeep RastogihasEHCatchret: false 67a971bc38SShubham Sandeep RastogihasEHScopes: false 68a971bc38SShubham Sandeep RastogihasEHFunclets: false 69a971bc38SShubham Sandeep RastogiisOutlined: false 70a971bc38SShubham Sandeep RastogidebugInstrRef: false 71a971bc38SShubham Sandeep RastogifailsVerification: false 72a971bc38SShubham Sandeep RastogitracksDebugUserValues: false 73a971bc38SShubham Sandeep Rastogiregisters: 74a971bc38SShubham Sandeep Rastogi - { id: 0, class: gpr, preferred-register: '' } 75a971bc38SShubham Sandeep Rastogi - { id: 1, class: gpr, preferred-register: '' } 76a971bc38SShubham Sandeep Rastogi - { id: 2, class: gpr, preferred-register: '' } 77a971bc38SShubham Sandeep Rastogiliveins: [] 78a971bc38SShubham Sandeep RastogiframeInfo: 79a971bc38SShubham Sandeep Rastogi isFrameAddressTaken: false 80a971bc38SShubham Sandeep Rastogi isReturnAddressTaken: false 81a971bc38SShubham Sandeep Rastogi hasStackMap: false 82a971bc38SShubham Sandeep Rastogi hasPatchPoint: false 83a971bc38SShubham Sandeep Rastogi stackSize: 0 84a971bc38SShubham Sandeep Rastogi offsetAdjustment: 0 85a971bc38SShubham Sandeep Rastogi maxAlignment: 4 86a971bc38SShubham Sandeep Rastogi adjustsStack: true 87a971bc38SShubham Sandeep Rastogi hasCalls: true 88a971bc38SShubham Sandeep Rastogi stackProtector: '' 89a971bc38SShubham Sandeep Rastogi functionContext: '' 90a971bc38SShubham Sandeep Rastogi maxCallFrameSize: 0 91a971bc38SShubham Sandeep Rastogi cvBytesOfCalleeSavedRegisters: 0 92a971bc38SShubham Sandeep Rastogi hasOpaqueSPAdjustment: false 93a971bc38SShubham Sandeep Rastogi hasVAStart: false 94a971bc38SShubham Sandeep Rastogi hasMustTailInVarArgFunc: false 95a971bc38SShubham Sandeep Rastogi hasTailCall: false 96a971bc38SShubham Sandeep Rastogi localFrameSize: 4 97a971bc38SShubham Sandeep Rastogi savePoint: '' 98a971bc38SShubham Sandeep Rastogi restorePoint: '' 99a971bc38SShubham Sandeep RastogifixedStack: [] 100a971bc38SShubham Sandeep Rastogistack: 101a971bc38SShubham Sandeep Rastogi - { id: 0, name: c, type: default, offset: 0, size: 4, alignment: 4, 102a971bc38SShubham Sandeep Rastogi stack-id: default, callee-saved-register: '', callee-saved-restored: true, 103a971bc38SShubham Sandeep Rastogi local-offset: -4, debug-info-variable: '', debug-info-expression: '', 104a971bc38SShubham Sandeep Rastogi debug-info-location: '' } 105a971bc38SShubham Sandeep RastogicallSites: [] 106a971bc38SShubham Sandeep RastogidebugValueSubstitutions: [] 107a971bc38SShubham Sandeep Rastogiconstants: [] 108a971bc38SShubham Sandeep RastogimachineFunctionInfo: {} 109a971bc38SShubham Sandeep Rastogibody: | 110a971bc38SShubham Sandeep Rastogi bb.0.entry: 111a971bc38SShubham Sandeep Rastogi DBG_VALUE 13, $noreg, !11, !DIExpression(), debug-location !13 112a971bc38SShubham Sandeep Rastogi %0:gpr = MOVi 13, 14 /* CC::al */, $noreg, $noreg 113a971bc38SShubham Sandeep Rastogi STRi12 killed %0, %stack.0.c, 0, 14 /* CC::al */, $noreg, debug-location !14 :: (volatile store (s32) into %ir.c) 114a971bc38SShubham Sandeep Rastogi ADJCALLSTACKDOWN 0, 0, 14 /* CC::al */, $noreg, implicit-def dead $sp, implicit $sp, debug-location !15 115a971bc38SShubham Sandeep Rastogi BL @_Z4funcv, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $r0, debug-location !15 116a971bc38SShubham Sandeep Rastogi ADJCALLSTACKUP 0, -1, 14 /* CC::al */, $noreg, implicit-def dead $sp, implicit $sp, debug-location !15 117a971bc38SShubham Sandeep Rastogi %1:gpr = COPY $r0, debug-location !15 118a971bc38SShubham Sandeep Rastogi DBG_VALUE %1, $noreg, !11, !DIExpression(), debug-location !13 119a971bc38SShubham Sandeep Rastogi STRi12 %1, %stack.0.c, 0, 14 /* CC::al */, $noreg, debug-location !15 :: (volatile store (s32) into %ir.c) 120a971bc38SShubham Sandeep Rastogi DBG_VALUE %stack.0.c, $noreg, !11, !DIExpression(DW_OP_deref), debug-location !13 121a971bc38SShubham Sandeep Rastogi %2:gpr = LDRi12 %stack.0.c, 0, 14 /* CC::al */, $noreg, debug-location !16 :: (volatile dereferenceable load (s32) from %ir.c) 122a971bc38SShubham Sandeep Rastogi $r0 = COPY %2, debug-location !16 123a971bc38SShubham Sandeep Rastogi BX_RET 14 /* CC::al */, $noreg, implicit $r0, debug-location !16 124a971bc38SShubham Sandeep Rastogi 125a971bc38SShubham Sandeep Rastogi... 126