This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/68464] New: ICE in constexpr function: ../../src/gcc/tree.c:11497
- From: "ryan.burn at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 20 Nov 2015 21:01:15 +0000
- Subject: [Bug c++/68464] New: ICE in constexpr function: ../../src/gcc/tree.c:11497
- Auto-submitted: auto-generated
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68464
Bug ID: 68464
Summary: ICE in constexpr function: ../../src/gcc/tree.c:11497
Product: gcc
Version: 6.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: ryan.burn at gmail dot com
Target Milestone: ---
The below code produces this ICE:
rnburn@localhost ~/bugs/constexprice $ g++ -std=c++1z main.cpp
main.cpp: In function âconstexpr std::array<double, 3ul> f(int, int, int)â:
main.cpp:12:12: in constexpr expansion of âincrement(std::get<2ul, double,
3ul>(#âresult_declâ not supported by dump_expr#<expression error>))â
main.cpp:14:1: internal compiler error: Segmentation fault
}
^
0xcf834f crash_signal
../../src/gcc/toplev.c:334
0x831ef8 cxx_eval_constant_expression
../../src/gcc/cp/constexpr.c:3180
0x835198 cxx_eval_component_reference
../../src/gcc/cp/constexpr.c:1880
0x831fd2 cxx_eval_constant_expression
../../src/gcc/cp/constexpr.c:3521
0x831515 cxx_eval_array_reference
../../src/gcc/cp/constexpr.c:1767
0x831515 cxx_eval_constant_expression
../../src/gcc/cp/constexpr.c:3506
0x830985 cxx_eval_constant_expression
../../src/gcc/cp/constexpr.c:3349
0x8306be cxx_eval_increment_expression
../../src/gcc/cp/constexpr.c:2886
0x8306be cxx_eval_constant_expression
../../src/gcc/cp/constexpr.c:3627
0x83138a cxx_eval_constant_expression
../../src/gcc/cp/constexpr.c:3570
0x830985 cxx_eval_constant_expression
../../src/gcc/cp/constexpr.c:3349
0x830985 cxx_eval_constant_expression
../../src/gcc/cp/constexpr.c:3349
0x82fdfd cxx_eval_call_expression
../../src/gcc/cp/constexpr.c:1396
0x831222 cxx_eval_constant_expression
../../src/gcc/cp/constexpr.c:3238
0x8365db cxx_eval_outermost_constant_expr
../../src/gcc/cp/constexpr.c:3773
0x8380e0 maybe_constant_value_1
../../src/gcc/cp/constexpr.c:3960
0x8380e0 maybe_constant_value(tree_node*, tree_node*)
../../src/gcc/cp/constexpr.c:3981
0x817cc2 cp_fold
../../src/gcc/cp/cp-gimplify.c:2149
0x818400 cp_fold_r
../../src/gcc/cp/cp-gimplify.c:932
0xfa01f2 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*, tree_node*
(*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*,
hash_set<tree_node*, default_hash_traits<tree_node*> >*))
../../src/gcc/tree.c:11497
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.
///////////////////////////////////////////////////////////////
#include <array>
constexpr void increment(double& x) {
++x;
}
constexpr std::array<double, 3> f(int a, int b, int c) {
std::array<double, 3> r = {};
std::get<0>(r) = a;
std::get<1>(r) = b;
std::get<2>(r) = c;
increment(std::get<2>(r));
return r;
}
int main() {
return 0;
}
///////////////////////////////////////////////////////////////