1// { dg-do run } 2// Test that non-variadic function calls using thunks work right. 3 4struct A { 5 void* p; 6 A (void* q): p (q) { } 7 A (const A& a): p (a.p) { } 8}; 9 10class CBase { 11public: 12 virtual void BaseFunc(); 13}; 14 15class MMixin { 16public: 17 virtual A MixinFunc(int arg, A arg2) = 0; 18}; 19 20class CExample : public CBase, public MMixin { 21public: 22 A MixinFunc(int arg, A arg2); 23}; 24 25void CBase::BaseFunc() 26{ 27} 28 29A CExample::MixinFunc(int arg, A arg2) 30{ 31 if (arg != 1 || arg2.p != 0) 32 return 0; 33 return this; 34} 35 36void* test(MMixin& anExample) 37{ 38 return anExample.MixinFunc(1,A(0)).p; 39} 40 41int main () 42{ 43 CExample c; 44 45 if (test(c) != &c) 46 return 1; 47} 48