aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@gcc.gnu.org>1999-07-27 20:45:57 -0400
committerJason Merrill <jason@gcc.gnu.org>1999-07-27 20:45:57 -0400
commitadec3b83de5bb9ee9400260b7b217fc923f27507 (patch)
tree9b9c082e5f18540d0ff6f7fd31d03525fe749d08
parent3927874dcd356a857dd2d35d121b4e88c514b635 (diff)
downloadgcc-adec3b83de5bb9ee9400260b7b217fc923f27507.zip
gcc-adec3b83de5bb9ee9400260b7b217fc923f27507.tar.gz
gcc-adec3b83de5bb9ee9400260b7b217fc923f27507.tar.bz2
new
From-SVN: r28305
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/lineno3.C29
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/pmf4.C38
2 files changed, 67 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.other/lineno3.C b/gcc/testsuite/g++.old-deja/g++.other/lineno3.C
new file mode 100644
index 0000000..e2f3e70
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.other/lineno3.C
@@ -0,0 +1,29 @@
+// Bug: g++ gets confused by the #line directive within a method.
+// Contributed by Mark Mitchell <mark@codesourcery.com>
+// Build don't link:
+
+struct S
+{
+ void f ()
+ {
+ int i;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ int j;
+ }
+};
diff --git a/gcc/testsuite/g++.old-deja/g++.other/pmf4.C b/gcc/testsuite/g++.old-deja/g++.other/pmf4.C
new file mode 100644
index 0000000..cfe084c7
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.other/pmf4.C
@@ -0,0 +1,38 @@
+// Bug: g++ doesn't compensate for finding a virtual function in a
+// non-primary vtable when generating PMFs.
+// Submitted by Jason Merrill <jason@cygnus.com>
+
+struct A {
+ virtual ~A() {}
+};
+
+struct B {
+ virtual void f () = 0;
+};
+
+struct C : public A, public B {
+ void f ();
+};
+
+void (C::* B_f)() = &B::f; // this works
+void (C::* C_f)() = &C::f; // this breaks
+
+C* p;
+
+void C::f ()
+{
+ p = this;
+}
+
+int main()
+{
+ C c;
+
+ (c.*B_f)();
+ if (p != &c)
+ return 1;
+
+ (c.*C_f)();
+ if (p != &c)
+ return 1;
+}