diff options
author | Amjad Aboud <amjad.aboud@intel.com> | 2016-02-23 13:37:18 +0000 |
---|---|---|
committer | Amjad Aboud <amjad.aboud@intel.com> | 2016-02-23 13:37:18 +0000 |
commit | 30e7a8f694a19553f64b3a3a5de81ce317b9ec2f (patch) | |
tree | 2aebeb9b2230ca22f960ade5a34ddc4c64d81e8b /clang/lib/CodeGen/CGDecl.cpp | |
parent | fc8f296782caf06e71fc7b1ed215173a388f3b77 (diff) | |
download | llvm-30e7a8f694a19553f64b3a3a5de81ce317b9ec2f.zip llvm-30e7a8f694a19553f64b3a3a5de81ce317b9ec2f.tar.gz llvm-30e7a8f694a19553f64b3a3a5de81ce317b9ec2f.tar.bz2 |
Supporting all entities declared in lexical scope in LLVM debug info.
Differential Revision: http://reviews.llvm.org/D15977
llvm-svn: 261634
Diffstat (limited to 'clang/lib/CodeGen/CGDecl.cpp')
-rw-r--r-- | clang/lib/CodeGen/CGDecl.cpp | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/clang/lib/CodeGen/CGDecl.cpp b/clang/lib/CodeGen/CGDecl.cpp index 5b88ef1..809012b 100644 --- a/clang/lib/CodeGen/CGDecl.cpp +++ b/clang/lib/CodeGen/CGDecl.cpp @@ -83,11 +83,7 @@ void CodeGenFunction::EmitDecl(const Decl &D) { case Decl::UsingShadow: case Decl::ObjCTypeParam: llvm_unreachable("Declaration should not be in declstmts!"); - case Decl::Function: // void X(); - case Decl::Record: // struct/union/class X; - case Decl::Enum: // enum X; - case Decl::EnumConstant: // enum ? { X = ? } - case Decl::CXXRecord: // struct/union/class X; [C++] + case Decl::Function: // void X(); case Decl::StaticAssert: // static_assert(X, ""); [C++0x] case Decl::Label: // __label__ x; case Decl::Import: @@ -97,13 +93,21 @@ void CodeGenFunction::EmitDecl(const Decl &D) { // None of these decls require codegen support. return; + case Decl::Record: // struct/union/class X; + case Decl::Enum: // enum X; + case Decl::EnumConstant: // enum ? { X = ? } + case Decl::CXXRecord: // struct/union/class X; [C++] + if (CGDebugInfo *DI = getDebugInfo()) + DI->recordDeclarationLexicalScope(D); + return; + case Decl::NamespaceAlias: if (CGDebugInfo *DI = getDebugInfo()) - DI->EmitNamespaceAlias(cast<NamespaceAliasDecl>(D)); + DI->EmitNamespaceAlias(cast<NamespaceAliasDecl>(D)); return; case Decl::Using: // using X; [C++] if (CGDebugInfo *DI = getDebugInfo()) - DI->EmitUsingDecl(cast<UsingDecl>(D)); + DI->EmitUsingDecl(cast<UsingDecl>(D)); return; case Decl::UsingDirective: // using namespace X; [C++] if (CGDebugInfo *DI = getDebugInfo()) @@ -121,6 +125,9 @@ void CodeGenFunction::EmitDecl(const Decl &D) { const TypedefNameDecl &TD = cast<TypedefNameDecl>(D); QualType Ty = TD.getUnderlyingType(); + if (CGDebugInfo *DI = getDebugInfo()) + DI->recordDeclarationLexicalScope(D); + if (Ty->isVariablyModifiedType()) EmitVariablyModifiedType(Ty); } |