https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92439
Bug ID: 92439 Summary: [10, concepts] trunk crashes on constraint satisfaction failure Product: gcc Version: tree-ssa Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: dimitri.gorokhovik at free dot fr Target Milestone: --- Created attachment 47205 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=47205&action=edit Code sample reproducing teh crash g++ (GCC) 10.0.0 20191110 (experimental) ~/gcc-trunk/dist/bin/g++ -std=c++2a -c bug.cpp bug.cpp:60:70: error: template constraint failure for ‘template<class ... Ts> requires ((... && Bitf<Ts>)) && (dont_overlap<Ts ...>) struct encoding’ 60 | using b = encoding <bf <7, 9>, bf <5, 2>, list <bf <3, 2>, bf <0, 3>>>; | ^ bug.cpp:60:70: note: constraints not satisfied bug.cpp:58:61: required by the constraints of ‘template<class ... Ts> requires ((... && Bitf<Ts>)) && (dont_overlap<Ts ...>) struct encoding’ bug.cpp:60:70: error: concept satisfaction failed g++: internal compiler error: Segmentation fault signal terminated program cc1plus Program received signal SIGSEGV, Segmentation fault. satisfy_constraint_r(tree_node*, tree_node*, subst_info) [clone .isra.0] () at ../../srcdir/gcc/tree.h:3271 3271 if (TREE_CODE (__t) != __c) (gdb) bt #0 satisfy_constraint_r(tree_node*, tree_node*, subst_info) [clone .isra.0] () at ../../srcdir/gcc/tree.h:3271 #1 0x000000000089659c in satisfy_constraint (t=0x7ffff70d07f8, args=0x7ffff70ddbc0, info=..., info=...) at ../../srcdir/gcc/cp/constraint.cc:2554 #2 0x0000000000896f30 in satisfy_constraint_expression(tree_node*, tree_node*, subst_info) [clone .isra.0] () at ../../srcdir/gcc/cp/constraint.cc:2592 #3 0x000000000089749b in evaluate_concept_check(tree_node*, int) () at ../../srcdir/gcc/cp/constraint.cc:2735 #4 0x000000000099e171 in tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) [clone .part.0] () at ../../srcdir/gcc/cp/pt.c:18848 #5 0x00000000009a5899 in tsubst_copy_and_build (integral_constant_expression_p=false, function_p=false, in_decl=0x7ffff70cd580, complain=3, args=<optimized out>, t=0x7ffff70cbf78) at ../../srcdir/gcc/cp/pt.c:18752 #6 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) [clone .part.0] () at ../../srcdir/gcc/cp/pt.c:18410 #7 0x00000000009adc2b in tsubst_expr (integral_constant_expression_p=false, in_decl=0x7ffff70cd580, complain=3, args=0x7ffff70ddae0, t=0x7ffff70cbf78) at ../../srcdir/gcc/cp/pt.c:17497 #8 gen_elem_of_pack_expansion_instantiation (in_decl=<optimized out>, complain=<optimized out>, args=<optimized out>, index=<optimized out>, parm_packs=<optimized out>, pattern=<optimized out>) at ../../srcdir/gcc/cp/pt.c:12213 #9 tsubst_pack_expansion(tree_node*, tree_node*, int, tree_node*) () at ../../srcdir/gcc/cp/pt.c:12842 #10 0x00000000009b29b9 in tsubst_fold_expr_pack (in_decl=0x7ffff70cd580, complain=3, args=0x7ffff70dd700, t=0x7ffff70d0000) at ../../srcdir/gcc/tree.h:3337 #11 tsubst_unary_left_fold (in_decl=0x7ffff70cd580, complain=3, args=0x7ffff70dd700, t=0x7ffff70d0000) at ../../srcdir/gcc/cp/pt.c:12329 #12 tsubst_copy(tree_node*, tree_node*, int, tree_node*) () at ../../srcdir/gcc/cp/pt.c:16643 #13 0x000000000099d551 in tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) [clone .part.0] () at ../../srcdir/gcc/cp/pt.c:20154 #14 0x00000000009a5899 in tsubst_copy_and_build (integral_constant_expression_p=false, function_p=false, in_decl=0x7ffff70cd580, complain=3, args=<optimized out>, t=0x7ffff70d0000) at ../../srcdir/gcc/cp/pt.c:18752 #15 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) [clone .part.0] () at ../../srcdir/gcc/cp/pt.c:18410 #16 0x00000000009ac157 in tsubst_expr (t=t@entry=0x7ffff70d0000, args=args@entry=0x7ffff70dd700, complain=complain@entry=3, in_decl=in_decl@entry=0x7ffff70cd580, integral_constant_expression_p=integral_constant_expression_p@entry=false) at ../../srcdir/gcc/cp/pt.c:17497 #17 0x0000000000895d34 in satisfy_constraint_r(tree_node*, tree_node*, subst_info) [clone .isra.0] () at ../../srcdir/gcc/cp/constraint.cc:2480 #18 0x00000000008959a3 in satisfy_constraint_r(tree_node*, tree_node*, subst_info) [clone .isra.0] () at ../../srcdir/gcc/cp/constraint.cc:2530 #19 0x000000000089659c in satisfy_constraint (t=t@entry=0x7ffff70e12d0, args=args@entry=0x7ffff70c8fc0, info=..., info=...) at ../../srcdir/gcc/cp/constraint.cc:2554 #20 0x000000000089737b in satisfy_associated_constraints (info=..., info=..., args=0x7ffff70c8fc0, t=0x7ffff70e12d0) at ../../srcdir/gcc/cp/constraint.cc:2572 #21 constraints_satisfied_p(tree_node*, tree_node*, subst_info) [clone .constprop.0] () at ../../srcdir/gcc/cp/constraint.cc:2698 #22 0x0000000000897d27 in diagnose_constraints (loc=<optimized out>, t=t@entry=0x7ffff70cd580, args=args@entry=0x7ffff70c8fc0) at ../../srcdir/gcc/cp/constraint.cc:3306 #23 0x00000000009b7d26 in lookup_template_class_1(tree_node*, tree_node*, tree_node*, tree_node*, int, int) () at ../../srcdir/gcc/cp/pt.c:9664 #24 0x00000000009b937d in lookup_template_class (d1=0x7ffff70cd580, arglist=0x7ffff70bae70, in_decl=in_decl@entry=0x0, context=context@entry=0x0, entering_scope=entering_scope@entry=0, complain=complain@entry=35) at ../../srcdir/gcc/cp/pt.c:9985 #25 0x00000000009e683c in finish_template_type(tree_node*, tree_node*, int) () at ../../srcdir/gcc/cp/semantics.c:3396 #26 0x000000000096ddee in cp_parser_template_id(cp_parser*, bool, bool, tag_types, bool) () at ../../srcdir/gcc/cp/parser.c:16598 #27 0x000000000096dfcb in cp_parser_class_name(cp_parser*, bool, bool, tag_types, bool, bool, bool, bool) () at ../../srcdir/gcc/cp/parser.c:23482 #28 0x000000000096a5d2 in cp_parser_qualifying_entity (is_declaration=false, type_p=false, check_dependency_p=true, template_keyword_p=false, typename_keyword_p=false, parser=0x7ffff6f938e8) at ../../srcdir/gcc/cp/parser.c:6717 #29 cp_parser_nested_name_specifier_opt(cp_parser*, bool, bool, bool, bool, bool) () at ../../srcdir/gcc/cp/parser.c:6400 #30 0x00000000009721d0 in cp_parser_simple_type_specifier(cp_parser*, cp_decl_specifier_seq*, int) () at ../../srcdir/gcc/cp/parser.c:17983 #31 0x0000000000958eca in cp_parser_type_specifier(cp_parser*, int, cp_decl_specifier_seq*, bool, int*, bool*) () at ../../srcdir/gcc/cp/parser.c:17642 #32 0x000000000096c575 in cp_parser_type_specifier_seq (parser=parser@entry=0x7ffff6f938e8, flags=33, flags@entry=32, is_declaration=is_declaration@entry=false, is_trailing_return=is_trailing_return@entry=false, type_specifier_seq=type_specifier_seq@entry=0x7fffffffdb80) at ../../srcdir/gcc/cp/parser.c:22189 #33 0x0000000000965d95 in cp_parser_type_id_1(cp_parser*, int, bool, bool, unsigned int*) () at ../../srcdir/gcc/cp/parser.c:22018 #34 0x0000000000966df9 in cp_parser_type_id (type_location=0x7fffffffdc64, flags=32, parser=0x7ffff6f938e8) at ../../srcdir/gcc/cp/parser.c:22097 #35 cp_parser_alias_declaration(cp_parser*) () at ../../srcdir/gcc/cp/parser.c:19837 #36 0x00000000009819bb in cp_parser_declaration(cp_parser*) () at ../../srcdir/gcc/cp/parser.c:13322 #37 0x0000000000982033 in cp_parser_translation_unit (parser=0x7ffff6f938e8) at ../../srcdir/gcc/cp/parser.c:4721 #38 c_parse_file() () at ../../srcdir/gcc/cp/parser.c:42900 #39 0x0000000000a8590c in c_common_parse_file () at ../../srcdir/gcc/c-family/c-opts.c:1183 #40 0x0000000000f05d54 in compile_file () at ../../srcdir/gcc/toplev.c:459 #41 0x000000000083f661 in do_compile () at ../../srcdir/gcc/toplev.c:2284 #42 toplev::main(int, char**) () at ../../srcdir/gcc/toplev.c:2419 #43 0x00000000008431ef in main (argc=2, argv=0x7fffffffdf78) at ../../srcdir/gcc/main.c:39