diff --git a/lib/CodeGen/CGException.cpp b/lib/CodeGen/CGException.cpp
index caf0668..3049915 100644
--- a/lib/CodeGen/CGException.cpp
+++ b/lib/CodeGen/CGException.cpp
@@ -367,7 +367,9 @@
 
   for (unsigned i = 0; i < Proto->getNumExceptions(); ++i) {
     QualType Ty = Proto->getExceptionType(i);
-    llvm::Value *EHType = CGM.GetAddrOfRTTIDescriptor(Ty.getNonReferenceType());
+    QualType ExceptType
+      = Ty.getNonReferenceType().getUnqualifiedType();
+    llvm::Value *EHType = CGM.GetAddrOfRTTIDescriptor(ExceptType);
     SelectorArgs.push_back(EHType);
   }
   if (Proto->getNumExceptions())
@@ -506,8 +508,11 @@
     const CXXCatchStmt *C = S.getHandler(i);
     VarDecl *CatchParam = C->getExceptionDecl();
     if (CatchParam) {
+      // C++ [except.handle]p3 indicates that top-level cv-qualifiers
+      // are ignored.
+      QualType CaughtType = C->getCaughtType().getNonReferenceType();
       llvm::Value *EHTypeInfo
-        = CGM.GetAddrOfRTTIDescriptor(C->getCaughtType().getNonReferenceType());
+        = CGM.GetAddrOfRTTIDescriptor(CaughtType.getUnqualifiedType());
       SelectorArgs.push_back(EHTypeInfo);
     } else {
       // null indicates catch all
diff --git a/lib/CodeGen/CGExprCXX.cpp b/lib/CodeGen/CGExprCXX.cpp
index bfdff98..54e6b01 100644
--- a/lib/CodeGen/CGExprCXX.cpp
+++ b/lib/CodeGen/CGExprCXX.cpp
@@ -548,8 +548,10 @@
     assert(SrcTy->isRecordType() && "Src type must be record type!");
     assert(DestTy->isRecordType() && "Dest type must be record type!");
     
-    llvm::Value *SrcArg = CGM.GetAddrOfRTTIDescriptor(SrcTy);
-    llvm::Value *DestArg = CGM.GetAddrOfRTTIDescriptor(DestTy);
+    llvm::Value *SrcArg
+      = CGM.GetAddrOfRTTIDescriptor(SrcTy.getUnqualifiedType());
+    llvm::Value *DestArg
+      = CGM.GetAddrOfRTTIDescriptor(DestTy.getUnqualifiedType());
     
     V = Builder.CreateBitCast(V, PtrToInt8Ty);
     V = Builder.CreateCall4(CGM.CreateRuntimeFunction(FTy, "__dynamic_cast"),
diff --git a/lib/CodeGen/Mangle.cpp b/lib/CodeGen/Mangle.cpp
index 687ff3e..367c868 100644
--- a/lib/CodeGen/Mangle.cpp
+++ b/lib/CodeGen/Mangle.cpp
@@ -1586,6 +1586,7 @@
 void MangleContext::mangleCXXRTTI(QualType Ty,
                                   llvm::SmallVectorImpl<char> &Res) {
   // <special-name> ::= TI <type>  # typeinfo structure
+  assert(!Ty.hasQualifiers() && "RTTI info cannot have top-level qualifiers");
   CXXNameMangler Mangler(*this, Res);
   Mangler.getStream() << "_ZTI";
   Mangler.mangleType(Ty);
