diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2010-08-24 05:23:20 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2010-08-24 05:23:20 +0000 |
commit | 7fd5544bc94791c51b2e460ab66483dc540e7299 (patch) | |
tree | 78983574df177600aa9654010bcf61e8a4a87dd1 | |
parent | 56ccce00641cd42081097c1bd16a640569700cf4 (diff) | |
download | bcm5719-llvm-7fd5544bc94791c51b2e460ab66483dc540e7299.tar.gz bcm5719-llvm-7fd5544bc94791c51b2e460ab66483dc540e7299.zip |
PR7971: Compute the correct type for an address-of expression containing an
UnresolvedMemberExpr.
llvm-svn: 111899
-rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 2 | ||||
-rw-r--r-- | clang/test/SemaCXX/addr-of-overloaded-function.cpp | 10 |
2 files changed, 11 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 46e2745b21a..9bff8f3a748 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -6271,7 +6271,7 @@ QualType Sema::CheckAddressOfOperand(Expr *op, SourceLocation OpLoc) { // FIXME: Can LHS ever be null here? if (!CheckAddressOfOperand(CO->getTrueExpr(), OpLoc).isNull()) return CheckAddressOfOperand(CO->getFalseExpr(), OpLoc); - } else if (isa<UnresolvedLookupExpr>(op)) { + } else if (isa<OverloadExpr>(op)) { return Context.OverloadTy; } else if (dcl) { // C99 6.5.3.2p1 // We have an lvalue with a decl. Make sure the decl is not declared diff --git a/clang/test/SemaCXX/addr-of-overloaded-function.cpp b/clang/test/SemaCXX/addr-of-overloaded-function.cpp index f8b00df1731..b581b8a3f64 100644 --- a/clang/test/SemaCXX/addr-of-overloaded-function.cpp +++ b/clang/test/SemaCXX/addr-of-overloaded-function.cpp @@ -86,3 +86,13 @@ namespace test0 { myFunction(bar); } } + +namespace PR7971 { + struct S { + void g() { + f(&g); + } + void f(bool (*)(int, char)); + static bool g(int, char); + }; +} |