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