Index: lib/AST/ASTContext.cpp =================================================================== --- lib/AST/ASTContext.cpp +++ lib/AST/ASTContext.cpp @@ -2496,12 +2496,16 @@ const Type *TypeNode = Quals.strip(T); // If this type already has an address space specified, it cannot get - // another one. - assert(!Quals.hasAddressSpace() && - "Type cannot be in multiple addr spaces!"); - Quals.addAddressSpace(AddressSpace); + // another one. Replace it. + if (Quals.hasAddressSpace()) + Quals.removeAddressSpace(); + if (AddressSpace != LangAS::Default) + Quals.addAddressSpace(AddressSpace); - return getExtQualType(TypeNode, Quals); + if (Quals.hasNonFastQualifiers()) + return getExtQualType(TypeNode, Quals); + else + return QualType(TypeNode, Quals.getFastQualifiers()); } QualType ASTContext::removeAddrSpaceQualType(QualType T) const {