[Bug c++/89958] New: ICE and duplicate diagnostic with invalid return value
reichelt at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Apr 4 06:45:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89958
Bug ID: 89958
Summary: ICE and duplicate diagnostic with invalid return value
Product: gcc
Version: 9.0
Status: UNCONFIRMED
Keywords: diagnostic, error-recovery, ice-on-invalid-code
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: reichelt at gcc dot gnu.org
Target Milestone: ---
The following invalid code snippet triggers an ICE since GCC 6.1.0,
killing the diagnostic in mid-sentence. In addition, the first part
of the diagnostic is emitted twice:
=============================
struct A;
constexpr auto foo(A* p)
{
return *p;
}
=============================
bug.cc: In function 'constexpr auto foo(A*)':
bug.cc:5:11: error: invalid use of incomplete type 'struct A'
5 | return *p;
| ^
bug.cc:1:8: note: forward declaration of 'struct A'
1 | struct A;
| ^
bug.cc:5:10: error: invalid use of incomplete type 'struct A'
5 | return *p;
| ^~
bug.cc:1:8: note: forward declaration of 'struct A'
1 | struct A;
| ^
bug.cc:3:16: error: invalid return type 'A' of 'constexpr' function 'constexpr
auto foo(A*)'
3 | constexpr auto foo(A* p)
| ^~~
bug.cc:1:8: note: 'A' is not literal because:
1 | struct A;
| ^
bug.cc:6:1: internal compiler error: Segmentation fault
6 | }
| ^
0xf8203f crash_signal
../../gcc/gcc/toplev.c:326
0x8d0333 tree_check(tree_node*, char const*, int, char const*, tree_code)
../../gcc/gcc/tree.h:3175
0x8d0333 explain_non_literal_class(tree_node*)
../../gcc/gcc/cp/class.c:5525
0x8d91f0 is_valid_constexpr_fn(tree_node*, bool)
../../gcc/gcc/cp/constexpr.c:239
0x8e8c82 register_constexpr_fundef(tree_node*, tree_node*)
../../gcc/gcc/cp/constexpr.c:871
0x92e967 maybe_save_function_definition
../../gcc/gcc/cp/decl.c:15949
0x92e967 finish_function(bool)
../../gcc/gcc/cp/decl.c:16096
0x9cd454 cp_parser_function_definition_after_declarator
../../gcc/gcc/cp/parser.c:27803
0x9ce199 cp_parser_function_definition_from_specifiers_and_declarator
../../gcc/gcc/cp/parser.c:27716
0x9ce199 cp_parser_init_declarator
../../gcc/gcc/cp/parser.c:20295
0x9b049e cp_parser_simple_declaration
../../gcc/gcc/cp/parser.c:13539
0x9d41c0 cp_parser_declaration
../../gcc/gcc/cp/parser.c:13236
0x9d493c cp_parser_translation_unit
../../gcc/gcc/cp/parser.c:4698
0x9d493c c_parse_file()
../../gcc/gcc/cp/parser.c:41180
0xadae9b c_common_parse_file()
../../gcc/gcc/c-family/c-opts.c:1156
Please submit a full bug report, [etc.]
More information about the Gcc-bugs
mailing list