[llvm-commits] [llvm] r96445 - in /llvm/trunk: lib/CodeGen/AsmPrinter/DwarfDebug.cpp test/FrontendC/2010-02-16-DbgVarScope.c

Devang Patel dpatel at apple.com
Tue Feb 16 18:20:35 PST 2010


Author: dpatel
Date: Tue Feb 16 20:20:34 2010
New Revision: 96445

URL: http://llvm.org/viewvc/llvm-project?rev=96445&view=rev
Log:
Before setting scope end marker, pay attention to scope begin marker and existing scope end marker, if any. Scope must begin before it ends and nested inlined scope do not truncate surrounding scope.


Added:
    llvm/trunk/test/FrontendC/2010-02-16-DbgVarScope.c
Modified:
    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp

Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp?rev=96445&r1=96444&r2=96445&view=diff

==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp Tue Feb 16 20:20:34 2010
@@ -238,7 +238,18 @@
         LIndex = DSI;
       }
     }
-    setLastInsn(LastInsn);
+
+    unsigned CurrentLastInsnIndex = 0;
+    if (const MachineInstr *CL = getLastInsn()) 
+      CurrentLastInsnIndex = MIIndexMap[CL];
+    unsigned FIndex = MIIndexMap[getFirstInsn()];
+
+    // Set LastInsn as the last instruction for this scope only if
+    // it follows 
+    //  1) this scope's first instruction and
+    //  2) current last instruction for this scope, if any.
+    if (LIndex >= CurrentLastInsnIndex && LIndex >= FIndex)
+      setLastInsn(LastInsn);
   }
 
 #ifndef NDEBUG

Added: llvm/trunk/test/FrontendC/2010-02-16-DbgVarScope.c
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/FrontendC/2010-02-16-DbgVarScope.c?rev=96445&view=auto

==============================================================================
--- llvm/trunk/test/FrontendC/2010-02-16-DbgVarScope.c (added)
+++ llvm/trunk/test/FrontendC/2010-02-16-DbgVarScope.c Tue Feb 16 20:20:34 2010
@@ -0,0 +1,30 @@
+// RUN: %llvmgcc -S -O0 -g %s -o - | \
+// RUN:    llc --disable-fp-elim -o %t.s -O0 -relocation-model=pic
+// RUN: %compile_c %t.s -o %t.o
+// RUN: %link %t.o -o %t.exe
+// RUN: echo {break 24\nrun\np loc\n} > %t.in 
+// RN: gdb -q -batch -n -x %t.in %t.exe | tee %t.out | \
+// RN:   grep {$1 = 1}
+
+int g1 = 1;
+int g2 = 2;
+
+int  __attribute__((always_inline)) bar() {
+  return g2 - g1; 
+}
+void foobar() {}
+
+void foo(int s) {
+  unsigned loc = 0;
+  if (s) {
+    loc = 1;
+    foobar();
+  } else {
+    loc = bar();
+    foobar();
+  }
+}
+
+int main() {
+	foo(0);
+}





More information about the llvm-commits mailing list