From fc22e4774b786a11f8cfc0c6d724a9386f80e064 Mon Sep 17 00:00:00 2001 From: David Majnemer Date: Fri, 12 Jun 2015 17:55:44 +0000 Subject: [MS ABI] Lock-in the derived memptr rep. for base-to-derived conversions We would get this right in the case where an explicit cast was formed but not when we were performing an implicit conversion. This fixes PR23828. llvm-svn: 239625 --- clang/lib/Sema/SemaExprCXX.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'clang/lib/Sema') diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp index ef72097e935..6c839f356fd 100644 --- a/clang/lib/Sema/SemaExprCXX.cpp +++ b/clang/lib/Sema/SemaExprCXX.cpp @@ -3290,10 +3290,10 @@ Sema::PerformImplicitConversion(Expr *From, QualType ToType, // We may not have been able to figure out what this member pointer resolved // to up until this exact point. Attempt to lock-in it's inheritance model. - QualType FromType = From->getType(); - if (FromType->isMemberPointerType()) - if (Context.getTargetInfo().getCXXABI().isMicrosoft()) - RequireCompleteType(From->getExprLoc(), FromType, 0); + if (Context.getTargetInfo().getCXXABI().isMicrosoft()) { + RequireCompleteType(From->getExprLoc(), From->getType(), 0); + RequireCompleteType(From->getExprLoc(), ToType, 0); + } From = ImpCastExprToType(From, ToType, Kind, VK_RValue, &BasePath, CCK) .get(); -- cgit v1.2.3