summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaExprCXX.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2008-11-10 20:40:00 +0000
committerDouglas Gregor <dgregor@apple.com>2008-11-10 20:40:00 +0000
commitcd695e500de7e628b1feb3425423dec85eb4d5ba (patch)
tree15fd5d04bd245b48af239bc199c129001dcd65b6 /clang/lib/Sema/SemaExprCXX.cpp
parent74eefb5722372f49280e452fa680fb3da8aa1ab0 (diff)
downloadbcm5719-llvm-cd695e500de7e628b1feb3425423dec85eb4d5ba.tar.gz
bcm5719-llvm-cd695e500de7e628b1feb3425423dec85eb4d5ba.zip
Basic support for taking the address of an overloaded function
llvm-svn: 59000
Diffstat (limited to 'clang/lib/Sema/SemaExprCXX.cpp')
-rw-r--r--clang/lib/Sema/SemaExprCXX.cpp11
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;
OpenPOWER on IntegriCloud