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

            Bug ID: 103373
           Summary: ICE in add_constraint, at cp/constraint.cc:1077
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Keywords: ice-on-invalid-code
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: asolokha at gmx dot com
  Target Milestone: ---

g++-12.0.0-alpha20211121 snapshot (g:da17c304e22ba256eba0b03710aa329115163b08)
ICEs when compiling the following testcase, reduced from
test/CXX/temp/temp.constr/temp.constr.normal/p1.cpp from the clang 13.0.0 test
suite, w/ -std=c++20:

template<typename T> concept True = true;
template<typename T> concept True2 = sizeof(T) >= 0;
template<typename T> concept Foo2 = True2<T*>;
template<typename T> concept Bar2 = Foo2<T&>;

namespace type_pack {
  template<typename... Args>
  concept C1 = ((sizeof(Args) >= 0) && ...);

  template<typename A, typename... B>
  concept C2 = C1<A, B...>;

  template<typename T>
  constexpr void foo() requires C2<T, char, T> { }

  template<typename T>
  constexpr void foo() requires C1<T, char, T> && true { }

  static_assert((foo<int>(), true));
}

namespace PR47174 {
template <Bar2 T, True U>
requires true struct S3;

template <True T, True U>
requires true struct S3<T, U>;
}

% g++-12.0.0 -std=c++20 -c cmqenks0.cpp
cmqenks0.cpp:27:22: error: forming pointer to reference type 'T&'
   27 | requires true struct S3<T, U>;
      |                      ^~~~~~~~
cmqenks0.cpp:27:22: internal compiler error: in add_constraint, at
cp/constraint.cc:1077
0x67e3d6 add_constraint
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20211121/work/gcc-12-20211121/gcc/cp/constraint.cc:1077
0x988ab2 add_constraint
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20211121/work/gcc-12-20211121/gcc/cp/constraint.cc:1070
0x988ab2 add_constraint
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20211121/work/gcc-12-20211121/gcc/cp/constraint.cc:1070
0x988b67 iterative_hash_constraint(tree_node*, unsigned int)
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20211121/work/gcc-12-20211121/gcc/cp/constraint.cc:1090
0xa2e2a1 subsumption_hasher::hash(subsumption_entry*)
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20211121/work/gcc-12-20211121/gcc/cp/logic.cc:737
0xa2e2a1 hash_table<subsumption_hasher, false,
xcallocator>::find(subsumption_entry* const&)
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20211121/work/gcc-12-20211121/gcc/hash-table.h:430
0xa2e2a1 lookup_subsumption
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20211121/work/gcc-12-20211121/gcc/cp/logic.cc:763
0xa2e2a1 subsumes_constraints_nonnull
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20211121/work/gcc-12-20211121/gcc/cp/logic.cc:795
0xa2e2a1 subsumes(tree_node*, tree_node*)
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20211121/work/gcc-12-20211121/gcc/cp/logic.cc:842
0x98cc7d strictly_subsumes(tree_node*, tree_node*)
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20211121/work/gcc-12-20211121/gcc/cp/constraint.cc:3488
0xb3e4db process_partial_specialization
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20211121/work/gcc-12-20211121/gcc/cp/pt.c:5131
0xb41265 push_template_decl(tree_node*, bool)
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20211121/work/gcc-12-20211121/gcc/cp/pt.c:5711
0xb41265 maybe_process_partial_specialization(tree_node*)
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20211121/work/gcc-12-20211121/gcc/cp/pt.c:1042
0x9e0ae0 shadow_tag(cp_decl_specifier_seq*)
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20211121/work/gcc-12-20211121/gcc/cp/decl.c:5409
0xae7883 cp_parser_single_declaration
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20211121/work/gcc-12-20211121/gcc/cp/parser.c:31538
0xae7ba5 cp_parser_template_declaration_after_parameters
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20211121/work/gcc-12-20211121/gcc/cp/parser.c:31162
0xae8450 cp_parser_explicit_template_declaration
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20211121/work/gcc-12-20211121/gcc/cp/parser.c:31428
0xaeaf21 cp_parser_declaration
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20211121/work/gcc-12-20211121/gcc/cp/parser.c:14786
0xaea4f9 cp_parser_toplevel_declaration
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20211121/work/gcc-12-20211121/gcc/cp/parser.c:14876
0xaea4f9 cp_parser_declaration_seq_opt
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20211121/work/gcc-12-20211121/gcc/cp/parser.c:14629

Reply via email to