diff --git a/lib/CodeGen/CGRtti.cpp b/lib/CodeGen/CGRtti.cpp
index 7bc774f..8351db5 100644
--- a/lib/CodeGen/CGRtti.cpp
+++ b/lib/CodeGen/CGRtti.cpp
@@ -16,32 +16,32 @@
 using namespace CodeGen;
 
 llvm::Constant *CodeGenModule::GenerateRtti(const CXXRecordDecl *RD) {
-  llvm::Type *Ptr8Ty;
-  Ptr8Ty = llvm::PointerType::get(llvm::Type::getInt8Ty(VMContext), 0);
-  llvm::Constant *Rtti = llvm::Constant::getNullValue(Ptr8Ty);
+  const llvm::Type *Int8PtrTy = llvm::Type::getInt8PtrTy(VMContext);
 
   if (!getContext().getLangOptions().Rtti)
-    return Rtti;
+    return llvm::Constant::getNullValue(Int8PtrTy);
 
   llvm::SmallString<256> OutName;
   llvm::raw_svector_ostream Out(OutName);
-  mangleCXXRtti(getMangleContext(), RD, Out);
+  mangleCXXRtti(getMangleContext(), 
+                Context.getTagDeclType(RD).getTypePtr(), Out);
   
   llvm::GlobalVariable::LinkageTypes linktype;
   linktype = llvm::GlobalValue::WeakAnyLinkage;
   std::vector<llvm::Constant *> info;
   // assert(0 && "FIXME: implement rtti descriptor");
   // FIXME: descriptor
-  info.push_back(llvm::Constant::getNullValue(Ptr8Ty));
+  info.push_back(llvm::Constant::getNullValue(Int8PtrTy));
   // assert(0 && "FIXME: implement rtti ts");
   // FIXME: TS
-  info.push_back(llvm::Constant::getNullValue(Ptr8Ty));
+  info.push_back(llvm::Constant::getNullValue(Int8PtrTy));
 
   llvm::Constant *C;
-  llvm::ArrayType *type = llvm::ArrayType::get(Ptr8Ty, info.size());
+  llvm::ArrayType *type = llvm::ArrayType::get(Int8PtrTy, info.size());
   C = llvm::ConstantArray::get(type, info);
-  Rtti = new llvm::GlobalVariable(getModule(), type, true, linktype, C,
-                                  Out.str());
-  Rtti = llvm::ConstantExpr::getBitCast(Rtti, Ptr8Ty);
+  llvm::Constant *Rtti = 
+    new llvm::GlobalVariable(getModule(), type, true, linktype, C,
+                             Out.str());
+  Rtti = llvm::ConstantExpr::getBitCast(Rtti, Int8PtrTy);
   return Rtti;
 }
diff --git a/lib/CodeGen/Mangle.cpp b/lib/CodeGen/Mangle.cpp
index 40c11a5..ff8cc2b 100644
--- a/lib/CodeGen/Mangle.cpp
+++ b/lib/CodeGen/Mangle.cpp
@@ -53,7 +53,7 @@
 
     void mangleCXXVtable(const CXXRecordDecl *RD);
     void mangleCXXVTT(const CXXRecordDecl *RD);
-    void mangleCXXRtti(const CXXRecordDecl *RD);
+    void mangleCXXRtti(const Type *Ty);
     void mangleCXXCtor(const CXXConstructorDecl *D, CXXCtorType Type);
     void mangleCXXDtor(const CXXDestructorDecl *D, CXXDtorType Type);
 
@@ -212,10 +212,12 @@
   mangleName(RD);
 }
 
-void CXXNameMangler::mangleCXXRtti(const CXXRecordDecl *RD) {
+void CXXNameMangler::mangleCXXRtti(const Type *Ty) {
   // <special-name> ::= TI <type>  # typeinfo structure
   Out << "_ZTI";
-  mangleName(RD);
+
+  // FIXME: mangleType should probably take a const Type * instead.
+  mangleType(QualType(Ty, 0));
 }
 
 void CXXNameMangler::mangleGuardVariable(const VarDecl *D) {
@@ -1432,10 +1434,10 @@
     os.flush();
   }
 
-  void mangleCXXRtti(MangleContext &Context, const CXXRecordDecl *RD,
+  void mangleCXXRtti(MangleContext &Context, const Type *Ty,
                      llvm::raw_ostream &os) {
     CXXNameMangler Mangler(Context, os);
-    Mangler.mangleCXXRtti(RD);
+    Mangler.mangleCXXRtti(Ty);
 
     os.flush();
   }
diff --git a/lib/CodeGen/Mangle.h b/lib/CodeGen/Mangle.h
index 6ddec58..0d70948 100644
--- a/lib/CodeGen/Mangle.h
+++ b/lib/CodeGen/Mangle.h
@@ -67,7 +67,7 @@
                        llvm::raw_ostream &os);
   void mangleCXXVTT(MangleContext &Context, const CXXRecordDecl *RD,
                        llvm::raw_ostream &os);
-  void mangleCXXRtti(MangleContext &Context, const CXXRecordDecl *RD, 
+  void mangleCXXRtti(MangleContext &Context, const Type *T, 
                      llvm::raw_ostream &os);
   void mangleCXXCtor(MangleContext &Context, const CXXConstructorDecl *D, 
                      CXXCtorType Type, llvm::raw_ostream &os);
