/* { dg-do run } */ /* { dg-options "-O3 --param ipa-cp-eval-threshold=1" } */ extern "C" void abort (void); struct CBase { virtual void BaseFunc () {} }; struct MMixin { virtual void * MixinFunc (int, void *) = 0; }; struct CExample: CBase, public MMixin { int stuff, magic, more_stuff; CExample () { stuff = 0; magic = 0xbeef; more_stuff = 0; } void *MixinFunc (int arg, void *arg2) { if (arg != 1 || arg2) return 0; if (magic != 0xbeef) abort(); return this; } }; void *test (MMixin & anExample) { return anExample.MixinFunc (1, 0); } int main () { CExample c; test (c); return 0; }