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.

Reply via email to