diff options
author | Devang Patel <dpatel@apple.com> | 2011-06-03 19:21:47 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2011-06-03 19:21:47 +0000 |
commit | c594abdb78b67d477c9bdd24c3600aec3dc2eda4 (patch) | |
tree | b54cb1825b72f548c56469b4686ed4eaeb4fbea3 | |
parent | 8fd7722fce4e4f9549897699ec3a4c752613b214 (diff) |
Emit debug info only if there is an insertion point. The debug info should not force an insertion point. Codegen may later on decide to not emit code for some reason, see extensive comment in CodeGenFunction::EmitStmt(), and debug info should not get in the way.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132576 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/CodeGen/CGDecl.cpp | 19 | ||||
-rw-r--r-- | lib/CodeGen/CGStmt.cpp | 7 |
2 files changed, 10 insertions, 16 deletions
diff --git a/lib/CodeGen/CGDecl.cpp b/lib/CodeGen/CGDecl.cpp index 9991b302b2..048289e506 100644 --- a/lib/CodeGen/CGDecl.cpp +++ b/lib/CodeGen/CGDecl.cpp @@ -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; } diff --git a/lib/CodeGen/CGStmt.cpp b/lib/CodeGen/CGStmt.cpp index 995511c615..5f660f8858 100644 --- a/lib/CodeGen/CGStmt.cpp +++ b/lib/CodeGen/CGStmt.cpp @@ -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); |