diff options
author | Jakub Jelinek <jakub@redhat.com> | 2014-07-04 10:38:45 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2014-07-04 10:38:45 +0200 |
commit | 253eab4f8b997af938ebb22a0ad73ac41de3f69b (patch) | |
tree | 490c05435b028566dbc257f7cbc48738ba99359a | |
parent | 14e000dec0e6eb1a7f3029cd147595e8972c2d23 (diff) | |
download | gcc-253eab4f8b997af938ebb22a0ad73ac41de3f69b.zip gcc-253eab4f8b997af938ebb22a0ad73ac41de3f69b.tar.gz gcc-253eab4f8b997af938ebb22a0ad73ac41de3f69b.tar.bz2 |
re PR middle-end/61654 (ICE in release_function_body, at cgraph.c:1699)
PR middle-end/61654
* cgraphunit.c (expand_thunk): Call free_dominance_info.
* g++.dg/opt/pr61654.C: New test.
From-SVN: r212293
-rw-r--r-- | gcc/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/cgraphunit.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/opt/pr61654.C | 27 |
4 files changed, 34 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4965219..f37d8f4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ 2014-07-04 Jakub Jelinek <jakub@redhat.com> + PR middle-end/61654 + * cgraphunit.c (expand_thunk): Call free_dominance_info. + PR tree-optimization/61684 * tree-ssa-ifcombine.c (recognize_single_bit_test): Make sure rhs1 of conversion is a SSA_NAME before using SSA_NAME_DEF_STMT on it. diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c index f7980ed..b2bafe4 100644 --- a/gcc/cgraphunit.c +++ b/gcc/cgraphunit.c @@ -1693,6 +1693,7 @@ expand_thunk (struct cgraph_node *node, bool output_asm_thunks, bool force_gimpl #ifdef ENABLE_CHECKING verify_flow_info (); #endif + free_dominance_info (CDI_DOMINATORS); /* Since we want to emit the thunk, we explicitly mark its name as referenced. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5eee717..02e8b93 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2014-07-04 Jakub Jelinek <jakub@redhat.com> + PR middle-end/61654 + * g++.dg/opt/pr61654.C: New test. + PR tree-optimization/61684 * gcc.c-torture/compile/pr61684.c: New test. diff --git a/gcc/testsuite/g++.dg/opt/pr61654.C b/gcc/testsuite/g++.dg/opt/pr61654.C new file mode 100644 index 0000000..78dc0c1 --- /dev/null +++ b/gcc/testsuite/g++.dg/opt/pr61654.C @@ -0,0 +1,27 @@ +// PR middle-end/61654 +// { dg-do compile } + +class A +{ + virtual int a (int, int = 0) = 0; + int b (const int &); + int c; +}; + +class B : virtual A +{ + int d; + int a (int, int); +}; + +int +A::b (const int &) +{ + return a ('\0'); +} + +int +B::a (int, int) +{ + return 0 ? 0 : d; +} |