summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2010-08-24 05:23:20 +0000
committerEli Friedman <eli.friedman@gmail.com>2010-08-24 05:23:20 +0000
commit7fd5544bc94791c51b2e460ab66483dc540e7299 (patch)
tree78983574df177600aa9654010bcf61e8a4a87dd1
parent56ccce00641cd42081097c1bd16a640569700cf4 (diff)
downloadbcm5719-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.cpp2
-rw-r--r--clang/test/SemaCXX/addr-of-overloaded-function.cpp10
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);
+ };
+}
OpenPOWER on IntegriCloud