In r189521. Thanks, Manman
On Wed, Aug 28, 2013 at 2:31 PM, David Blaikie <[email protected]> wrote: > On Wed, Aug 28, 2013 at 2:20 PM, Manman Ren <[email protected]> wrote: > > Author: mren > > Date: Wed Aug 28 16:20:28 2013 > > New Revision: 189519 > > > > URL: http://llvm.org/viewvc/llvm-project?rev=189519&view=rev > > Log: > > Debug Info: update interface for CreateEnumType and > getOrCreateRecordFwdDecl. > > > > Both functions will take a Type pointer instead of a Decl pointer. This > helps > > with follow-up type uniquing patches, which need the Type pointer to call > > CXX mangler to generate unique identifiers. > > > > No functionality change. > > > > Modified: > > cfe/trunk/lib/CodeGen/CGDebugInfo.cpp > > cfe/trunk/lib/CodeGen/CGDebugInfo.h > > > > Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp > > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=189519&r1=189518&r2=189519&view=diff > > > ============================================================================== > > --- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original) > > +++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Wed Aug 28 16:20:28 2013 > > @@ -601,8 +601,9 @@ llvm::DIType CGDebugInfo::CreateType(con > > > > // Creates a forward declaration for a RecordDecl in the given context. > > llvm::DICompositeType > > -CGDebugInfo::getOrCreateRecordFwdDecl(const RecordDecl *RD, > > +CGDebugInfo::getOrCreateRecordFwdDecl(const RecordType *Ty, > > llvm::DIDescriptor Ctx) { > > + const RecordDecl *RD = Ty->getDecl(); > > if (llvm::DIType T = > getTypeOrNull(CGM.getContext().getRecordType(RD))) > > return llvm::DICompositeType(T); > > llvm::DIFile DefUnit = getOrCreateFile(RD->getLocation()); > > @@ -1472,7 +1473,7 @@ llvm::DIType CGDebugInfo::CreateType(con > > (CXXDecl && CXXDecl->hasDefinition() && > CXXDecl->isDynamicClass())) { > > llvm::DIDescriptor FDContext = > > getContextDescriptor(cast<Decl>(RD->getDeclContext())); > > - llvm::DIType RetTy = getOrCreateRecordFwdDecl(RD, FDContext); > > + llvm::DIType RetTy = getOrCreateRecordFwdDecl(Ty, FDContext); > > // FIXME: This is conservatively correct. If we return a > non-forward decl > > // that's not a full definition (such as those created by > > // createContextChain) then getOrCreateType will record is as a > complete > > @@ -1861,7 +1862,8 @@ llvm::DIType CGDebugInfo::CreateType(con > > } > > > > /// CreateEnumType - get enumeration type. > > -llvm::DIType CGDebugInfo::CreateEnumType(const EnumDecl *ED) { > > +llvm::DIType CGDebugInfo::CreateEnumType(const EnumType* Ty) { > > '*' to the right, please > > > + const EnumDecl *ED = Ty->getDecl(); > > uint64_t Size = 0; > > uint64_t Align = 0; > > if (!ED->getTypeForDecl()->isIncompleteType()) { > > @@ -2144,7 +2146,7 @@ llvm::DIType CGDebugInfo::CreateTypeNode > > case Type::Record: > > return CreateType(cast<RecordType>(Ty)); > > case Type::Enum: > > - return CreateEnumType(cast<EnumType>(Ty)->getDecl()); > > + return CreateEnumType(cast<EnumType>(Ty)); > > case Type::FunctionProto: > > case Type::FunctionNoProto: > > return CreateType(cast<FunctionType>(Ty), Unit); > > @@ -2249,7 +2251,7 @@ llvm::DICompositeType CGDebugInfo::Creat > > // If this is just a forward declaration, construct an appropriately > > // marked node and just return it. > > if (!RD->getDefinition()) > > - return getOrCreateRecordFwdDecl(RD, RDContext); > > + return getOrCreateRecordFwdDecl(Ty, RDContext); > > > > uint64_t Size = CGM.getContext().getTypeSize(Ty); > > uint64_t Align = CGM.getContext().getTypeAlign(Ty); > > > > Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.h > > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.h?rev=189519&r1=189518&r2=189519&view=diff > > > ============================================================================== > > --- cfe/trunk/lib/CodeGen/CGDebugInfo.h (original) > > +++ cfe/trunk/lib/CodeGen/CGDebugInfo.h Wed Aug 28 16:20:28 2013 > > @@ -126,7 +126,7 @@ class CGDebugInfo { > > llvm::DIType CreateType(const RValueReferenceType *Ty, llvm::DIFile > Unit); > > llvm::DIType CreateType(const MemberPointerType *Ty, llvm::DIFile F); > > llvm::DIType CreateType(const AtomicType *Ty, llvm::DIFile F); > > - llvm::DIType CreateEnumType(const EnumDecl *ED); > > + llvm::DIType CreateEnumType(const EnumType *Ty); > > llvm::DIType CreateSelfType(const QualType &QualTy, llvm::DIType Ty); > > llvm::DIType getTypeOrNull(const QualType); > > llvm::DIType getCompletedTypeOrNull(const QualType); > > @@ -309,7 +309,7 @@ private: > > llvm::DIScope getCurrentContextDescriptor(const Decl *Decl); > > > > /// \brief Create a forward decl for a RecordType in a given context. > > - llvm::DICompositeType getOrCreateRecordFwdDecl(const RecordDecl *, > > + llvm::DICompositeType getOrCreateRecordFwdDecl(const RecordType *, > > llvm::DIDescriptor); > > > > /// createContextChain - Create a set of decls for the context chain. > > > > > > _______________________________________________ > > cfe-commits mailing list > > [email protected] > > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
