diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp index 4757ea98e5..b0ce9eb26d 100644 --- a/lib/AST/ASTContext.cpp +++ b/lib/AST/ASTContext.cpp @@ -308,6 +308,12 @@ ASTContext::getTypeInfo(QualType T) { Width = Target.getPointerWidth(0); Align = Target.getPointerAlign(0); break; + case Type::BlockPointer: { + unsigned AS = cast(T)->getPointeeType().getAddressSpace(); + Width = Target.getPointerWidth(AS); + Align = Target.getPointerAlign(AS); + break; + } case Type::Pointer: { unsigned AS = cast(T)->getPointeeType().getAddressSpace(); Width = Target.getPointerWidth(AS); @@ -1668,6 +1674,8 @@ void ASTContext::getObjCEncodingForType(QualType T, std::string& S, S += '}'; } else if (T->isEnumeralType()) { S += 'i'; + } else if (T->isBlockPointerType()) { + S += '^'; // This type string is the same as general pointers. } else assert(0 && "@encode for type not implemented!"); }