/* APPLE LOCAL file 4299630 */ /* { dg-do compile { target powerpc*-*-darwin* } } */ /* { dg-skip-if "Not valid on 64-bit" { powerpc*-*-darwin* } { "-m64" } { "" } } */ /* { dg-options "-mlongcall" } */ /* { dg-final { scan-assembler "\tjmp[ ]" } } */ /* Radar 4299630: insure C++ thunks get long jmps. */ /* Contributed by Howard Hinnant. */ struct base1 { virtual ~base1() {} void foo1() {} }; struct base2 { virtual ~base2() {} void foo2() {} }; struct derived : public base1, public base2 { }; int main() { typedef void (base1::*F1)(); typedef void (base2::*F2)(); derived d; derived* dp = &d; F1 f1 = &base1::foo1; F2 f2 = &base2::foo2; (dp->*f1)(); (dp->*f2)(); }