This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/82023] New: [arm] constexpr ICE: in cxx_eval_constant_expression, at cp/constexpr.c:4556
- From: "nsz at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 29 Aug 2017 16:26:59 +0000
- Subject: [Bug c++/82023] New: [arm] constexpr ICE: in cxx_eval_constant_expression, at cp/constexpr.c:4556
- Auto-submitted: auto-generated
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82023
Bug ID: 82023
Summary: [arm] constexpr ICE: in cxx_eval_constant_expression,
at cp/constexpr.c:4556
Product: gcc
Version: 8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: nsz at gcc dot gnu.org
Target Milestone: ---
following c++14 code fails to compile with ice on arm targets:
struct A {
constexpr A() {
return;
}
};
A x;
$ arm-none-linux-gnueabihf-g++ -S foo.cpp
foo.cpp:7:3: in constexpr expansion of ‘x.A::A()’
foo.cpp:7:3: internal compiler error: in cxx_eval_constant_expression, at
cp/constexpr.c:4556
A x;
^
0x6777c3 cxx_eval_constant_expression
/S/gcc/cp/constexpr.c:4556
0x677a37 cxx_eval_statement_list
/S/gcc/cp/constexpr.c:3770
0x677a37 cxx_eval_constant_expression
/S/gcc/cp/constexpr.c:4497
0x67728b cxx_eval_constant_expression
/S/gcc/cp/constexpr.c:4503
0x677a37 cxx_eval_statement_list
/S/gcc/cp/constexpr.c:3770
0x677a37 cxx_eval_constant_expression
/S/gcc/cp/constexpr.c:4497
0x675f4f cxx_eval_call_expression
/S/gcc/cp/constexpr.c:1661
0x67723f cxx_eval_constant_expression
/S/gcc/cp/constexpr.c:4035
0x670d33 cxx_eval_outermost_constant_expr
/S/gcc/cp/constexpr.c:4667
0x67ee57 maybe_constant_init(tree_node*, tree_node*)
/S/gcc/cp/constexpr.c:4990
0x72b9a7 expand_default_init
/S/gcc/cp/init.c:1869
0x72b9a7 expand_aggr_init_1
/S/gcc/cp/init.c:1972
0x72c05f build_aggr_init(tree_node*, tree_node*, int, int)
/S/gcc/cp/init.c:1713
0x6c14ff build_aggr_init_full_exprs
/S/gcc/cp/decl.c:6094
0x6c14ff check_initializer
/S/gcc/cp/decl.c:6242
0x6e205f cp_finish_decl(tree_node*, tree_node*, bool, tree_node*, int)
/S/gcc/cp/decl.c:6961
0x7b50df cp_parser_init_declarator
/S/gcc/cp/parser.c:19674
0x7b7b4b cp_parser_simple_declaration
/S/gcc/cp/parser.c:13051
0x7b8a1f cp_parser_block_declaration
/S/gcc/cp/parser.c:12877
0x7c1063 cp_parser_declaration
/S/gcc/cp/parser.c:12774
Please submit a full bug report,
with preprocessed source if appropriate.
the assert is
4554 case GOTO_EXPR:
4555 *jump_target = TREE_OPERAND (t, 0);
4556 gcc_assert (breaks (jump_target) || continues (jump_target));
4557 break;
the -tree-original output is unexpected on arm:
;; Function constexpr A::A() (null)
;; enabled by -tree-original
{
// predicted unlikely by goto predictor.;
goto <D.5928>;
}
<D.5928>:;
return this;
e.g. on aarch64 it's:
;; Function constexpr A::A() (null)
;; enabled by -tree-original
{
return;
}