]> granicus.if.org Git - clang/commitdiff
Emit debug info only if there is an insertion point. The debug info should not force...
authorDevang Patel <dpatel@apple.com>
Fri, 3 Jun 2011 19:21:47 +0000 (19:21 +0000)
committerDevang Patel <dpatel@apple.com>
Fri, 3 Jun 2011 19:21:47 +0000 (19:21 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132576 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGDecl.cpp
lib/CodeGen/CGStmt.cpp

index 9991b302b21a5100e2eeb595332ba98e0e54fe12..048289e5067b19a020a47f312971ec650e0c154c 100644 (file)
@@ -629,15 +629,16 @@ CodeGenFunction::EmitAutoVarAlloca(const VarDecl &D) {
   emission.Address = DeclPtr;
 
   // Emit debug info for local var declaration.
-  if (CGDebugInfo *DI = getDebugInfo()) {
-    assert(HaveInsertPoint() && "Unexpected unreachable point!");
-
-    DI->setLocation(D.getLocation());
-    if (Target.useGlobalsForAutomaticVariables()) {
-      DI->EmitGlobalVariable(static_cast<llvm::GlobalVariable *>(DeclPtr), &D);
-    } else
-      DI->EmitDeclareOfAutoVariable(&D, DeclPtr, Builder);
-  }
+  if (HaveInsertPoint())
+    if (CGDebugInfo *DI = getDebugInfo()) {
+      DI->setLocation(D.getLocation());
+      DI->UpdateLineDirectiveRegion(Builder);
+      DI->EmitStopPoint(Builder);
+      if (Target.useGlobalsForAutomaticVariables()) {
+        DI->EmitGlobalVariable(static_cast<llvm::GlobalVariable *>(DeclPtr), &D);
+      } else
+        DI->EmitDeclareOfAutoVariable(&D, DeclPtr, Builder);
+    }
 
   return emission;
 }
index 995511c615a9b8bf007d74a1e546031fb5b4bbcc..5f660f8858791faf6fe43d284a8c40f19f600cb4 100644 (file)
@@ -771,13 +771,6 @@ void CodeGenFunction::EmitReturnStmt(const ReturnStmt &S) {
 }
 
 void CodeGenFunction::EmitDeclStmt(const DeclStmt &S) {
-  // As long as debug info is modeled with instructions, we have to ensure we
-  // have a place to insert here and write the stop point here.
-  if (getDebugInfo()) {
-    EnsureInsertPoint();
-    EmitStopPoint(&S);
-  }
-
   for (DeclStmt::const_decl_iterator I = S.decl_begin(), E = S.decl_end();
        I != E; ++I)
     EmitDecl(**I);