http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51243
Bug #: 51243 Summary: internal compiler error: in verify_gimple_stmt, at tree-cfg.c:4235 Classification: Unclassified Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: 3dw...@verizon.net The following code ICES on 4.7 (not on anything earlier). ------------------------------------------------------------------------ // g++ -std=c++0x -c stringarray.cpp // ./bin/bin/g++ -std=c++11 -c stringarray.cpp #include <string> #include <array> std::array<std::string, 2> strings1 = { "a", "b" }; std::array<std::string, 2> strings2 = {{ "a", "b" }}; //std::array<std::string, 2> strings3({ "a", "b" }); ------------------------------------------------------------------------ If the last line is uncommented, it gets an error about "no matching function for call" as it should. No ICE. Interestingly if the second declaration is commented the first declaration ICES. Maybe that is not surprising as this is code generation. I think syntactically the first two decls are legal. If the third one is uncommented you get an error and no ICE. If the third is commented either or both of the first two decls pass but crash on gimplification.