[Bug c++/101209] New: ICE with trailing return type on a conversion operator

aaron at aaronballman dot com gcc-bugzilla@gcc.gnu.org
Fri Jun 25 11:31:05 GMT 2021


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

            Bug ID: 101209
           Summary: ICE with trailing return type on a conversion operator
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: aaron at aaronballman dot com
  Target Milestone: ---

I was curious what kind of diagnostics different compilers would give me for
some nonsense code, and found that the following code causes an ICE in GCC.

struct S {
  operator int() const -> double;
};

<source>:2:27: internal compiler error: in splice_late_return_type, at
cp/pt.c:29753
    2 |   operator int() const -> double;
      |                           ^~~~~~
0x1d48999 internal_error(char const*, ...)
        ???:0
0x724013 fancy_abort(char const*, int, char const*)
        ???:0
0x9847fc splice_late_return_type(tree_node*, tree_node*)
        ???:0
0x808c53 grokdeclarator(cp_declarator const*, cp_decl_specifier_seq*,
decl_context, int, tree_node**)
        ???:0
0x834403 grokfield(cp_declarator const*, cp_decl_specifier_seq*, tree_node*,
bool, tree_node*, tree_node*)
        ???:0
0x94cadd c_parse_file()
        ???:0
0xacfe82 c_common_parse_file()
        ???:0
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.
Compiler returned: 1

This should likely give an error about using a trailing return type for a
function with a declared return type other than a placeholder type.


More information about the Gcc-bugs mailing list