/* { dg-do run } */ /* { dg-options "-O3" } */ struct A { void *p; A (void *q) : p (q) {} A (const A &) : p () {} }; struct CBase { virtual void BaseFunc () {} }; struct MMixin { virtual A MixinFunc (int, A) = 0; }; struct CExample: CBase, public MMixin { A MixinFunc (int arg, A arg2) { if (arg != 1 || arg2.p) return 0; return this; } }; void *test (MMixin & anExample) { return anExample.MixinFunc (1, (0)).p; } int main () { CExample c; return (test (c) != &c); }