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

            Bug ID: 85113
           Summary: [7/8 Regression] ICE with __builtin_constant_p
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code, rejects-valid
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: reichelt at gcc dot gnu.org
  Target Milestone: ---

The following valid code snippet triggers an ICE on trunk:

=======================================
template<bool> struct A {};

constexpr int foo()
{
  A<__builtin_constant_p(0)> a{};
  return 0;
}
=======================================

bug.cc: In function 'constexpr int foo()':
bug.cc:5:28: internal compiler error: in coerce_template_parms, at cp/pt.c:8502
   A<__builtin_constant_p(0)> a{};
                            ^
0x64a25b coerce_template_parms
        ../../gcc/gcc/cp/pt.c:8502
0x97b406 lookup_template_class_1
        ../../gcc/gcc/cp/pt.c:9016
0x97b406 lookup_template_class(tree_node*, tree_node*, tree_node*, tree_node*,
int, int)
        ../../gcc/gcc/cp/pt.c:9365
0x9abdfd finish_template_type(tree_node*, tree_node*, int)
        ../../gcc/gcc/cp/semantics.c:3227
0x928364 cp_parser_template_id
        ../../gcc/gcc/cp/parser.c:15852
0x92846e cp_parser_class_name
        ../../gcc/gcc/cp/parser.c:22383
0x93521f cp_parser_qualifying_entity
        ../../gcc/gcc/cp/parser.c:6580
0x93521f cp_parser_nested_name_specifier_opt
        ../../gcc/gcc/cp/parser.c:6266
0x936c35 cp_parser_simple_type_specifier
        ../../gcc/gcc/cp/parser.c:17179
0x930ce5 cp_parser_type_specifier
        ../../gcc/gcc/cp/parser.c:16852
0x93e096 cp_parser_decl_specifier_seq
        ../../gcc/gcc/cp/parser.c:13627
0x943790 cp_parser_simple_declaration
        ../../gcc/gcc/cp/parser.c:12937
0x944738 cp_parser_block_declaration
        ../../gcc/gcc/cp/parser.c:12884
0x945169 cp_parser_declaration_statement
        ../../gcc/gcc/cp/parser.c:12478
0x9236d3 cp_parser_statement
        ../../gcc/gcc/cp/parser.c:10927
0x924640 cp_parser_statement_seq_opt
        ../../gcc/gcc/cp/parser.c:11276
0x924717 cp_parser_compound_statement
        ../../gcc/gcc/cp/parser.c:11230
0x93b230 cp_parser_function_body
        ../../gcc/gcc/cp/parser.c:21789
0x93b230 cp_parser_ctor_initializer_opt_and_function_body
        ../../gcc/gcc/cp/parser.c:21826
0x93bae0 cp_parser_function_definition_after_declarator
        ../../gcc/gcc/cp/parser.c:26847
Please submit a full bug report, [etc.]

The regression was introduced between 2018-03-17 and 2018-03-20.

In addition the code is rejected on the GCC 7 branch (7.3.1)
while it was still accepted in GCC 7.3.0.

Reply via email to