From: Chris Lattner Date: Wed, 6 Feb 2008 06:06:49 +0000 (+0000) Subject: now that ConvertTagDeclType is nice and simple, use it from UpdateCompletedType. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8fb1dd005f4cb530bca11d622362d39727294420;p=clang now that ConvertTagDeclType is nice and simple, use it from UpdateCompletedType. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46809 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/CodeGen/CodeGenTypes.cpp b/CodeGen/CodeGenTypes.cpp index 24a18334cd..3f5449056a 100644 --- a/CodeGen/CodeGenTypes.cpp +++ b/CodeGen/CodeGenTypes.cpp @@ -139,13 +139,11 @@ void CodeGenTypes::UpdateCompletedType(const TagDecl *TD) { // Remove it from TagDeclTypes so that it will be regenerated. TagDeclTypes.erase(TDTI); - QualType NewTy = Context.getTagDeclType(const_cast(TD)); - const llvm::Type *NT = ConvertNewType(NewTy); + // Generate the new type. + const llvm::Type *NT = ConvertTagDeclType(TD); - // If getting the type didn't itself refine it, refine it to its actual type - // now. - if (llvm::OpaqueType *OT = dyn_cast(OpaqueHolder.get())) - OT->refineAbstractTypeTo(NT); + // Refine the old opaque type to its new definition. + cast(OpaqueHolder.get())->refineAbstractTypeTo(NT); } @@ -279,7 +277,7 @@ const llvm::Type *CodeGenTypes::ConvertNewType(QualType T) { case Type::Tagged: { const TagDecl *TD = cast(Ty).getDecl(); - const llvm::Type *Res = ConvertTagDeclType(T, TD); + const llvm::Type *Res = ConvertTagDeclType(TD); std::string TypeName(TD->getKindName()); TypeName += '.'; @@ -316,8 +314,7 @@ void CodeGenTypes::DecodeArgumentTypes(const FunctionTypeProto &FTP, /// ConvertTagDeclType - Lay out a tagged decl type like struct or union or /// enum. -const llvm::Type *CodeGenTypes::ConvertTagDeclType(QualType T, - const TagDecl *TD) { +const llvm::Type *CodeGenTypes::ConvertTagDeclType(const TagDecl *TD) { llvm::DenseMap::iterator TDTI = TagDeclTypes.find(TD); diff --git a/CodeGen/CodeGenTypes.h b/CodeGen/CodeGenTypes.h index e68d97b1d7..96187d81d6 100644 --- a/CodeGen/CodeGenTypes.h +++ b/CodeGen/CodeGenTypes.h @@ -156,7 +156,7 @@ public: // These are internal details of CGT that shouldn't be used externally. /// ConvertTagDeclType - Lay out a tagged decl type like struct or union or /// enum. - const llvm::Type *ConvertTagDeclType(QualType T, const TagDecl *TD); + const llvm::Type *ConvertTagDeclType(const TagDecl *TD); }; } // end namespace CodeGen