[Bug c++/88419] New: [9 Regression] [ICE] "Same canonical type node for different types" for CTAD in noexcept

Casey at Carter dot net gcc-bugzilla@gcc.gnu.org
Sun Dec 9 05:56:00 GMT 2018


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

            Bug ID: 88419
           Summary: [9 Regression] [ICE] "Same canonical type node for
                    different types" for CTAD in noexcept
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: Casey at Carter dot net
  Target Milestone: ---

Created attachment 45191
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45191&action=edit
Repro

This TU:

  template<class> struct ref_view {
      template<class T> ref_view(T&&);
  };

  template<class R> ref_view(R&) -> ref_view<R>;

  struct ref_fn {
      template<class R> auto operator()(R r) const
      noexcept(noexcept(ref_view{r}));
  };

  template<class R> struct indirect_view {
      indirect_view(R);
  };

  struct indirect_fn {
      template<class R> auto operator()(R r) const
      noexcept(noexcept(indirect_view{r}));
  };

ICEs when compiled with "g++ -std=c++17 -c":

  /home/casey/casey/Desktop/repro.cpp:18:40: internal compiler error: same
canonical type node for different types ‘indirect_view’ and ‘ref_view’
    18 |     noexcept(noexcept(indirect_view{r}));
        |                                        ^
  0x9fd2af comptypes(tree_node*, tree_node*, int)
          /home/casey/repos/gcc/gcc/cp/typeck.c:1486
  0x9f3076 cp_tree_equal(tree_node*, tree_node*)
          /home/casey/repos/gcc/gcc/cp/tree.c:3558
  0x9f3d6f cp_tree_equal(tree_node*, tree_node*)
          /home/casey/repos/gcc/gcc/cp/tree.c:3816
  0x9e3772 cp_check_qualified_type
          /home/casey/repos/gcc/gcc/cp/tree.c:2135
  0x9e7557 build_cp_fntype_variant(tree_node*, cp_ref_qualifier, tree_node*,
bool)
          /home/casey/repos/gcc/gcc/cp/tree.c:2568
  0x9e7647 build_cp_fntype_variant(tree_node*, cp_ref_qualifier, tree_node*,
bool)
          /home/casey/repos/gcc/gcc/cp/tree.c:2599
  0x8b9aeb grokdeclarator(cp_declarator const*, cp_decl_specifier_seq*,
decl_context, int, tree_node**)
          /home/casey/repos/gcc/gcc/cp/decl.c:11527
  0x8caa3e grokfield(cp_declarator const*, cp_decl_specifier_seq*, tree_node*,
bool, tree_node*, tree_node*)
          /home/casey/repos/gcc/gcc/cp/decl2.c:814
  0x95b2f1 cp_parser_init_declarator
          /home/casey/repos/gcc/gcc/cp/parser.c:20306
  0x95ef04 cp_parser_single_declaration
          /home/casey/repos/gcc/gcc/cp/parser.c:27954
  0x95f04c cp_parser_template_declaration_after_parameters
          /home/casey/repos/gcc/gcc/cp/parser.c:27546
  0x95f98d cp_parser_explicit_template_declaration
          /home/casey/repos/gcc/gcc/cp/parser.c:27792
  0x95f98d cp_parser_template_declaration_after_export
          /home/casey/repos/gcc/gcc/cp/parser.c:27811
  0x960cbd cp_parser_member_declaration
          /home/casey/repos/gcc/gcc/cp/parser.c:24070
  0x93b07a cp_parser_member_specification_opt
          /home/casey/repos/gcc/gcc/cp/parser.c:23997
  0x93b07a cp_parser_class_specifier_1
          /home/casey/repos/gcc/gcc/cp/parser.c:23141
  0x93d049 cp_parser_class_specifier
          /home/casey/repos/gcc/gcc/cp/parser.c:23403
  0x93d049 cp_parser_type_specifier
          /home/casey/repos/gcc/gcc/cp/parser.c:17259
  0x93e03b cp_parser_decl_specifier_seq
          /home/casey/repos/gcc/gcc/cp/parser.c:13982
  0x93e773 cp_parser_simple_declaration
          /home/casey/repos/gcc/gcc/cp/parser.c:13287
  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.


More information about the Gcc-bugs mailing list