summaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2010-10-20 14:11:06 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2010-10-20 14:11:06 +0000
commit1b0e3802574b1bced2cc7304b2495213e8edc7d5 (patch)
treeeaf5024674c4d0ed963c89ed951911b20901e7c9 /gcc/testsuite
parent519345901bc8ee08de2ea9c450aa56594724f4e7 (diff)
downloadgcc-1b0e3802574b1bced2cc7304b2495213e8edc7d5.tar.gz
re PR lto/45667 (ICE: verify_stmts failed: type mismatch in address expression with -flto)
2010-10-20 Richard Guenther <rguenther@suse.de> PR lto/45667 * lto-streamer-out.c (output_gimple_stmt): Fix typo. * tree-cfg.c (verify_gimple_call): Properly get the call fndecl. (verify_gimple_assign_single): Disable ADDR_EXPR type check when in LTO. * 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. From-SVN: r165725
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)
+{
+}
+