* [Bug c++/98899] ICE: Illegal instruction: 4 "error: could not convert '<unparsed>' from ''<invalid tree code>'" on macOS
2021-01-31 6:17 [Bug c++/98899] New: ICE: Illegal instruction: 4 "error: could not convert '<unparsed>' from ''<invalid tree code>'" on macOS akim.demaille at gmail dot com
@ 2021-01-31 6:20 ` akim.demaille at gmail dot com
2021-01-31 6:21 ` akim.demaille at gmail dot com
` (7 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: akim.demaille at gmail dot com @ 2021-01-31 6:20 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98899
--- Comment #1 from Akim Demaille <akim.demaille at gmail dot com> ---
Created attachment 50093
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=50093&action=edit
simple.cc
The source that causes the crash.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug c++/98899] ICE: Illegal instruction: 4 "error: could not convert '<unparsed>' from ''<invalid tree code>'" on macOS
2021-01-31 6:17 [Bug c++/98899] New: ICE: Illegal instruction: 4 "error: could not convert '<unparsed>' from ''<invalid tree code>'" on macOS akim.demaille at gmail dot com
2021-01-31 6:20 ` [Bug c++/98899] " akim.demaille at gmail dot com
@ 2021-01-31 6:21 ` akim.demaille at gmail dot com
2021-02-01 8:53 ` [Bug c++/98899] [10/11 Regression] ICE in tsubst_copy, at cp/pt.c:16198 since r10-1280-g78f7607db4c53f8c marxin at gcc dot gnu.org
` (6 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: akim.demaille at gmail dot com @ 2021-01-31 6:21 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98899
--- Comment #2 from Akim Demaille <akim.demaille at gmail dot com> ---
Created attachment 50094
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=50094&action=edit
simple.ii
simple.cc preprocessed
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug c++/98899] [10/11 Regression] ICE in tsubst_copy, at cp/pt.c:16198 since r10-1280-g78f7607db4c53f8c
2021-01-31 6:17 [Bug c++/98899] New: ICE: Illegal instruction: 4 "error: could not convert '<unparsed>' from ''<invalid tree code>'" on macOS akim.demaille at gmail dot com
2021-01-31 6:20 ` [Bug c++/98899] " akim.demaille at gmail dot com
2021-01-31 6:21 ` akim.demaille at gmail dot com
@ 2021-02-01 8:53 ` marxin at gcc dot gnu.org
2021-02-01 13:15 ` ppalka at gcc dot gnu.org
` (5 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: marxin at gcc dot gnu.org @ 2021-02-01 8:53 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98899
Martin Liška <marxin at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |10.3
Status|UNCONFIRMED |NEW
Summary|ICE: Illegal instruction: 4 |[10/11 Regression] ICE in
|"error: could not convert |tsubst_copy, at
|'<unparsed>' from |cp/pt.c:16198 since
|''<invalid tree code>'" on |r10-1280-g78f7607db4c53f8c
|macOS |
CC| |marxin at gcc dot gnu.org,
| |mpolacek at gcc dot gnu.org
Last reconfirmed| |2021-02-01
Keywords| |ice-on-valid-code
Ever confirmed|0 |1
Known to work| |9.3.0
Known to fail| |10.2.0, 11.0
--- Comment #3 from Martin Liška <marxin at gcc dot gnu.org> ---
Thank you for the bug report.
Reduce test-case:
$ cat pr98899.ii
template <int __v> struct integral_constant {
static constexpr int value = __v;
};
template <typename> struct conditional;
template <typename...> struct __and_;
template <typename _B1, typename _B2>
struct __and_<_B1, _B2> : conditional<_B1>::type {};
template <typename...>
struct __is_nt_constructible_impl : integral_constant<0> {};
template <typename... _Args>
struct is_nothrow_constructible
: __and_<int, __is_nt_constructible_impl<_Args...>> {};
template <typename> struct conditional {
typedef __is_nt_constructible_impl<> type;
};
class locale {
struct token {
enum {} typedef yytokentype;
};
template <typename Base> struct basic_symbol {
basic_symbol(typename Base::kind_type,
int) noexcept(is_nothrow_constructible<>::value);
};
struct by_kind {
typedef token::yytokentype kind_type;
};
struct symbol_type : basic_symbol<by_kind> {
int symbol_type_v;
symbol_type() : basic_symbol(token::yytokentype(), symbol_type_v) {}
};
};
$ g++ pr98899.ii -c -Werror
pr98899.ii: In instantiation of
‘locale::basic_symbol<Base>::basic_symbol(typename Base::kind_type, int) [with
Base = locale::by_kind; typename Base::kind_type =
locale::token::yytokentype]’:
pr98899.ii:29:69: required from here
pr98899.ii:21:5: internal compiler error: in tsubst_copy, at cp/pt.c:17205
21 | basic_symbol(typename Base::kind_type,
| ^~~~~~~~~~~~
0x6e0e47 tsubst_copy
/home/marxin/Programming/gcc/gcc/cp/pt.c:17205
0xb24f7e tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
/home/marxin/Programming/gcc/gcc/cp/pt.c:20789
0xb28755 maybe_instantiate_noexcept(tree_node*, int)
/home/marxin/Programming/gcc/gcc/cp/pt.c:25592
0xb2833c maybe_instantiate_noexcept(tree_node*, int)
/home/marxin/Programming/gcc/gcc/cp/pt.c:25535
0xa194ca mark_used(tree_node*, int)
/home/marxin/Programming/gcc/gcc/cp/decl2.c:5610
0x9623a5 build_over_call
/home/marxin/Programming/gcc/gcc/cp/call.c:9351
0x95f722 build_new_method_call_1
/home/marxin/Programming/gcc/gcc/cp/call.c:10637
0x95f722 build_new_method_call(tree_node*, tree_node*, vec<tree_node*, va_gc,
vl_embed>**, tree_node*, int, tree_node**, int)
/home/marxin/Programming/gcc/gcc/cp/call.c:10712
0x960a86 build_special_member_call(tree_node*, tree_node*, vec<tree_node*,
va_gc, vl_embed>**, tree_node*, int, int)
/home/marxin/Programming/gcc/gcc/cp/call.c:10113
0xa385ca expand_default_init
/home/marxin/Programming/gcc/gcc/cp/init.c:1983
0xa385ca expand_aggr_init_1
/home/marxin/Programming/gcc/gcc/cp/init.c:2098
0xa3fb1b emit_mem_initializers(tree_node*)
/home/marxin/Programming/gcc/gcc/cp/init.c:1354
0xaf39b9 cp_parser_mem_initializer_list
/home/marxin/Programming/gcc/gcc/cp/parser.c:15907
0xaf39b9 cp_parser_ctor_initializer_opt
/home/marxin/Programming/gcc/gcc/cp/parser.c:15815
0xaf39b9 cp_parser_ctor_initializer_opt_and_function_body
/home/marxin/Programming/gcc/gcc/cp/parser.c:24027
0xaf511a cp_parser_function_definition_after_declarator
/home/marxin/Programming/gcc/gcc/cp/parser.c:29938
0xaf5624 cp_parser_late_parsing_for_member
/home/marxin/Programming/gcc/gcc/cp/parser.c:30845
0xacea63 cp_parser_class_specifier_1
/home/marxin/Programming/gcc/gcc/cp/parser.c:25104
0xacfa7b cp_parser_class_specifier
/home/marxin/Programming/gcc/gcc/cp/parser.c:25128
0xacfa7b cp_parser_type_specifier
/home/marxin/Programming/gcc/gcc/cp/parser.c:18381
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug c++/98899] [10/11 Regression] ICE in tsubst_copy, at cp/pt.c:16198 since r10-1280-g78f7607db4c53f8c
2021-01-31 6:17 [Bug c++/98899] New: ICE: Illegal instruction: 4 "error: could not convert '<unparsed>' from ''<invalid tree code>'" on macOS akim.demaille at gmail dot com
` (2 preceding siblings ...)
2021-02-01 8:53 ` [Bug c++/98899] [10/11 Regression] ICE in tsubst_copy, at cp/pt.c:16198 since r10-1280-g78f7607db4c53f8c marxin at gcc dot gnu.org
@ 2021-02-01 13:15 ` ppalka at gcc dot gnu.org
2021-02-01 13:28 ` mpolacek at gcc dot gnu.org
` (4 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: ppalka at gcc dot gnu.org @ 2021-02-01 13:15 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98899
Patrick Palka <ppalka at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |ppalka at gcc dot gnu.org
--- Comment #4 from Patrick Palka <ppalka at gcc dot gnu.org> ---
FWIW, here's a more minimal testcase:
template <int __v> struct integral_constant {
static constexpr int value = __v;
};
struct _Bit_iterator_base {
template <class> struct basic_symbol {
basic_symbol() noexcept(integral_constant<false>::value);
};
struct symbol_type : basic_symbol<int> {
symbol_type() : basic_symbol() {}
};
};
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug c++/98899] [10/11 Regression] ICE in tsubst_copy, at cp/pt.c:16198 since r10-1280-g78f7607db4c53f8c
2021-01-31 6:17 [Bug c++/98899] New: ICE: Illegal instruction: 4 "error: could not convert '<unparsed>' from ''<invalid tree code>'" on macOS akim.demaille at gmail dot com
` (3 preceding siblings ...)
2021-02-01 13:15 ` ppalka at gcc dot gnu.org
@ 2021-02-01 13:28 ` mpolacek at gcc dot gnu.org
2021-02-03 15:17 ` cvs-commit at gcc dot gnu.org
` (3 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2021-02-01 13:28 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98899
Marek Polacek <mpolacek at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Priority|P3 |P2
Assignee|unassigned at gcc dot gnu.org |mpolacek at gcc dot gnu.org
Status|NEW |ASSIGNED
--- Comment #5 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Mine.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug c++/98899] [10/11 Regression] ICE in tsubst_copy, at cp/pt.c:16198 since r10-1280-g78f7607db4c53f8c
2021-01-31 6:17 [Bug c++/98899] New: ICE: Illegal instruction: 4 "error: could not convert '<unparsed>' from ''<invalid tree code>'" on macOS akim.demaille at gmail dot com
` (4 preceding siblings ...)
2021-02-01 13:28 ` mpolacek at gcc dot gnu.org
@ 2021-02-03 15:17 ` cvs-commit at gcc dot gnu.org
2021-02-03 15:22 ` [Bug c++/98899] [10 " mpolacek at gcc dot gnu.org
` (2 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2021-02-03 15:17 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98899
--- Comment #6 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Marek Polacek <mpolacek@gcc.gnu.org>:
https://gcc.gnu.org/g:25fdd0d6df44044a8b505e6fcd07270e2e279b06
commit r11-7065-g25fdd0d6df44044a8b505e6fcd07270e2e279b06
Author: Marek Polacek <polacek@redhat.com>
Date: Mon Feb 1 23:30:05 2021 -0500
c++: ICE with late parsing of noexcept in nested class [PR98899]
Here we crash with a noexcept-specifier in a nested template class,
because my handling of such deferred-parse noexcept-specifiers was
gronked when we need to instantiate a DEFERRED_PARSE before it was
actually parsed at the end of the outermost class.
In
struct S {
template<class> struct B {
B() noexcept(noexcept(x));
int x;
};
struct A : B<int> {
A() : B() {}
};
};
we call complete_type for B<int> which triggers tsubsting S::B<int>::B()
whose noexcept-specifier still contains a DEFERRED_PARSE. The trick is
to stash such noexcept-specifiers into DEFPARSE_INSTANTIATIONS so that
we can replace it later when we've finally parsed all deferred
noexcept-specifiers.
In passing, fix missing usage of UNPARSED_NOEXCEPT_SPEC_P.
gcc/cp/ChangeLog:
PR c++/98899
* parser.c (cp_parser_class_specifier_1): Use any possible
DEFPARSE_INSTANTIATIONS to update DEFERRED_NOEXCEPT_PATTERN.
(cp_parser_save_noexcept): Initialize DEFPARSE_INSTANTIATIONS.
* pt.c (tsubst_exception_specification): Stash new_specs into
DEFPARSE_INSTANTIATIONS.
* tree.c (fixup_deferred_exception_variants): Use
UNPARSED_NOEXCEPT_SPEC_P.
gcc/testsuite/ChangeLog:
PR c++/98899
* g++.dg/cpp0x/noexcept65.C: New test.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug c++/98899] [10 Regression] ICE in tsubst_copy, at cp/pt.c:16198 since r10-1280-g78f7607db4c53f8c
2021-01-31 6:17 [Bug c++/98899] New: ICE: Illegal instruction: 4 "error: could not convert '<unparsed>' from ''<invalid tree code>'" on macOS akim.demaille at gmail dot com
` (5 preceding siblings ...)
2021-02-03 15:17 ` cvs-commit at gcc dot gnu.org
@ 2021-02-03 15:22 ` mpolacek at gcc dot gnu.org
2021-04-08 12:02 ` rguenth at gcc dot gnu.org
2021-04-09 22:57 ` mpolacek at gcc dot gnu.org
8 siblings, 0 replies; 10+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2021-02-03 15:22 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98899
Marek Polacek <mpolacek at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Summary|[10/11 Regression] ICE in |[10 Regression] ICE in
|tsubst_copy, at |tsubst_copy, at
|cp/pt.c:16198 since |cp/pt.c:16198 since
|r10-1280-g78f7607db4c53f8c |r10-1280-g78f7607db4c53f8c
--- Comment #7 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Fixed on trunk so far.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug c++/98899] [10 Regression] ICE in tsubst_copy, at cp/pt.c:16198 since r10-1280-g78f7607db4c53f8c
2021-01-31 6:17 [Bug c++/98899] New: ICE: Illegal instruction: 4 "error: could not convert '<unparsed>' from ''<invalid tree code>'" on macOS akim.demaille at gmail dot com
` (6 preceding siblings ...)
2021-02-03 15:22 ` [Bug c++/98899] [10 " mpolacek at gcc dot gnu.org
@ 2021-04-08 12:02 ` rguenth at gcc dot gnu.org
2021-04-09 22:57 ` mpolacek at gcc dot gnu.org
8 siblings, 0 replies; 10+ messages in thread
From: rguenth at gcc dot gnu.org @ 2021-04-08 12:02 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98899
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|10.3 |10.4
--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> ---
GCC 10.3 is being released, retargeting bugs to GCC 10.4.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug c++/98899] [10 Regression] ICE in tsubst_copy, at cp/pt.c:16198 since r10-1280-g78f7607db4c53f8c
2021-01-31 6:17 [Bug c++/98899] New: ICE: Illegal instruction: 4 "error: could not convert '<unparsed>' from ''<invalid tree code>'" on macOS akim.demaille at gmail dot com
` (7 preceding siblings ...)
2021-04-08 12:02 ` rguenth at gcc dot gnu.org
@ 2021-04-09 22:57 ` mpolacek at gcc dot gnu.org
8 siblings, 0 replies; 10+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2021-04-09 22:57 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98899
Marek Polacek <mpolacek at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|--- |FIXED
Status|ASSIGNED |RESOLVED
--- Comment #9 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Not backporting to GCC 10.4 since it depends on another patch.
^ permalink raw reply [flat|nested] 10+ messages in thread