// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s // CHECK-NOT: @_ZTVN5test118stdio_sync_filebufIwEE = constant // CHECK: @_ZTVN5test018stdio_sync_filebufIwEE = constant namespace test0 { struct basic_streambuf { virtual ~basic_streambuf(); }; template struct stdio_sync_filebuf : public basic_streambuf { virtual void xsgetn(); }; // This specialization should cause the vtable to be emitted, even with // the following extern template declaration. template<> void stdio_sync_filebuf::xsgetn() { } extern template class stdio_sync_filebuf; } namespace test1 { struct basic_streambuf { virtual ~basic_streambuf(); }; template struct stdio_sync_filebuf : public basic_streambuf { virtual void xsgetn(); }; // Just a declaration should not force the vtable to be emitted. template<> void stdio_sync_filebuf::xsgetn(); }