forked from OSchip/llvm-project
DebugInfo: Don't create duplicate forward declaration metadata unnecessarily.
No functionality change, at best a slight (questionable) optimization, but necessary for correctness of future work. llvm-svn: 188474
This commit is contained in:
parent
0b48e7c6bd
commit
d816e2d3b0
|
@ -602,8 +602,12 @@ llvm::DIType CGDebugInfo::CreateType(const PointerType *Ty,
|
|||
}
|
||||
|
||||
// Creates a forward declaration for a RecordDecl in the given context.
|
||||
llvm::DIType CGDebugInfo::createRecordFwdDecl(const RecordDecl *RD,
|
||||
llvm::DIDescriptor Ctx) {
|
||||
llvm::DICompositeType
|
||||
CGDebugInfo::getOrCreateRecordFwdDecl(const RecordDecl *RD,
|
||||
llvm::DIDescriptor Ctx) {
|
||||
llvm::DICompositeType T(getTypeOrNull(CGM.getContext().getRecordType(RD)));
|
||||
if (T)
|
||||
return T;
|
||||
llvm::DIFile DefUnit = getOrCreateFile(RD->getLocation());
|
||||
unsigned Line = getLineNumber(RD->getLocation());
|
||||
StringRef RDName = getClassName(RD);
|
||||
|
@ -1413,7 +1417,7 @@ llvm::DIType CGDebugInfo::CreateType(const RecordType *Ty, bool Declaration) {
|
|||
// test/CodeGen/debug-info-records.c .
|
||||
llvm::DIDescriptor FDContext =
|
||||
getContextDescriptor(cast<Decl>(RD->getDeclContext()));
|
||||
llvm::DIType RetTy = createRecordFwdDecl(RD, FDContext);
|
||||
llvm::DIType RetTy = getOrCreateRecordFwdDecl(RD, FDContext);
|
||||
TypeCache[QualType(Ty, 0).getAsOpaquePtr()] = RetTy;
|
||||
return RetTy;
|
||||
}
|
||||
|
@ -2175,7 +2179,7 @@ llvm::DIType CGDebugInfo::CreateLimitedType(const RecordType *Ty) {
|
|||
// If this is just a forward declaration, construct an appropriately
|
||||
// marked node and just return it.
|
||||
if (!RD->getDefinition())
|
||||
return createRecordFwdDecl(RD, RDContext);
|
||||
return getOrCreateRecordFwdDecl(RD, RDContext);
|
||||
|
||||
uint64_t Size = CGM.getContext().getTypeSize(Ty);
|
||||
uint64_t Align = CGM.getContext().getTypeAlign(Ty);
|
||||
|
|
|
@ -305,9 +305,9 @@ private:
|
|||
|
||||
llvm::DIScope getCurrentContextDescriptor(const Decl *Decl);
|
||||
|
||||
/// createRecordFwdDecl - Create a forward decl for a RecordType in a given
|
||||
/// context.
|
||||
llvm::DIType createRecordFwdDecl(const RecordDecl *, llvm::DIDescriptor);
|
||||
/// \brief Create a forward decl for a RecordType in a given context.
|
||||
llvm::DICompositeType getOrCreateRecordFwdDecl(const RecordDecl *,
|
||||
llvm::DIDescriptor);
|
||||
|
||||
/// createContextChain - Create a set of decls for the context chain.
|
||||
llvm::DIDescriptor createContextChain(const Decl *Decl);
|
||||
|
|
Loading…
Reference in New Issue