diff options
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.jason/thunk3.C')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.jason/thunk3.C | 59 |
1 files changed, 0 insertions, 59 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/thunk3.C b/gcc/testsuite/g++.old-deja/g++.jason/thunk3.C deleted file mode 100644 index 66ac8f9529c..00000000000 --- a/gcc/testsuite/g++.old-deja/g++.jason/thunk3.C +++ /dev/null @@ -1,59 +0,0 @@ -// Test that variadic function calls using thunks work right. -// Note that this will break on any target that uses the generic thunk -// support, because it doesn't support variadic functions. - -// Special g++ Options: -fvtable-thunks -// excess errors test - XFAIL mips*-*-* rs6000-*-* powerpc-*-eabi m68k-*-coff m68k-motorola-sysv m88k-motorola-sysv3 - -#include <stdarg.h> - -struct A { - void* p; - A (void* q): p (q) { } - A (const A& a): p (a.p) { } -}; - -class CBase { -public: - void BaseFunc(); -}; - -class MMixin { -public: - virtual A MixinFunc(int arg, ...) = 0; -}; - -class CExample : public CBase, public MMixin { -public: - A MixinFunc(int arg, ...); -}; - -void CBase::BaseFunc() -{ -} - -A CExample::MixinFunc(int arg, ...) -{ - va_list ap; - va_start (ap, arg); - - if (arg != 1 || va_arg (ap, int) != 2 || va_arg (ap, int) != 3 - || va_arg (ap, int) != 4 || va_arg (ap, int) != 5 - || va_arg (ap, int) != 6 || va_arg (ap, int) != 7 - || va_arg (ap, int) != 8 || va_arg (ap, int) != 9) - return 0; - return this; -} - -void* test(MMixin& anExample) -{ - return anExample.MixinFunc(1,2,3,4,5,6,7,8,9).p; -} - -main () -{ - CExample c; - - if (test(c) != &c) - return 1; -} |