aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.gb/sig24.C
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.gb/sig24.C')
-rw-r--r--gcc/testsuite/g++.old-deja/g++.gb/sig24.C36
1 files changed, 36 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig24.C b/gcc/testsuite/g++.old-deja/g++.gb/sig24.C
new file mode 100644
index 00000000000..2dca6f994ce
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.gb/sig24.C
@@ -0,0 +1,36 @@
+// Special g++ Options: -fhandle-signatures
+// GROUPS passed gb sigptr opaque-type
+// Test calling member functions taking/returning opaque type through sigptr.
+
+extern "C"
+{
+ int printf (char *, ...);
+}
+
+signature S
+{
+ typedef t;
+ char * f (t);
+ t g (void);
+ t h (void);
+};
+
+class C
+{
+public:
+ typedef char * t;
+ char * f (t text) { return text; }
+ t g (void) { return "PA"; }
+ t h (void) { return "SS"; }
+};
+
+int main (void)
+{
+ C a;
+ S * p = &a;
+ S::t w = p->h ();
+
+ printf ("%s%s\n", p->f (p->g ()), p->f (w));
+
+ return 0;
+}