diff options
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.gb/sig10.C')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.gb/sig10.C | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig10.C b/gcc/testsuite/g++.old-deja/g++.gb/sig10.C new file mode 100644 index 00000000000..e16f2eeb095 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.gb/sig10.C @@ -0,0 +1,38 @@ +// Special g++ Options: -fhandle-signatures +// GROUPS passed gb sigptr argument return-value new +// Test passing a signature pointer to a function and returning it from one. + +extern "C" +{ + int printf (char *, ...); +} + +class C +{ + char * text; +public: + C (char * s) { text = s; } + char * get_msg (void) const { return text; } +}; + +signature S +{ + char * get_msg (void) const; +}; + +char * f (const S * p) +{ + return p->get_msg (); +} + +const S * g (const C * p) +{ + return p; +} + +int main (void) +{ + printf ("%s%s\n", f(new C ("PA")), g(new C ("SS"))->get_msg ()); + + return 0; +} |