diff --git a/lib/CodeGen/CodeGenTypes.cpp b/lib/CodeGen/CodeGenTypes.cpp
index f802b07..255d12f 100644
--- a/lib/CodeGen/CodeGenTypes.cpp
+++ b/lib/CodeGen/CodeGenTypes.cpp
@@ -65,22 +65,22 @@
   }
 }
 
-void CodeGenTypes::addTagTypeName(const TagDecl *TD, const llvm::Type *Ty,
-                                  llvm::StringRef suffix) {
+void CodeGenTypes::addRecordTypeName(const RecordDecl *RD, const llvm::Type *Ty,
+                                     llvm::StringRef suffix) {
   llvm::SmallString<256> TypeName;
   llvm::raw_svector_ostream OS(TypeName);
-  OS << TD->getKindName() << '.';
+  OS << RD->getKindName() << '.';
   
   // Name the codegen type after the typedef name
   // if there is no tag type name available
-  if (TD->getIdentifier()) {
+  if (RD->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();
+    if (RD->getDeclContext())
+      OS << RD->getQualifiedNameAsString();
     else
-      TD->printName(OS);
-  } else if (const TypedefNameDecl *TDD = TD->getTypedefNameForAnonDecl()) {
+      RD->printName(OS);
+  } else if (const TypedefNameDecl *TDD = RD->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())
@@ -403,8 +403,9 @@
   case Type::Enum: {
     const TagDecl *TD = cast<TagType>(Ty).getDecl();
     const llvm::Type *Res = ConvertTagDeclType(TD);
-    
-    addTagTypeName(TD, Res, llvm::StringRef());
+
+    if (const RecordDecl *RD = dyn_cast<RecordDecl>(TD))
+      addRecordTypeName(RD, Res, llvm::StringRef());
     return Res;
   }
 
@@ -517,7 +518,7 @@
   if (layout.getBaseSubobjectLLVMType() != layout.getLLVMType())
     suffix = ".base";
 
-  addTagTypeName(RD, layout.getBaseSubobjectLLVMType(), suffix);
+  addRecordTypeName(RD, layout.getBaseSubobjectLLVMType(), suffix);
 }
 
 bool CodeGenTypes::isZeroInitializable(QualType T) {
diff --git a/lib/CodeGen/CodeGenTypes.h b/lib/CodeGen/CodeGenTypes.h
index a0e1caa..dc383cb 100644
--- a/lib/CodeGen/CodeGenTypes.h
+++ b/lib/CodeGen/CodeGenTypes.h
@@ -101,10 +101,10 @@
   /// 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);
+  /// addRecordTypeName - Compute a name from the given record decl with an
+  /// optional suffix and name the given LLVM type using it.
+  void addRecordTypeName(const RecordDecl *RD, const llvm::Type *Ty,
+                         llvm::StringRef suffix);
 
 public:
   CodeGenTypes(ASTContext &Ctx, llvm::Module &M, const llvm::TargetData &TD,
