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

Reply via email to