Catch placeholder types in DefaultLvalueConversion
and DefaultFunctionArrayLvalueConversion.  To prevent
significant regression for should-this-be-a-call fixits,
and to repair some such regression from the introduction of
bound member placeholders, make those placeholder checks
try to build calls appropriately.  Harden the build-a-call
logic while we're at it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141738 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/SemaCXX/alignof-sizeof-reference.cpp b/test/SemaCXX/alignof-sizeof-reference.cpp
index 93ba203..1d65abb 100644
--- a/test/SemaCXX/alignof-sizeof-reference.cpp
+++ b/test/SemaCXX/alignof-sizeof-reference.cpp
@@ -8,14 +8,14 @@
   static_assert(sizeof(r) == 1, "bad size");
 }
 
-void f();  // expected-note{{candidate function}}
-void f(int);  // expected-note{{candidate function}}
+void f();  // expected-note{{possible target for call}}
+void f(int);  // expected-note{{possible target for call}}
 void g() { 
-  sizeof(&f); // expected-error{{cannot resolve overloaded function 'f' from context}}
+  sizeof(&f); // expected-error{{reference to overloaded function could not be resolved; did you mean to call it?}}
 }
 
-template<typename T> void f_template(); // expected-note{{candidate function}}
-template<typename T> void f_template(T*); // expected-note{{candidate function}}
+template<typename T> void f_template(); // expected-note{{possible target for call}}
+template<typename T> void f_template(T*); // expected-note{{possible target for call}}
 void rdar9659191() {
-  (void)alignof(f_template<int>); // expected-error{{cannot resolve overloaded function 'f_template' from context}}
+  (void)alignof(f_template<int>); // expected-error{{reference to overloaded function could not be resolved; did you mean to call it?}}
 }