Don't produce a vtable if we are just instantiating a method and the
class has no key function.

Fix PR6738.

llvm-svn: 99900
diff --git a/clang/test/CodeGenCXX/template-instantiation.cpp b/clang/test/CodeGenCXX/template-instantiation.cpp
index 9e05939..416c0a1 100644
--- a/clang/test/CodeGenCXX/template-instantiation.cpp
+++ b/clang/test/CodeGenCXX/template-instantiation.cpp
@@ -1,6 +1,7 @@
 // RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
 
 // CHECK-NOT: @_ZTVN5test118stdio_sync_filebufIwEE = constant
+// CHECK-NOT: _ZTVN5test315basic_fstreamXXIcEE
 // CHECK: @_ZTVN5test018stdio_sync_filebufIwEE = constant
 
 // CHECK: define linkonce_odr void @_ZN5test21CIiEC1Ev(
@@ -60,3 +61,16 @@
     a.zedbar(0.0);
   }
 }
+
+namespace test3 {
+  template<typename T>
+  class basic_fstreamXX  {
+    virtual void foo(){}
+    virtual void is_open() const  { }
+  };
+
+  extern template class basic_fstreamXX<char>;
+  // This template instantiation should not cause us to produce a vtable.
+  // (test at the top).
+  template void basic_fstreamXX<char>::is_open() const;
+}