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: s...@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));