diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2018-10-10 22:54:04 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2018-10-10 22:54:04 +0000 |
commit | a1a0e08d63b3b1d68e2e270f4c62b8d4c4ae2640 (patch) | |
tree | 43750fb46850413cd9c01b9ce3f9623a2d05531f /gcc | |
parent | 8e9558f029123e00008d3ef464922128d018f0fc (diff) | |
download | gcc-a1a0e08d63b3b1d68e2e270f4c62b8d4c4ae2640.zip gcc-a1a0e08d63b3b1d68e2e270f4c62b8d4c4ae2640.tar.gz gcc-a1a0e08d63b3b1d68e2e270f4c62b8d4c4ae2640.tar.bz2 |
re PR middle-end/87574 (ICE in add_data_member_location_attribute at gcc/gcc/dwarf2out.c:19226 since r264943)
PR middle-end/87574
* cgraphunit.c (cgraph_node::expand_thunk): Force DECL_IGNORED_P on
the thunk when expanding to GIMPLE.
From-SVN: r265028
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cgraphunit.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/other/pr87574.C | 33 |
4 files changed, 49 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 81171be..3ee20df 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-10-10 Eric Botcazou <ebotcazou@adacore.com> + + PR middle-end/87574 + * cgraphunit.c (cgraph_node::expand_thunk): Force DECL_IGNORED_P on + the thunk when expanding to GIMPLE. + 2018-10-10 Bernd Edlinger <bernd.edlinger@hotmail.de> * varasm.c (mergeable_string_section): Don't try to move zero-length diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c index 5176cd1..cb84954 100644 --- a/gcc/cgraphunit.c +++ b/gcc/cgraphunit.c @@ -1862,6 +1862,12 @@ cgraph_node::expand_thunk (bool output_asm_thunks, bool force_gimple_thunk) DECL_ARGUMENTS. In this case force_gimple_thunk is true. */ if (in_lto_p && !force_gimple_thunk) get_untransformed_body (); + + /* We need to force DECL_IGNORED_P when the thunk is created + after early debug was run. */ + if (force_gimple_thunk) + DECL_IGNORED_P (thunk_fndecl) = 1; + a = DECL_ARGUMENTS (thunk_fndecl); current_function_decl = thunk_fndecl; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5c75174..05dab1f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2018-10-10 Eric Botcazou <ebotcazou@adacore.com> + + * g++.dg/other/pr87574.C: New test. + 2018-10-10 Marek Polacek <polacek@redhat.com> PR c++/87567 - constexpr rejects call to non-constexpr function. diff --git a/gcc/testsuite/g++.dg/other/pr87574.C b/gcc/testsuite/g++.dg/other/pr87574.C new file mode 100644 index 0000000..190e386 --- /dev/null +++ b/gcc/testsuite/g++.dg/other/pr87574.C @@ -0,0 +1,33 @@ +// PR middle-end/87574 +// Testcase by David Binderman <dcb314@hotmail.com> + +// { dg-do compile } +// { dg-options "-O2 -g -Wno-return-type" } + +class a { +public: + virtual ~a(); +}; +class c { +public: + enum j {}; + virtual j d() = 0; +}; +class e : a, c { + j d(); +}; +class f; +class g { +public: + static g *h(); + f *i(); +}; +class f { +public: + template <class b> b *l(int); +}; +c::j e::d() {} +void m() { + for (int k;;) + g::h()->i()->l<c>(k)->d(); +} |