1*67e74705SXin Li // RUN: %clang_cc1 -triple %itanium_abi_triple -emit-llvm %s -o - 2*67e74705SXin Li // RUN: %clang_cc1 -triple %ms_abi_triple -fno-rtti -emit-llvm %s -o - 3*67e74705SXin Li 4*67e74705SXin Li struct A { 5*67e74705SXin Li virtual void Method() = 0; 6*67e74705SXin Li }; 7*67e74705SXin Li 8*67e74705SXin Li struct B : public A { MethodB9*67e74705SXin Li virtual void Method() { } 10*67e74705SXin Li }; 11*67e74705SXin Li 12*67e74705SXin Li typedef void (A::*fn_type_a)(void); 13*67e74705SXin Li typedef void (B::*fn_type_b)(void); 14*67e74705SXin Li main(int argc,char ** argv)15*67e74705SXin Liint main(int argc, char **argv) 16*67e74705SXin Li { 17*67e74705SXin Li fn_type_a f = reinterpret_cast<fn_type_a>(&B::Method); 18*67e74705SXin Li fn_type_b g = reinterpret_cast<fn_type_b>(f); 19*67e74705SXin Li B b; 20*67e74705SXin Li (b.*g)(); 21*67e74705SXin Li return 0; 22*67e74705SXin Li } 23