https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65876
Bug ID: 65876 Summary: [5/6 Regression] [C++11] ICE in cxx_eval_call_expression, at cp/constexpr.c:1358 Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: maltsevm at gmail dot com Consider the following code: $ cat test.cc template<int> struct duration { constexpr duration() : r(0) {} template<int TPeriod> constexpr duration(duration<TPeriod> x) : r(x.count()) {} constexpr int count() { return 0; } int r; }; struct Config { duration<1> timeout { duration<2>() }; }; Config make_config() { return {}; } struct ConfigArray { ConfigArray(); Config all_configs[1]; }; ConfigArray::ConfigArray() { } When trying to compile it with GCC 5.1 or trunk r222403 using the following options: $ g++ -c -std=c++11 ./test.cc I get the following error: ./test.cc: In constructor 'ConfigArray::ConfigArray()': ./test.cc:28:26: in constexpr expansion of 'Config()' ./test.cc:28:26: in constexpr expansion of 'duration<1>(duration<2>())' ./test.cc:7:58: in constexpr expansion of 'x.duration<<anonymous> >::count<2>()' ./test.cc:28:26: internal compiler error: in cxx_eval_call_expression, at cp/constexpr.c:1331 ConfigArray::ConfigArray() ^ 0x7eb08e cxx_eval_call_expression /home/miyuki/gcc/src/gcc/cp/constexpr.c:1331 0x7ebf0c cxx_eval_constant_expression /home/miyuki/gcc/src/gcc/cp/constexpr.c:3038 0x7ef0ca cxx_eval_store_expression /home/miyuki/gcc/src/gcc/cp/constexpr.c:2651 0x7ec869 cxx_eval_constant_expression /home/miyuki/gcc/src/gcc/cp/constexpr.c:3112 0x7ec052 cxx_eval_constant_expression /home/miyuki/gcc/src/gcc/cp/constexpr.c:3365 0x7ec310 cxx_eval_constant_expression /home/miyuki/gcc/src/gcc/cp/constexpr.c:3229 0x7ec310 cxx_eval_constant_expression /home/miyuki/gcc/src/gcc/cp/constexpr.c:3229 0x7ebf64 cxx_eval_constant_expression /home/miyuki/gcc/src/gcc/cp/constexpr.c:3406 0x7f229e cxx_eval_statement_list /home/miyuki/gcc/src/gcc/cp/constexpr.c:2828 0x7ec76c cxx_eval_constant_expression /home/miyuki/gcc/src/gcc/cp/constexpr.c:3400 0x7eb188 cxx_eval_call_expression /home/miyuki/gcc/src/gcc/cp/constexpr.c:1365 0x7ebf0c cxx_eval_constant_expression /home/miyuki/gcc/src/gcc/cp/constexpr.c:3038 0x7ecc94 cxx_eval_constant_expression /home/miyuki/gcc/src/gcc/cp/constexpr.c:3097 0x7ef0ca cxx_eval_store_expression /home/miyuki/gcc/src/gcc/cp/constexpr.c:2651 0x7ec869 cxx_eval_constant_expression /home/miyuki/gcc/src/gcc/cp/constexpr.c:3112 0x7ec052 cxx_eval_constant_expression /home/miyuki/gcc/src/gcc/cp/constexpr.c:3365 0x7ec310 cxx_eval_constant_expression /home/miyuki/gcc/src/gcc/cp/constexpr.c:3229 0x7ec310 cxx_eval_constant_expression /home/miyuki/gcc/src/gcc/cp/constexpr.c:3229 0x7ebf64 cxx_eval_constant_expression /home/miyuki/gcc/src/gcc/cp/constexpr.c:3406 0x7f229e cxx_eval_statement_list /home/miyuki/gcc/src/gcc/cp/constexpr.c:2828 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.