diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2009-10-23 18:08:22 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2009-10-23 18:08:22 +0000 |
commit | c9af8fd76badbe5068404288c9c006d969ec7573 (patch) | |
tree | 26afe4cb1e6ad15181fbd96df243d2a2d1d9955e /clang/lib/Sema/SemaExprCXX.cpp | |
parent | 4ef112be6270f04fa7966288c990d95ec43c62fd (diff) | |
download | bcm5719-llvm-c9af8fd76badbe5068404288c9c006d969ec7573.tar.gz bcm5719-llvm-c9af8fd76badbe5068404288c9c006d969ec7573.zip |
Fixed a code gen bug (by fixing the AST) involving user-defined
pointer-to-member type conversion follwed by a pointer-to-member
standard conversion.
llvm-svn: 84955
Diffstat (limited to 'clang/lib/Sema/SemaExprCXX.cpp')
-rw-r--r-- | clang/lib/Sema/SemaExprCXX.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp index d4d031f91ed..ee19ff6b848 100644 --- a/clang/lib/Sema/SemaExprCXX.cpp +++ b/clang/lib/Sema/SemaExprCXX.cpp @@ -1139,6 +1139,10 @@ Sema::PerformImplicitConversion(Expr *&From, QualType ToType, From = CastArg.takeAs<Expr>(); return BuildCXXDerivedToBaseExpr(From, CastKind, ICS, Flavor); } + + if (ICS.UserDefined.After.Second == ICK_Pointer_Member && + ToType.getNonReferenceType()->isMemberFunctionPointerType()) + CastKind = CastExpr::CK_BaseToDerivedMemberPointer; From = new (Context) ImplicitCastExpr(ToType.getNonReferenceType(), CastKind, CastArg.takeAs<Expr>(), |