https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90462
Bug ID: 90462 Summary: Internal compiler error with deprecated-copy and json diagnostics Product: gcc Version: 9.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: schopf.dan at gmail dot com Target Milestone: --- Created attachment 46351 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=46351&action=edit source code which crashes When using the new json diagnostics output there is an internal compiler error due to a deprecated-copy warning. The original issue has been found in the Boost regex library, I have used creduce to create a minimal test case. It can be reproduced with GCC 9.1.0 and the attached code using this command line: $ g++ -Wdeprecated-copy -fdiagnostics-format=json deprecated-copy-crash.cc Internal compiler error: Error reporting routines re-entered. 0x7f49dce76e4a __libc_start_main ../csu/libc-start.c:308 The regular text output works as expected: $ g++ -Wdeprecated-copy -fdiagnostics-format=text deprecated-copy-crash.cc ... deprecated-copy-crash.cc: In instantiation of ‘void h< <template-parameter-1-1>, <template-parameter-1-2> >::o(const i*, const i*, unsigned int) [with i = char; <template-parameter-1-2> = int]’: deprecated-copy-crash.cc:22:5: required from ‘void b< <template-parameter-1-1> >::assign() [with i = char]’ deprecated-copy-crash.cc:28:12: required from ‘s<i, t>& s<i, <template-parameter-1-2> >::p(const i*, const i*, f::g) [with i = char; <template-parameter-1-2> = e<char>; f::g = int]’ deprecated-copy-crash.cc:45:77: required from here deprecated-copy-crash.cc:43:5: warning: implicitly-declared ‘constexpr G& G::operator=(const G&)’ is deprecated [-Wdeprecated-copy] 43 | a = r(); deprecated-copy-crash.cc:33:3: note: because ‘G’ has user-provided ‘G::G(G&)’ 33 | G(G &); | ^ ... Problem also seems to be reproducible on trunk: https://godbolt.org/z/5aT3K1