http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60951
Bug ID: 60951 Summary: [4.9 Regression][C++11] ICE with braced-init-list assignment and constexpr constructor Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: major Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: radiantstatue at gmail dot com Test case: struct Foo { constexpr Foo(int x = 0) : memb(x) {} int memb; }; struct FooContainer { Foo foo[2]; }; void fubar() { int nonConst = 0; FooContainer fooContainer; fooContainer = { { 0, nonConst } }; } $ g++ -std=c++11 -S testcase.cpp testcase.cpp: In function ‘void fubar()’: testcase.cpp:13:37: internal compiler error: in gimplify_init_ctor_preeval, at gimplify.c:3320 fooContainer = { { 0, nonConst } }; ^ The error happens if mixed const/non-const expressions are used in the braced init list.