[Bug c++/88385] New: [9 regression] ICE in tsubst_pack_expansion
sss@li-snyder.org
gcc-bugzilla@gcc.gnu.org
Thu Dec 6 02:29:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88385
Bug ID: 88385
Summary: [9 regression] ICE in tsubst_pack_expansion
Product: gcc
Version: 9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: sss@li-snyder.org
Target Milestone: ---
hi -
gcc 20181205 gets an ICE compiling this code. (8.2.1 compiles it without
error.)
thanks,
sss
--------------------------------------------------------------
template <class X1, class X2>
struct xtest
{
static const bool value = true;
};
template<typename... Ts>
struct compressed_tuple_
{
template<typename... Args>
constexpr compressed_tuple_(Args &&... args)
noexcept(xtest<xtest<Ts, Args>... >::value)
;
};
struct adaptor_cursor_t : public compressed_tuple_<int, int>
{
using compressed_tuple_<int, int>::compressed_tuple_;
};
struct tadap
{
static constexpr adaptor_cursor_t begin_cursor_()
noexcept(noexcept(adaptor_cursor_t{ 41, 42 })) ;
};
----------------------------------------------------------------------
$ ~/gcc/build/gcc/cc1plus -quiet -D_GNU_SOURCE x.cc -std=c++17 -version -o x.s
GNU C++17 (GCC) version 9.0.0 20181205 (experimental) (x86_64-pc-linux-gnu)
compiled by GNU C version 9.0.0 20181205 (experimental), GMP version
6.1.2, MPFR version 3.1.6-p2, MPC version 1.0.2, isl version isl-0.16.1-GMP
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU C++17 (GCC) version 9.0.0 20181205 (experimental) (x86_64-pc-linux-gnu)
compiled by GNU C version 9.0.0 20181205 (experimental), GMP version
6.1.2, MPFR version 3.1.6-p2, MPC version 1.0.2, isl version isl-0.16.1-GMP
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: f55eeb31a29ad4100f3c306670176e86
x.cc: In instantiation of ‘constexpr adaptor_cursor_t::adaptor_cursor_t(Args&&
...) [with Args = {int, int}][inherited from compressed_tuple_<int, int>]’:
x.cc:17:8: required from ‘constexpr adaptor_cursor_t::adaptor_cursor_t(Args&&
...) [with Args = {int, int}][inherited from compressed_tuple_<int, int>]’
x.cc:26:50: required from here
x.cc:17:8: internal compiler error: in tsubst_pack_expansion, at cp/pt.c:12213
17 | struct adaptor_cursor_t : public compressed_tuple_<int, int>
| ^~~~~~~~~~~~~~~~
0x6ed024 tsubst_pack_expansion(tree_node*, tree_node*, int, tree_node*)
/home/sss/gcc/gcc/gcc/cp/pt.c:12213
0x6ed905 tsubst_template_args
/home/sss/gcc/gcc/gcc/cp/pt.c:12446
0x6ee1c1 tsubst_aggr_type
/home/sss/gcc/gcc/gcc/cp/pt.c:12672
0x6f2c0d tsubst(tree_node*, tree_node*, int, tree_node*)
/home/sss/gcc/gcc/gcc/cp/pt.c:14324
0x6f4e31 tsubst_qualified_id
/home/sss/gcc/gcc/gcc/cp/pt.c:15215
0x6fec27 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
/home/sss/gcc/gcc/gcc/cp/pt.c:18357
0x70c954 maybe_instantiate_noexcept(tree_node*, int)
/home/sss/gcc/gcc/gcc/cp/pt.c:24007
0x64051c start_preparsed_function(tree_node*, tree_node*, int)
/home/sss/gcc/gcc/gcc/cp/decl.c:15454
0x686818 synthesize_method(tree_node*)
/home/sss/gcc/gcc/gcc/cp/method.c:914
0x70da8c instantiate_decl(tree_node*, bool, bool)
/home/sss/gcc/gcc/gcc/cp/pt.c:24408
0x61735b instantiate_cx_fn_r
/home/sss/gcc/gcc/gcc/cp/constexpr.c:4953
0xde35c8 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*, tree_node*
(*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*,
hash_set<tree_node*, default_hash_traits<tree_node*> >*))
/home/sss/gcc/gcc/gcc/tree.c:11924
0xde38dc walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*, tree_node*
(*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*,
hash_set<tree_node*, default_hash_traits<tree_node*> >*))
/home/sss/gcc/gcc/gcc/tree.c:12246
0xde3250 walk_tree_without_duplicates_1(tree_node**, tree_node*
(*)(tree_node**, int*, void*), void*, tree_node* (*)(tree_node**, int*,
tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*,
default_hash_traits<tree_node*> >*))
/home/sss/gcc/gcc/gcc/tree.c:12272
0x61ea2e instantiate_constexpr_fns
/home/sss/gcc/gcc/gcc/cp/constexpr.c:4972
0x61ea2e is_sub_constant_expr(tree_node*)
/home/sss/gcc/gcc/gcc/cp/constexpr.c:5140
0x668a27 check_noexcept_r
/home/sss/gcc/gcc/gcc/cp/except.c:1041
0xde35c8 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*, tree_node*
(*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*,
hash_set<tree_node*, default_hash_traits<tree_node*> >*))
/home/sss/gcc/gcc/gcc/tree.c:11924
0xde3a46 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*, tree_node*
(*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*,
hash_set<tree_node*, default_hash_traits<tree_node*> >*))
/home/sss/gcc/gcc/gcc/tree.c:12156
0xde3250 walk_tree_without_duplicates_1(tree_node**, tree_node*
(*)(tree_node**, int*, void*), void*, tree_node* (*)(tree_node**, int*,
tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*,
default_hash_traits<tree_node*> >*))
/home/sss/gcc/gcc/gcc/tree.c:12272
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.
-------------------------------------------------------------------------
Abort comes from this line in tsubst_pack_expansion:
/* We can't substitute for this parameter pack. We use a flag as
well as the missing_level counter because function parameter
packs don't have a level. */
gcc_assert (processing_template_decl || is_auto (parm_pack));
More information about the Gcc-bugs
mailing list