diff options
| author | David Blaikie <dblaikie@gmail.com> | 2013-08-12 22:24:20 +0000 |
|---|---|---|
| committer | David Blaikie <dblaikie@gmail.com> | 2013-08-12 22:24:20 +0000 |
| commit | 4a2b5ef603b23029d8190faf85c5d6c7a4b41158 (patch) | |
| tree | a05e7b091d484b2e4ac57bd7372077968889cc1d /clang | |
| parent | f3cf49fb159efaeafd570ec573332874674420e2 (diff) | |
| download | bcm5719-llvm-4a2b5ef603b23029d8190faf85c5d6c7a4b41158.tar.gz bcm5719-llvm-4a2b5ef603b23029d8190faf85c5d6c7a4b41158.zip | |
DebugInfo: simplify some limited/declaration creation APIs
llvm-svn: 188214
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/CodeGen/CGDebugInfo.cpp | 46 | ||||
| -rw-r--r-- | clang/lib/CodeGen/CGDebugInfo.h | 6 |
2 files changed, 11 insertions, 41 deletions
diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp b/clang/lib/CodeGen/CGDebugInfo.cpp index c47543cc6da..e8f41bdf1f3 100644 --- a/clang/lib/CodeGen/CGDebugInfo.cpp +++ b/clang/lib/CodeGen/CGDebugInfo.cpp @@ -642,9 +642,8 @@ llvm::DIDescriptor CGDebugInfo::createContextChain(const Decl *Context) { if (const RecordDecl *RD = dyn_cast<RecordDecl>(Context)) { if (!RD->isDependentType()) { - llvm::DIType Ty = - getOrCreateLimitedType(CGM.getContext().getTypeDeclType(RD), - getOrCreateMainFile()); + llvm::DIType Ty = getOrCreateLimitedType( + CGM.getContext().getRecordType(RD)->castAs<RecordType>(), getOrCreateMainFile()); return llvm::DIDescriptor(Ty); } } @@ -1438,8 +1437,7 @@ llvm::DIType CGDebugInfo::CreateType(const RecordType *Ty, bool Declaration) { // may refer to the forward decl if the struct is recursive) and replace all // uses of the forward declaration with the final definition. - llvm::DICompositeType FwdDecl( - getOrCreateLimitedType(QualType(Ty, 0), DefUnit)); + llvm::DICompositeType FwdDecl(getOrCreateLimitedType(Ty, DefUnit)); assert(FwdDecl.isCompositeType() && "The debug type of a RecordType should be a llvm::DICompositeType"); @@ -2150,15 +2148,11 @@ llvm::DIType CGDebugInfo::CreateTypeNode(QualType Ty, llvm::DIFile Unit, /// getOrCreateLimitedType - Get the type from the cache or create a new /// limited type if necessary. -llvm::DIType CGDebugInfo::getOrCreateLimitedType(QualType Ty, +llvm::DIType CGDebugInfo::getOrCreateLimitedType(const RecordType *Ty, llvm::DIFile Unit) { - if (Ty.isNull()) - return llvm::DIType(); - - // Unwrap the type as needed for debug information. - Ty = UnwrapTypeForDebugInfo(Ty, CGM.getContext()); + QualType QTy(Ty, 0); - llvm::DIType T = getTypeOrNull(Ty); + llvm::DIType T = getTypeOrNull(QTy); // We may have cached a forward decl when we could have created // a non-forward decl. Go ahead and create a non-forward decl @@ -2166,14 +2160,14 @@ llvm::DIType CGDebugInfo::getOrCreateLimitedType(QualType Ty, if (T && !T.isForwardDecl()) return T; // Otherwise create the type. - llvm::DIType Res = CreateLimitedTypeNode(Ty, Unit); + llvm::DIType Res = CreateLimitedType(Ty); if (T && T.isForwardDecl()) - ReplaceMap.push_back(std::make_pair(Ty.getAsOpaquePtr(), - static_cast<llvm::Value*>(T))); + ReplaceMap.push_back( + std::make_pair(QTy.getAsOpaquePtr(), static_cast<llvm::Value *>(T))); // And update the type cache. - TypeCache[Ty.getAsOpaquePtr()] = Res; + TypeCache[QTy.getAsOpaquePtr()] = Res; return Res; } @@ -2247,26 +2241,6 @@ llvm::DIType CGDebugInfo::CreateLimitedType(const RecordType *Ty) { return llvm::DIType(RealDecl); } -/// CreateLimitedTypeNode - Create a new debug type node, but only forward -/// declare composite types that haven't been processed yet. -llvm::DIType CGDebugInfo::CreateLimitedTypeNode(QualType Ty,llvm::DIFile Unit) { - - // Work out details of type. - switch (Ty->getTypeClass()) { -#define TYPE(Class, Base) -#define ABSTRACT_TYPE(Class, Base) -#define NON_CANONICAL_TYPE(Class, Base) -#define DEPENDENT_TYPE(Class, Base) case Type::Class: - #include "clang/AST/TypeNodes.def" - llvm_unreachable("Dependent types cannot show up in debug information"); - - case Type::Record: - return CreateLimitedType(cast<RecordType>(Ty)); - default: - return CreateTypeNode(Ty, Unit, false); - } -} - /// CreateMemberType - Create new member and increase Offset by FType's size. llvm::DIType CGDebugInfo::CreateMemberType(llvm::DIFile Unit, QualType FType, StringRef Name, diff --git a/clang/lib/CodeGen/CGDebugInfo.h b/clang/lib/CodeGen/CGDebugInfo.h index 37b4bfc5cb6..68cc690216b 100644 --- a/clang/lib/CodeGen/CGDebugInfo.h +++ b/clang/lib/CodeGen/CGDebugInfo.h @@ -331,7 +331,7 @@ private: /// getOrCreateLimitedType - Get the type from the cache or create a new /// partial type if necessary. - llvm::DIType getOrCreateLimitedType(QualType Ty, llvm::DIFile F); + llvm::DIType getOrCreateLimitedType(const RecordType *Ty, llvm::DIFile F); /// CreateTypeNode - Create type metadata for a source language type. llvm::DIType CreateTypeNode(QualType Ty, llvm::DIFile F, bool Declaration); @@ -340,10 +340,6 @@ private: /// if Ty is an ObjCInterface or a pointer to one. ObjCInterfaceDecl* getObjCInterfaceDecl(QualType Ty); - /// CreateLimitedTypeNode - Create type metadata for a source language - /// type, but only partial types for records. - llvm::DIType CreateLimitedTypeNode(QualType Ty, llvm::DIFile F); - /// CreateMemberType - Create new member and increase Offset by FType's size. llvm::DIType CreateMemberType(llvm::DIFile Unit, QualType FType, StringRef Name, uint64_t *Offset); |

