* cfgloopmanip.c (duplicate_loop_to_header_edge): Cleanup profile
[official-gcc.git] / gcc / testsuite / g++.old-deja / g++.jason / thunk2.C
blob8c02fc8f1d90bdced6b79d92ae06cf53eeeed198
1 // { dg-do run { target fpic } }
2 // { dg-options "-fPIC" }
3 // { dg-skip-if "requires unsupported run-time relocation" { spu-*-* } }
4 // Test that non-variadic function calls using thunks and PIC work right.
6 struct A {
7   void* p;
8   A (void* q): p (q) { }
9   A (const A& a): p (a.p) { }
12 class CBase {
13 public:
14   virtual void BaseFunc();
17 class MMixin {
18 public:
19    virtual A MixinFunc(int arg, A arg2) = 0;
22 class CExample : public CBase, public MMixin {
23 public:
24    A MixinFunc(int arg, A arg2);
27 void CBase::BaseFunc()
31 A CExample::MixinFunc(int arg, A arg2)
33   if (arg != 1 || arg2.p != 0)
34     return 0;
35   return this;
38 void* test(MMixin& anExample)
40   return anExample.MixinFunc(1,A(0)).p;
43 int
44 main ()
46   CExample c;
48   if (test(c) != &c)
49     return 1;
51   return 0;