diff options
Diffstat (limited to 'clang/lib/Sema/SemaExprCXX.cpp')
-rw-r--r-- | clang/lib/Sema/SemaExprCXX.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp index 41ee8ddcae4..a6a62a9e377 100644 --- a/clang/lib/Sema/SemaExprCXX.cpp +++ b/clang/lib/Sema/SemaExprCXX.cpp @@ -280,7 +280,16 @@ Sema::PerformImplicitConversion(Expr *&From, QualType ToType, break; case ICK_Array_To_Pointer: - FromType = Context.getArrayDecayedType(FromType); + if (FromType->isOverloadType()) { + FunctionDecl *Fn = ResolveAddressOfOverloadedFunction(From, ToType, true); + if (!Fn) + return true; + + FixOverloadedFunctionReference(From, Fn); + FromType = From->getType(); + } else { + FromType = Context.getArrayDecayedType(FromType); + } ImpCastExprToType(From, FromType); break; |