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

            Bug ID: 103078
           Summary: ICE canonical types differ for identical types since
                    r12-1822-gf9c80eb12c58126a
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: marxin at gcc dot gnu.org
                CC: polacek at redhat dot com
  Target Milestone: ---

Seen when building LLVM with GCC master:

$ cat barrier.ii
template <typename> struct __noexcept_move_assign_container;
template <class _Allocator> struct basic_string {
  basic_string &operator=(basic_string &&) noexcept(
      __noexcept_move_assign_container<_Allocator>::value);
  basic_string &assign(basic_string &&) noexcept(
      __noexcept_move_assign_container<_Allocator>::value);
};
template <class _Allocator>
basic_string<_Allocator> &
basic_string<_Allocator>::operator=(basic_string &&) noexcept(
    __noexcept_move_assign_container<_Allocator>::value) {}

$ g++ barrier.ii -c -std=c++2a
barrier.ii:11:56: internal compiler error: canonical types differ for identical
types ‘basic_string<_Allocator>&
(basic_string<_Allocator>::)(basic_string<_Allocator>&&) noexcept
(__noexcept_move_assign_container<_Allocator>::value)’ and
‘basic_string<_Allocator>&
(basic_string<_Allocator>::)(basic_string<_Allocator>&&) noexcept
(__noexcept_move_assign_container<_Allocator>::value)’
   11 |     __noexcept_move_assign_container<_Allocator>::value) {}
      |                                                        ^
0xc2c9b1 comptypes(tree_node*, tree_node*, int)
        /home/marxin/Programming/gcc/gcc/cp/typeck.c:1558
0xa5abff duplicate_decls(tree_node*, tree_node*, bool, bool)
        /home/marxin/Programming/gcc/gcc/cp/decl.c:2406
0xa63362 grokfndecl
        /home/marxin/Programming/gcc/gcc/cp/decl.c:10368
0xa69ecb grokdeclarator(cp_declarator const*, cp_decl_specifier_seq*,
decl_context, int, tree_node**)
        /home/marxin/Programming/gcc/gcc/cp/decl.c:14147
0xa6cb9a start_function(cp_decl_specifier_seq*, cp_declarator const*,
tree_node*)
        /home/marxin/Programming/gcc/gcc/cp/decl.c:17164
0xb6cf6f cp_parser_function_definition_from_specifiers_and_declarator
        /home/marxin/Programming/gcc/gcc/cp/parser.c:30969
0xb6cf6f cp_parser_init_declarator
        /home/marxin/Programming/gcc/gcc/cp/parser.c:22450
0xb75014 cp_parser_single_declaration
        /home/marxin/Programming/gcc/gcc/cp/parser.c:31600
0xb751a1 cp_parser_template_declaration_after_parameters
        /home/marxin/Programming/gcc/gcc/cp/parser.c:31165
0xb759cc cp_parser_explicit_template_declaration
        /home/marxin/Programming/gcc/gcc/cp/parser.c:31431
0xb784ed cp_parser_declaration
        /home/marxin/Programming/gcc/gcc/cp/parser.c:14773
0xb7906b cp_parser_toplevel_declaration
        /home/marxin/Programming/gcc/gcc/cp/parser.c:14863
0xb7906b cp_parser_translation_unit
        /home/marxin/Programming/gcc/gcc/cp/parser.c:4987
0xb7906b c_parse_file()
        /home/marxin/Programming/gcc/gcc/cp/parser.c:47840
0xcb3cf9 c_common_parse_file()
        /home/marxin/Programming/gcc/gcc/c-family/c-opts.c:1237
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.

Reply via email to