summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGDebugInfo.cpp
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2016-03-24 20:38:43 +0000
committerReid Kleckner <rnk@google.com>2016-03-24 20:38:43 +0000
commit00381aa142c77bcce96f8c587045c8086b2fa27e (patch)
treec7d093b7abbba234ed1f1d473800cddbf75c6c88 /clang/lib/CodeGen/CGDebugInfo.cpp
parentfab31220fe6aa53a0927c09b30a8ddf0fbcc1c9f (diff)
downloadbcm5719-llvm-00381aa142c77bcce96f8c587045c8086b2fa27e.tar.gz
bcm5719-llvm-00381aa142c77bcce96f8c587045c8086b2fa27e.zip
Revert "Recommitted r263425 "Supporting all entities declared in lexical scope in LLVM debug info." After fixing PR26942 (the fix is included in this commit)."
This reverts commit r264281. This change breaks building Chromium for iOS. We'll upload a reproducer to the PR soon. llvm-svn: 264333
Diffstat (limited to 'clang/lib/CodeGen/CGDebugInfo.cpp')
-rw-r--r--clang/lib/CodeGen/CGDebugInfo.cpp41
1 files changed, 7 insertions, 34 deletions
diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp b/clang/lib/CodeGen/CGDebugInfo.cpp
index 6f39b093a46..e300ed538ac 100644
--- a/clang/lib/CodeGen/CGDebugInfo.cpp
+++ b/clang/lib/CodeGen/CGDebugInfo.cpp
@@ -831,18 +831,15 @@ llvm::DIType *CGDebugInfo::CreateType(const TemplateSpecializationType *Ty,
llvm::DIType *CGDebugInfo::CreateType(const TypedefType *Ty,
llvm::DIFile *Unit) {
- TypedefNameDecl *TD = Ty->getDecl();
// We don't set size information, but do specify where the typedef was
// declared.
- SourceLocation Loc = TD->getLocation();
-
- llvm::DIScope *TDContext = getDeclarationLexicalScope(*TD, QualType(Ty, 0));
+ SourceLocation Loc = Ty->getDecl()->getLocation();
// Typedefs are derived from some other type.
return DBuilder.createTypedef(
getOrCreateType(Ty->getDecl()->getUnderlyingType(), Unit),
Ty->getDecl()->getName(), getOrCreateFile(Loc), getLineNumber(Loc),
- TDContext);
+ getDeclContextDescriptor(Ty->getDecl()));
}
llvm::DIType *CGDebugInfo::CreateType(const FunctionType *Ty,
@@ -1475,23 +1472,6 @@ llvm::DIType *CGDebugInfo::getOrCreateStandaloneType(QualType D,
return T;
}
-void CGDebugInfo::recordDeclarationLexicalScope(const Decl &D) {
- assert(LexicalBlockMap.find(&D) == LexicalBlockMap.end() &&
- "D is already mapped to lexical block scope");
- if (!LexicalBlockStack.empty())
- LexicalBlockMap[&D] = LexicalBlockStack.back();
-}
-
-llvm::DIScope *CGDebugInfo::getDeclarationLexicalScope(const Decl &D,
- QualType Ty) {
- auto I = LexicalBlockMap.find(&D);
- if (I != LexicalBlockMap.end()) {
- RetainedTypes.push_back(Ty.getAsOpaquePtr());
- return I->second;
- }
- return getDeclContextDescriptor(cast<Decl>(&D));
-}
-
void CGDebugInfo::completeType(const EnumDecl *ED) {
if (DebugKind <= codegenoptions::DebugLineTablesOnly)
return;
@@ -2077,7 +2057,7 @@ llvm::DIType *CGDebugInfo::CreateEnumType(const EnumType *Ty) {
// entered into the ReplaceMap: finalize() will replace the first
// FwdDecl with the second and then replace the second with
// complete type.
- llvm::DIScope *EDContext = getDeclarationLexicalScope(*ED, QualType(Ty, 0));
+ llvm::DIScope *EDContext = getDeclContextDescriptor(ED);
llvm::DIFile *DefUnit = getOrCreateFile(ED->getLocation());
llvm::TempDIScope TmpContext(DBuilder.createReplaceableCompositeType(
llvm::dwarf::DW_TAG_enumeration_type, "", TheCU, DefUnit, 0));
@@ -2121,7 +2101,7 @@ llvm::DIType *CGDebugInfo::CreateTypeDefinition(const EnumType *Ty) {
llvm::DIFile *DefUnit = getOrCreateFile(ED->getLocation());
unsigned Line = getLineNumber(ED->getLocation());
- llvm::DIScope *EnumContext = getDeclarationLexicalScope(*ED, QualType(Ty, 0));
+ llvm::DIScope *EnumContext = getDeclContextDescriptor(ED);
llvm::DIType *ClassTy =
ED->isFixed() ? getOrCreateType(ED->getIntegerType(), DefUnit) : nullptr;
return DBuilder.createEnumerationType(EnumContext, ED->getName(), DefUnit,
@@ -2382,7 +2362,7 @@ llvm::DICompositeType *CGDebugInfo::CreateLimitedType(const RecordType *Ty) {
unsigned Line = getLineNumber(RD->getLocation());
StringRef RDName = getClassName(RD);
- llvm::DIScope *RDContext = getDeclarationLexicalScope(*RD, QualType(Ty, 0));
+ llvm::DIScope *RDContext = getDeclContextDescriptor(RD);
// If we ended up creating the type during the context chain construction,
// just return that.
@@ -2529,15 +2509,8 @@ void CGDebugInfo::collectVarDeclProps(const VarDecl *VD, llvm::DIFile *&Unit,
if (DC->isRecord())
DC = CGM.getContext().getTranslationUnitDecl();
- if (VD->isStaticLocal()) {
- // Get context for static locals (that are technically globals) the same way
- // we do for "local" locals -- by using current lexical block.
- assert(!LexicalBlockStack.empty() && "Region stack mismatch, stack empty!");
- VDContext = LexicalBlockStack.back();
- } else {
- llvm::DIScope *Mod = getParentModuleOrNull(VD);
- VDContext = getContextDescriptor(cast<Decl>(DC), Mod ? Mod : TheCU);
- }
+ llvm::DIScope *Mod = getParentModuleOrNull(VD);
+ VDContext = getContextDescriptor(cast<Decl>(DC), Mod ? Mod : TheCU);
}
llvm::DISubprogram *
OpenPOWER on IntegriCloud