Disable the new unknown-location code for now. It causes a major
authorDan Gohman <gohman@apple.com>
Fri, 7 May 2010 01:08:53 +0000 (01:08 +0000)
committerDan Gohman <gohman@apple.com>
Fri, 7 May 2010 01:08:53 +0000 (01:08 +0000)
increase in the debug line info section, and it's causing
regressions in a gdb testsuite.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103226 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/AsmPrinter/DwarfDebug.cpp
test/CodeGen/X86/unknown-location.ll

index 4dc53059c1ad639ea2984b2f6b7dd6afcc84d233..961b76e77e9c8361ff85eba4fe52502ac3e5a36c 100644 (file)
@@ -47,6 +47,10 @@ static cl::opt<bool> PrintDbgScope("print-dbgscope", cl::Hidden,
 static cl::opt<bool> DisableDebugInfoPrinting("disable-debug-info-print", cl::Hidden,
      cl::desc("Disable debug info printing"));
 
+static cl::opt<bool> UnknownLocations("use-unknown-locations", cl::Hidden,
+     cl::desc("Make an absense of debug location information explicit."),
+     cl::init(false));
+
 namespace {
   const char *DWARFGroupName = "DWARF Emission";
   const char *DbgTimerName = "DWARF Debug Writer";
@@ -2151,21 +2155,23 @@ void DwarfDebug::beginScope(const MachineInstr *MI) {
   // Check location.
   DebugLoc DL = MI->getDebugLoc();
   if (DL.isUnknown()) {
-    // This instruction has no debug location. If the preceding instruction
-    // did, emit debug location information to indicate that the debug
-    // location is now unknown.
-    MCSymbol *Label = NULL;
-    if (DL == PrevInstLoc)
-      Label = PrevLabel;
-    else {
-      Label = recordSourceLine(DL.getLine(), DL.getCol(), 0);
-      PrevInstLoc = DL;
-      PrevLabel = Label;
-    }
+    if (UnknownLocations) {
+      // This instruction has no debug location. If the preceding instruction
+      // did, emit debug location information to indicate that the debug
+      // location is now unknown.
+      MCSymbol *Label = NULL;
+      if (DL == PrevInstLoc)
+        Label = PrevLabel;
+      else {
+        Label = recordSourceLine(DL.getLine(), DL.getCol(), 0);
+        PrevInstLoc = DL;
+        PrevLabel = Label;
+      }
 
-    // If this instruction begins a scope then note down corresponding label.
-    if (InsnsBeginScopeSet.count(MI) != 0)
-      LabelsBeforeInsn[MI] = Label;
+      // If this instruction begins a scope then note down corresponding label.
+      if (InsnsBeginScopeSet.count(MI) != 0)
+        LabelsBeforeInsn[MI] = Label;
+    }
 
     return;
   }
index 80385233a188e3068ce19d1443b6a25235ae0261..fa98b781e4ea49b1e910a3a483dd1de9433dc82e 100644 (file)
@@ -1,4 +1,4 @@
-; RUN: llc < %s -asm-verbose=false -march=x86-64 | FileCheck %s
+; RUN: llc < %s -asm-verbose=false -march=x86-64 -use-unknown-locations | FileCheck %s
 
 ; The divide instruction does not have a debug location. CodeGen should
 ; represent this in the debug information. This is checked by a check