summaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog7
-rw-r--r--gcc/testsuite/g++.dg/lto/20101020-1_0.C8
-rw-r--r--gcc/testsuite/g++.dg/lto/20101020-1_0.h23
-rw-r--r--gcc/testsuite/g++.dg/lto/20101020-1_1.C11
4 files changed, 49 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index f69e743ac40..519f7a7fb63 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2010-10-20 Richard Guenther <rguenther@suse.de>
+
+ PR lto/45667
+ * g++.dg/lto/20101020-1_0.h: New testcase.
+ * g++.dg/lto/20101020-1_0.C: Likewise.
+ * g++.dg/lto/20101020-1_1.C: Likewise.
+
2010-10-20 Dmitry Melnik <dm@ispras.ru>
* gcc.dg/20101013-1.c: New test.
diff --git a/gcc/testsuite/g++.dg/lto/20101020-1_0.C b/gcc/testsuite/g++.dg/lto/20101020-1_0.C
new file mode 100644
index 00000000000..e92bcf8ace4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lto/20101020-1_0.C
@@ -0,0 +1,8 @@
+// { dg-lto-do link }
+
+#include "20101020-1_0.h"
+A::A ()
+{
+ foo (&A::bar);
+}
+int main() { return 0; }
diff --git a/gcc/testsuite/g++.dg/lto/20101020-1_0.h b/gcc/testsuite/g++.dg/lto/20101020-1_0.h
new file mode 100644
index 00000000000..2de1d3c7682
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lto/20101020-1_0.h
@@ -0,0 +1,23 @@
+struct A;
+typedef void (A::*Am1) (void *);
+typedef void (A::*Am2) ();
+
+struct B
+{
+ Am2 am2;
+};
+
+struct A
+{
+ A ();
+ struct B b;
+ struct C *c;
+ struct D *d;
+ void foo (Am1);
+ void bar (void *);
+};
+
+struct C
+{
+};
+
diff --git a/gcc/testsuite/g++.dg/lto/20101020-1_1.C b/gcc/testsuite/g++.dg/lto/20101020-1_1.C
new file mode 100644
index 00000000000..5c83fbfdb73
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lto/20101020-1_1.C
@@ -0,0 +1,11 @@
+#include "20101020-1_0.h"
+struct D
+{
+};
+void A::bar (void *)
+{
+}
+void A::foo (Am1)
+{
+}
+