]> granicus.if.org Git - clang/commitdiff
now that ConvertTagDeclType is nice and simple, use it from UpdateCompletedType.
authorChris Lattner <sabre@nondot.org>
Wed, 6 Feb 2008 06:06:49 +0000 (06:06 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 6 Feb 2008 06:06:49 +0000 (06:06 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46809 91177308-0d34-0410-b5e6-96231b3b80d8

CodeGen/CodeGenTypes.cpp
CodeGen/CodeGenTypes.h

index 24a18334cd23b3d37ae0630b228d52c8981316ac..3f5449056a7b423fad69a417d7d1259db38f4924 100644 (file)
@@ -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<TagDecl*>(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<llvm::OpaqueType>(OpaqueHolder.get()))
-    OT->refineAbstractTypeTo(NT);
+  // Refine the old opaque type to its new definition.
+  cast<llvm::OpaqueType>(OpaqueHolder.get())->refineAbstractTypeTo(NT);
 }
 
 
@@ -279,7 +277,7 @@ const llvm::Type *CodeGenTypes::ConvertNewType(QualType T) {
 
   case Type::Tagged: {
     const TagDecl *TD = cast<TagType>(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<const TagDecl*, llvm::PATypeHolder>::iterator TDTI = 
     TagDeclTypes.find(TD);
   
index e68d97b1d7fd1c0a1bb73b4e45da3300d004d8eb..96187d81d6df816881e59652f7021a5d1da69bf3 100644 (file)
@@ -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