summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhp <hp@138bc75d-0d04-0410-961f-82ee72b054a4>2016-06-20 20:02:03 +0000
committerhp <hp@138bc75d-0d04-0410-961f-82ee72b054a4>2016-06-20 20:02:03 +0000
commitdbddef42687878bf9da43a294973b1a1f25af8a7 (patch)
tree18a7e998977efc76ff59914ba6ace9103e92b16d
parenteff8a53fc14eb0142831f214c44f2ef2798d5dce (diff)
downloadgcc-dbddef42687878bf9da43a294973b1a1f25af8a7.tar.gz
PR target/71571
* g++.dg/torture/pr71571.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237616 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/testsuite/ChangeLog5
-rwxr-xr-xgcc/testsuite/g++.dg/torture/pr71571.C43
2 files changed, 48 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d2963c3fe4a..96b664d39a5 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-06-20 David B. Robins <gcc@davidrobins.net>
+
+ PR target/71571
+ * g++.dg/torture/pr71571.C: New test.
+
2016-06-20 Jakub Jelinek <jakub@redhat.com>
PR target/71559
diff --git a/gcc/testsuite/g++.dg/torture/pr71571.C b/gcc/testsuite/g++.dg/torture/pr71571.C
new file mode 100755
index 00000000000..e60edcd3c9b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr71571.C
@@ -0,0 +1,43 @@
+// { dg-do run }
+// { dg-options "-fno-inline" { target { ! fpic } } }
+// { dg-options "-fpic -fno-inline" { target fpic } }
+
+class XBase
+{
+public:
+ virtual void FuncA() = 0;
+};
+
+class Y
+{
+protected:
+ virtual void FuncB() {}
+};
+
+class X1 : public Y, public XBase
+{
+public:
+ void FuncA() {}
+};
+
+class X2 : public XBase
+{
+public:
+ X2(XBase &xb) : m_xb(xb) { }
+ void FuncA()
+ {
+ m_xb.FuncA();
+ }
+
+private:
+ XBase &m_xb;
+};
+
+
+int main()
+{
+ X1 x1;
+ X2 x2(x1);
+ XBase *pxb = &x2;
+ pxb->FuncA();
+}