[cfe-commits] r129669 - in /cfe/trunk/lib/CodeGen: CodeGenTypes.cpp CodeGenTypes.h

Anders Carlsson andersca at mac.com
Sun Apr 17 14:36:59 PDT 2011


Author: andersca
Date: Sun Apr 17 16:36:59 2011
New Revision: 129669

URL: http://llvm.org/viewvc/llvm-project?rev=129669&view=rev
Log:
Move code to add a type name to a TagDecl type out into a helper function. No functionality change.

Modified:
    cfe/trunk/lib/CodeGen/CodeGenTypes.cpp
    cfe/trunk/lib/CodeGen/CodeGenTypes.h

Modified: cfe/trunk/lib/CodeGen/CodeGenTypes.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenTypes.cpp?rev=129669&r1=129668&r2=129669&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CodeGenTypes.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenTypes.cpp Sun Apr 17 16:36:59 2011
@@ -65,6 +65,36 @@
   }
 }
 
+void CodeGenTypes::addTagTypeName(const TagDecl *TD, const llvm::Type *Ty,
+                                  llvm::StringRef suffix) {
+  llvm::SmallString<256> TypeName;
+  llvm::raw_svector_ostream OS(TypeName);
+  OS << TD->getKindName() << '.';
+  
+  // Name the codegen type after the typedef name
+  // if there is no tag type name available
+  if (TD->getIdentifier()) {
+    // FIXME: We should not have to check for a null decl context here.
+    // Right now we do it because the implicit Obj-C decls don't have one.
+    if (TD->getDeclContext())
+      OS << TD->getQualifiedNameAsString();
+    else
+      TD->printName(OS);
+  } else if (const TypedefNameDecl *TDD = TD->getTypedefNameForAnonDecl()) {
+    // FIXME: We should not have to check for a null decl context here.
+    // Right now we do it because the implicit Obj-C decls don't have one.
+    if (TDD->getDeclContext())
+      OS << TDD->getQualifiedNameAsString();
+    else
+      TDD->printName(OS);
+  } else
+    OS << "anon";
+
+  if (!suffix.empty())
+    OS << suffix;
+
+  TheModule.addTypeName(OS.str(), Ty);
+}
 
 /// ConvertType - Convert the specified type to its LLVM form.
 const llvm::Type *CodeGenTypes::ConvertType(QualType T, bool IsRecursive) {
@@ -373,31 +403,8 @@
   case Type::Enum: {
     const TagDecl *TD = cast<TagType>(Ty).getDecl();
     const llvm::Type *Res = ConvertTagDeclType(TD);
-
-    llvm::SmallString<256> TypeName;
-    llvm::raw_svector_ostream OS(TypeName);
-    OS << TD->getKindName() << '.';
-
-    // Name the codegen type after the typedef name
-    // if there is no tag type name available
-    if (TD->getIdentifier()) {
-      // FIXME: We should not have to check for a null decl context here.
-      // Right now we do it because the implicit Obj-C decls don't have one.
-      if (TD->getDeclContext())
-        OS << TD->getQualifiedNameAsString();
-      else
-        TD->printName(OS);
-    } else if (const TypedefNameDecl *TDD = TD->getTypedefNameForAnonDecl()) {
-      // FIXME: We should not have to check for a null decl context here.
-      // Right now we do it because the implicit Obj-C decls don't have one.
-      if (TDD->getDeclContext())
-        OS << TDD->getQualifiedNameAsString();
-      else
-        TDD->printName(OS);
-    } else
-      OS << "anon";
-
-    TheModule.addTypeName(OS.str(), Res);
+    
+    addTagTypeName(TD, Res, llvm::StringRef());
     return Res;
   }
 

Modified: cfe/trunk/lib/CodeGen/CodeGenTypes.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenTypes.h?rev=129669&r1=129668&r2=129669&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CodeGenTypes.h (original)
+++ cfe/trunk/lib/CodeGen/CodeGenTypes.h Sun Apr 17 16:36:59 2011
@@ -101,6 +101,11 @@
   /// used to handle cyclic structures properly.
   void HandleLateResolvedPointers();
 
+  /// addTagTypeName - Compute a name from the given tag decl with an optional
+  /// suffix and name the given LLVM type using it.
+  void addTagTypeName(const TagDecl *TD, const llvm::Type *Ty,
+                      llvm::StringRef suffix);
+
 public:
   CodeGenTypes(ASTContext &Ctx, llvm::Module &M, const llvm::TargetData &TD,
                const ABIInfo &Info, CGCXXABI &CXXABI);





More information about the cfe-commits mailing list