Tie DefineVTablesUsed() in with recursive function instantiation so that we emit
a useful template instantiation stack. Fixes PR8640.

This also causes a slight change to where the "instantianted from" note shows up
in truly esoteric cases (see the change to test/SemaCXX/destructor.cpp), but
that isn't directly the fault of this patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120135 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/SemaCXX/destructor.cpp b/test/SemaCXX/destructor.cpp
index a33aa5e..72268bd 100644
--- a/test/SemaCXX/destructor.cpp
+++ b/test/SemaCXX/destructor.cpp
@@ -100,11 +100,11 @@
       T::deleteIt(p); // expected-error {{type 'int' cannot be used prior to '::'}}
     }
 
-    virtual ~A() {} // expected-note {{in instantiation of member function 'test6::A<int>::operator delete' requested here}}
+    virtual ~A() {}
   };
 
-  class B : A<int> { B(); };
-  B::B() {} // expected-note {{in instantiation of member function 'test6::A<int>::~A' requested here}}
+  class B : A<int> { B(); }; // expected-note {{in instantiation of member function 'test6::A<int>::operator delete' requested here}}
+  B::B() {}
 }
 
 // Make sure classes are marked invalid when they have invalid