diff options
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Sema/SemaOverload.cpp | 4 | ||||
-rw-r--r-- | clang/lib/Sema/SemaType.cpp | 6 |
2 files changed, 7 insertions, 3 deletions
diff --git a/clang/lib/Sema/SemaOverload.cpp b/clang/lib/Sema/SemaOverload.cpp index 27e7db099d8..5392af4abf0 100644 --- a/clang/lib/Sema/SemaOverload.cpp +++ b/clang/lib/Sema/SemaOverload.cpp @@ -3519,8 +3519,10 @@ Sema::ResolveAddressOfOverloadedFunction(Expr *From, QualType ToType, bool Complain) { QualType FunctionType = ToType; bool IsMember = false; - if (const PointerLikeType *ToTypePtr = ToType->getAsPointerLikeType()) + if (const PointerType *ToTypePtr = ToType->getAsPointerType()) FunctionType = ToTypePtr->getPointeeType(); + else if (const ReferenceType *ToTypeRef = ToType->getAsReferenceType()) + FunctionType = ToTypeRef->getPointeeType(); else if (const MemberPointerType *MemTypePtr = ToType->getAsMemberPointerType()) { FunctionType = MemTypePtr->getPointeeType(); diff --git a/clang/lib/Sema/SemaType.cpp b/clang/lib/Sema/SemaType.cpp index f8b277ae781..47cf8e5611d 100644 --- a/clang/lib/Sema/SemaType.cpp +++ b/clang/lib/Sema/SemaType.cpp @@ -201,8 +201,10 @@ QualType Sema::ConvertDeclSpecToType(const DeclSpec &DS) { // or incomplete types shall not be restrict-qualified." C++ also allows // restrict-qualified references. if (TypeQuals & QualType::Restrict) { - if (const PointerLikeType *PT = Result->getAsPointerLikeType()) { - QualType EltTy = PT->getPointeeType(); + if (Result->isPointerType() || Result->isReferenceType()) { + QualType EltTy = Result->isPointerType() ? + Result->getAsPointerType()->getPointeeType() : + Result->getAsReferenceType()->getPointeeType(); // If we have a pointer or reference, the pointee must have an object or // incomplete type. |