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.