Reapply 81096, now with a fix. Spot the bug:

      for (unsigned i = numargs; i < NumArgs; ++i)
        Args[0] = 0;

;)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81123 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/SemaTemplate/default-expr-arguments.cpp b/test/SemaTemplate/default-expr-arguments.cpp
index 925d52f..d689cc8 100644
--- a/test/SemaTemplate/default-expr-arguments.cpp
+++ b/test/SemaTemplate/default-expr-arguments.cpp
@@ -20,7 +20,7 @@
 }
 
 template<typename T> struct F {
-  F(T t = 10);
+  F(T t = 10); // expected-error{{cannot initialize 't' with an rvalue of type 'int'}}
   void f(T t = 10); // expected-error{{cannot initialize 't' with an rvalue of type 'int'}}
 };
 
@@ -34,6 +34,9 @@
 void g3(F<int> f, F<struct S> s) {
   f.f();
   s.f(); // expected-note{{in instantiation of default function argument expression for 'f<struct S>' required here}}
+  
+  F<int> f2;
+  F<S> s2; // expected-note{{in instantiation of default function argument expression for 'F<struct S>' required here}}
 }
 
 template<typename T> struct G {