From d3526eab46b96509d3195cf3367811af67b6d2c7 Mon Sep 17 00:00:00 2001 From: Devang Patel Date: Tue, 15 Feb 2011 17:56:09 +0000 Subject: [PATCH] Ignore DBG_VALUE machine instructions while constructing instruction ranges based on location info. Machine instruction range consisting of only DBG_VALUE MIs only contributes consecutive labels in assembly output, which is harmless, and empty scope entry in DebugInfo, which confuses debugger tools. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125577 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 4 ++++ test/CodeGen/X86/dbg-value-range.ll | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 0ecb3dfd196..3c284bfd91e 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -2708,6 +2708,10 @@ bool DwarfDebug::extractScopeInformation() { continue; } + // Ignore DBG_VALUE. It does not contribute any instruction in output. + if (MInsn->isDebugValue()) + continue; + if (RangeBeginMI) { // If we have alread seen a beginning of a instruction range and // current instruction scope does not match scope of first instruction diff --git a/test/CodeGen/X86/dbg-value-range.ll b/test/CodeGen/X86/dbg-value-range.ll index ff7f8c64214..2985224d9db 100644 --- a/test/CodeGen/X86/dbg-value-range.ll +++ b/test/CodeGen/X86/dbg-value-range.ll @@ -44,12 +44,12 @@ declare void @llvm.dbg.value(metadata, i64, metadata) nounwind readnone ; check that variable bar:b value range is appropriately trucated in debug info. Here Ltmp5 is end of ; location range. -;CHECK:Ltmp7 +;CHECK:Ltmp6 ;CHECK-NEXT: DEBUG_VALUE: bar:b <- undef ;CHECK:Ldebug_loc0: ;CHECK-NEXT: .quad Ltmp -;CHECK-NEXT: .quad Ltmp7 +;CHECK-NEXT: .quad Ltmp6 ;CHECK-NEXT: .short 1 ;CHECK-NEXT: .byte 85 ;CHECK-NEXT: .quad 0