diff options
author | Richard Guenther <rguenther@suse.de> | 2010-10-20 14:11:06 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2010-10-20 14:11:06 +0000 |
commit | 1b0e3802574b1bced2cc7304b2495213e8edc7d5 (patch) | |
tree | eaf5024674c4d0ed963c89ed951911b20901e7c9 /gcc/testsuite | |
parent | 519345901bc8ee08de2ea9c450aa56594724f4e7 (diff) | |
download | gcc-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/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/lto/20101020-1_0.C | 8 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/lto/20101020-1_0.h | 23 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/lto/20101020-1_1.C | 11 |
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) +{ +} + |