[Bug c++/84330] New: [6/7/8 Regression] [concepts] ICE with broken constraint
reichelt at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Feb 12 13:06:00 GMT 2018
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.]
More information about the Gcc-bugs
mailing list