1*ebf267b8SZequan Wu // RUN: %clang_cc1 %s -triple x86_64-windows-msvc -fdiagnostics-format msvc -fno-rtti-data -fsyntax-only -verify 2*ebf267b8SZequan Wu 3*ebf267b8SZequan Wu namespace std { 4*ebf267b8SZequan Wu struct type_info {}; 5*ebf267b8SZequan Wu } // namespace std 6*ebf267b8SZequan Wu class B { 7*ebf267b8SZequan Wu public: 8*ebf267b8SZequan Wu virtual ~B() = default; 9*ebf267b8SZequan Wu }; 10*ebf267b8SZequan Wu 11*ebf267b8SZequan Wu class D1 : public B { 12*ebf267b8SZequan Wu public: 13*ebf267b8SZequan Wu ~D1() = default; 14*ebf267b8SZequan Wu }; 15*ebf267b8SZequan Wu f()16*ebf267b8SZequan Wuvoid f() { 17*ebf267b8SZequan Wu B *b = new D1(); 18*ebf267b8SZequan Wu auto d = dynamic_cast<D1 *>(b); // expected-warning{{dynamic_cast will not work since RTTI data is disabled by /GR-}} 19*ebf267b8SZequan Wu void *v = dynamic_cast<void *>(b); // expected-warning{{dynamic_cast will not work since RTTI data is disabled by /GR-}} 20*ebf267b8SZequan Wu 21*ebf267b8SZequan Wu (void)typeid(int); 22*ebf267b8SZequan Wu (void)typeid(b); 23*ebf267b8SZequan Wu (void)typeid(*b); // expected-warning{{typeid will not work since RTTI data is disabled by /GR-}} 24*ebf267b8SZequan Wu B b2 = *b; 25*ebf267b8SZequan Wu (void)typeid(b2); 26*ebf267b8SZequan Wu (void)typeid(*&b2); // expected-warning{{typeid will not work since RTTI data is disabled by /GR-}} 27*ebf267b8SZequan Wu (void)typeid((B &)b2); 28*ebf267b8SZequan Wu 29*ebf267b8SZequan Wu B &br = b2; 30*ebf267b8SZequan Wu (void)typeid(br); // expected-warning{{typeid will not work since RTTI data is disabled by /GR-}} 31*ebf267b8SZequan Wu (void)typeid(&br); 32*ebf267b8SZequan Wu }