]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
new
authorJason Merrill <jason@gcc.gnu.org>
Wed, 28 Jul 1999 00:45:57 +0000 (20:45 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Wed, 28 Jul 1999 00:45:57 +0000 (20:45 -0400)
From-SVN: r28305

gcc/testsuite/g++.old-deja/g++.other/lineno3.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.other/pmf4.C [new file with mode: 0644]

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 (file)
index 0000000..e2f3e70
--- /dev/null
@@ -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 (file)
index 0000000..cfe084c
--- /dev/null
@@ -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;
+}