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

--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Oh, and for completeness, the ICE case reduced:

extern "C" void* malloc(decltype(sizeof(0)));
extern "C" void free(void*);

struct string {
  string(int) : s(malloc(1)) { }
  ~string() { free(s); }
  string(const string& str) : s(str.s ? malloc(1) : nullptr) { }
  void* s;
  bool empty() const { return s == nullptr; }
};

string foo()
{
  const string s(42);
  return s.empty() ? throw "empty" : s;
}

90940.cc: In function 'string foo()':
90940.cc:15:38: internal compiler error: in ocp_convert, at cp/cvt.c:765
   15 |   return s.empty() ? throw "empty" : s;
      |                                      ^
0x5ce07b ocp_convert(tree_node*, tree_node*, int, int, int)
        /home/jwakely/src/gcc/gcc/gcc/cp/cvt.c:765
0xa195c9 check_return_expr(tree_node*, bool*)
        /home/jwakely/src/gcc/gcc/gcc/cp/typeck.c:9796
0x9d0a4e finish_return_stmt(tree_node*)
        /home/jwakely/src/gcc/gcc/gcc/cp/semantics.c:894
0x9486db cp_parser_jump_statement
        /home/jwakely/src/gcc/gcc/gcc/cp/parser.c:12903
0x9486db cp_parser_statement
        /home/jwakely/src/gcc/gcc/gcc/cp/parser.c:11180
0x949500 cp_parser_statement_seq_opt
        /home/jwakely/src/gcc/gcc/gcc/cp/parser.c:11646
0x9495d7 cp_parser_compound_statement
        /home/jwakely/src/gcc/gcc/gcc/cp/parser.c:11600
0x962500 cp_parser_function_body
        /home/jwakely/src/gcc/gcc/gcc/cp/parser.c:22624
0x962500 cp_parser_ctor_initializer_opt_and_function_body
        /home/jwakely/src/gcc/gcc/gcc/cp/parser.c:22675
0x962d86 cp_parser_function_definition_after_declarator
        /home/jwakely/src/gcc/gcc/gcc/cp/parser.c:27776
0x963b1e cp_parser_function_definition_from_specifiers_and_declarator
        /home/jwakely/src/gcc/gcc/gcc/cp/parser.c:27692
0x963b1e cp_parser_init_declarator
        /home/jwakely/src/gcc/gcc/gcc/cp/parser.c:20261
0x945c6f cp_parser_simple_declaration
        /home/jwakely/src/gcc/gcc/gcc/cp/parser.c:13525
0x96a402 cp_parser_declaration
        /home/jwakely/src/gcc/gcc/gcc/cp/parser.c:13222
0x96abaf cp_parser_translation_unit
        /home/jwakely/src/gcc/gcc/gcc/cp/parser.c:4690
0x96abaf c_parse_file()
        /home/jwakely/src/gcc/gcc/gcc/cp/parser.c:41243
0xa78820 c_common_parse_file()
        /home/jwakely/src/gcc/gcc/gcc/c-family/c-opts.c:1156
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