https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84330

            Bug ID: 84330
           Summary: [6/7/8 Regression] [concepts] ICE with broken
                    constraint
           Product: gcc
           Version: 8.0
            Status: UNCONFIRMED
          Keywords: error-recovery, ice-on-invalid-code
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: reichelt at gcc dot gnu.org
  Target Milestone: ---

The following invalid code snippet (compiled with "-fconcepts")
triggers an ICE since GCC 6.2.0:

==========================================================
struct A
{
  template<typename T> requires sizeof(T) >> 0 void foo(T);

  void bar()
  {
    foo(0);
  }
};
==========================================================

bug.cc:3:43: error: predicate constraint '(sizeof (T) >> 0)' does not have type
'bool'
   template<typename T> requires sizeof(T) >> 0 void foo(T);
                                       ~~~~^~~~
bug.cc: In substitution of 'template<class T>  requires  <erroneous-expression>
void A::foo(T) [with T = int]':
bug.cc:7:10:   required from here
bug.cc:3:53: internal compiler error: in tsubst_constraint, at
cp/constraint.cc:1957
   template<typename T> requires sizeof(T) >> 0 void foo(T);
                                                     ^~~
0x85e55b tsubst_constraint(tree_node*, tree_node*, int, tree_node*)
        ../../gcc-6.2.0/gcc/cp/constraint.cc:1957
0x85ec33 tsubst_constraint_info(tree_node*, tree_node*, int, tree_node*)
        ../../gcc-6.2.0/gcc/cp/constraint.cc:1919
0x69dc60 tsubst_decl
        ../../gcc-6.2.0/gcc/cp/pt.c:11934
0x694057 tsubst(tree_node*, tree_node*, int, tree_node*)
        ../../gcc-6.2.0/gcc/cp/pt.c:12874
0x6aca5d instantiate_template_1
        ../../gcc-6.2.0/gcc/cp/pt.c:17475
0x6aca5d instantiate_template(tree_node*, tree_node*, int)
        ../../gcc-6.2.0/gcc/cp/pt.c:17526
0x6bd896 fn_type_unification(tree_node*, tree_node*, tree_node*, tree_node*
const*, unsigned int, tree_node*, unification_kind_t, int, bool, bool)
        ../../gcc-6.2.0/gcc/cp/pt.c:17885
0x62465f add_template_candidate_real
        ../../gcc-6.2.0/gcc/cp/call.c:3089
0x6253dc add_template_candidate
        ../../gcc-6.2.0/gcc/cp/call.c:3171
0x6253dc add_candidates
        ../../gcc-6.2.0/gcc/cp/call.c:5353
0x625c0d build_new_method_call_1
        ../../gcc-6.2.0/gcc/cp/call.c:8304
0x625c0d build_new_method_call(tree_node*, tree_node*, vec<tree_node*, va_gc,
vl_embed>**, tree_node*, int, tree_node**, int)
        ../../gcc-6.2.0/gcc/cp/call.c:8500
0x739299 cp_parser_postfix_expression
        ../../gcc-6.2.0/gcc/cp/parser.c:6875
0x736d8c cp_parser_unary_expression
        ../../gcc-6.2.0/gcc/cp/parser.c:7988
0x740d57 cp_parser_cast_expression
        ../../gcc-6.2.0/gcc/cp/parser.c:8665
0x7412ed cp_parser_binary_expression
        ../../gcc-6.2.0/gcc/cp/parser.c:8766
0x741bb0 cp_parser_assignment_expression
        ../../gcc-6.2.0/gcc/cp/parser.c:9053
0x74453a cp_parser_expression
        ../../gcc-6.2.0/gcc/cp/parser.c:9222
0x744ae3 cp_parser_expression_statement
        ../../gcc-6.2.0/gcc/cp/parser.c:10685
0x753eaa cp_parser_statement
        ../../gcc-6.2.0/gcc/cp/parser.c:10536
Please submit a full bug report, [etc.]

Reply via email to