The following piece of code : ============================================ #include <memory>
struct empty { }; struct foo { empty empty_; }; int main(int, char**) { new foo { *std::make_shared<empty>() }; return 0; } ============================================ leads to an internal compiler error with GCC 4.4 svn: ============================================ $ g++ -std=c++0x main.cpp main.cpp: In function 'int main(int, char**)': main.cpp:12: internal compiler error: in verify_types_in_gimple_stmt, at tree-cfg.c:3944 ============================================ No error if "new foo" is replaced by "foo f". $ g++ -v Using built-in specs. Target: i686-pc-linux-gnu Configured with: ../gcc/configure --enable-languages='c c++' --disable-nls : (reconfigured) ../gcc/configure --enable-languages='c c++' : (reconfigured) ../gcc/configure --enable-languages='c c++' --enable-shared --disable-static --disable-nls Thread model: posix gcc version 4.4.0 20081005 (experimental) (GCC) -- Summary: [C++0x] ICE with shared_ptr in initializer-list of new- expression Product: gcc Version: 4.4.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: florian dot goujeon at wanadoo dot fr GCC build triplet: i686-pc-linux-gnu GCC host triplet: i686-pc-linux-gnu GCC target triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37741