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.]