diff options
| author | David Blaikie <dblaikie@gmail.com> | 2014-05-06 17:02:15 +0000 |
|---|---|---|
| committer | David Blaikie <dblaikie@gmail.com> | 2014-05-06 17:02:15 +0000 |
| commit | 29020cc571d564976555ec0eef26b53fc0590a6b (patch) | |
| tree | c987026ac011c60f1fb8724e461a7d8bed367311 /clang/lib | |
| parent | e914bc8d46d08ba6822a93b512266a4e17e76129 (diff) | |
| download | bcm5719-llvm-29020cc571d564976555ec0eef26b53fc0590a6b.tar.gz bcm5719-llvm-29020cc571d564976555ec0eef26b53fc0590a6b.zip | |
Revert "DebugInfo: Emit the definition of enums when the definition preceeds the declaration and initial use."
This is breaking the compiler-rt build. Reverting while I
investigate/fix.
This reverts commit r208065.
llvm-svn: 208106
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/CodeGen/CGDebugInfo.cpp | 29 | ||||
| -rw-r--r-- | clang/lib/CodeGen/CGDebugInfo.h | 2 | ||||
| -rw-r--r-- | clang/lib/CodeGen/CodeGenTypes.cpp | 4 |
3 files changed, 0 insertions, 35 deletions
diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp b/clang/lib/CodeGen/CGDebugInfo.cpp index f88ac393f94..cd966a0e7fa 100644 --- a/clang/lib/CodeGen/CGDebugInfo.cpp +++ b/clang/lib/CodeGen/CGDebugInfo.cpp @@ -1427,21 +1427,6 @@ llvm::DIType CGDebugInfo::getOrCreateInterfaceType(QualType D, return T; } -void CGDebugInfo::completeType(const EnumDecl *ED) { - if (DebugKind <= CodeGenOptions::DebugLineTablesOnly) - return; - QualType Ty = CGM.getContext().getEnumType(ED); - void* TyPtr = Ty.getAsOpaquePtr(); - auto I = TypeCache.find(TyPtr); - if (I != TypeCache.end() && - !llvm::DIType(cast<llvm::MDNode>(static_cast<llvm::Value *>(I->second))) - .isForwardDecl()) - return; - llvm::DIType Res = CreateTypeDefinition(Ty->castAs<EnumType>()); - assert(!Res.isForwardDecl()); - TypeCache[TyPtr] = Res; -} - void CGDebugInfo::completeType(const RecordDecl *RD) { if (DebugKind > CodeGenOptions::LimitedDebugInfo || !CGM.getLangOpts().CPlusPlus) @@ -1930,20 +1915,6 @@ llvm::DIType CGDebugInfo::CreateEnumType(const EnumType *Ty) { return RetTy; } - return CreateTypeDefinition(Ty); -} - -llvm::DIType CGDebugInfo::CreateTypeDefinition(const EnumType *Ty) { - const EnumDecl *ED = Ty->getDecl(); - uint64_t Size = 0; - uint64_t Align = 0; - if (!ED->getTypeForDecl()->isIncompleteType()) { - Size = CGM.getContext().getTypeSize(ED->getTypeForDecl()); - Align = CGM.getContext().getTypeAlign(ED->getTypeForDecl()); - } - - SmallString<256> FullName = getUniqueTagTypeName(Ty, CGM, TheCU); - // Create DIEnumerator elements for each enumerator. SmallVector<llvm::Value *, 16> Enumerators; ED = ED->getDefinition(); diff --git a/clang/lib/CodeGen/CGDebugInfo.h b/clang/lib/CodeGen/CGDebugInfo.h index f7640bc28dd..700e3358dea 100644 --- a/clang/lib/CodeGen/CGDebugInfo.h +++ b/clang/lib/CodeGen/CGDebugInfo.h @@ -135,7 +135,6 @@ class CGDebugInfo { llvm::DIType CreateType(const MemberPointerType *Ty, llvm::DIFile F); llvm::DIType CreateType(const AtomicType *Ty, llvm::DIFile F); llvm::DIType CreateEnumType(const EnumType *Ty); - llvm::DIType CreateTypeDefinition(const EnumType *Ty); llvm::DIType CreateSelfType(const QualType &QualTy, llvm::DIType Ty); llvm::DIType getTypeOrNull(const QualType); llvm::DICompositeType getOrCreateMethodType(const CXXMethodDecl *Method, @@ -296,7 +295,6 @@ public: llvm::DIType getOrCreateInterfaceType(QualType Ty, SourceLocation Loc); - void completeType(const EnumDecl *ED); void completeType(const RecordDecl *RD); void completeRequiredType(const RecordDecl *RD); void completeClassData(const RecordDecl *RD); diff --git a/clang/lib/CodeGen/CodeGenTypes.cpp b/clang/lib/CodeGen/CodeGenTypes.cpp index 9be633c1c95..b7f37462a64 100644 --- a/clang/lib/CodeGen/CodeGenTypes.cpp +++ b/clang/lib/CodeGen/CodeGenTypes.cpp @@ -242,10 +242,6 @@ void CodeGenTypes::UpdateCompletedType(const TagDecl *TD) { if (!ConvertType(ED->getIntegerType())->isIntegerTy(32)) TypeCache.clear(); } - // If necessary, provide the full definition of a type only used with a - // declaration so far. - if (CGDebugInfo *DI = CGM.getModuleDebugInfo()) - DI->completeType(ED); return; } |

