http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48029
--- Comment #5 from Peter Bergner <bergner at gcc dot gnu.org> 2011-03-08 15:20:03 UTC --- Taking Tian's idea from comment #4 and instead of commenting it out, but moving it outside of the struct like below, we not ICE without having to use the GC param options and we don't see the error message richi saw. #include <string> #include <vector> #include <map> using namespace std; namespace my_namespace { enum my_enum { ENUM0 = 0, ENUM1 = 1, ENUM2 = 2 }; typedef vector<string> myvectype0[ENUM2]; typedef vector<string> myvectype1[ENUM2]; typedef string mytype2; typedef map<mytype2, myvectype0*> mytype3; myvectype1 field1; struct my_struct { mytype3 field0; }; }; using namespace my_namespace; int main() { my_struct tmp; return 0; } bergner@igoo:~/gcc/BUGS/huawei> /home/bergner/gcc/install/gcc-fsf-4_5-debug/bin/g++ -S -m64 bug.cpp In file included from /home/bergner/gcc/install/gcc-fsf-4_5-debug/lib/gcc/powerpc64-linux/4.5.3/../../../../include/c++/4.5.3/map:61:0, from bug.cpp:3: /home/bergner/gcc/install/gcc-fsf-4_5-debug/lib/gcc/powerpc64-linux/4.5.3/../../../../include/c++/4.5.3/bits/stl_map.h: In instantiation of ‘std::map<std::basic_string<char>, std::vector<std::basic_string<char> > (*)[2], std::less<std::basic_string<char> >, std::allocator<std::pair<const std::basic_string<char>, std::vector<std::basic_string<char> > (*)[2]> > >’: /home/bergner/gcc/install/gcc-fsf-4_5-debug/lib/gcc/powerpc64-linux/4.5.3/../../../../include/c++/4.5.3/bits/stl_map.h:106:7: instantiated from ‘std::map<std::basic_string<char>, std::vector<std::basic_string<char> > (*)[2]>’ bug.cpp:26:13: instantiated from here /home/bergner/gcc/install/gcc-fsf-4_5-debug/lib/gcc/powerpc64-linux/4.5.3/../../../../include/c++/4.5.3/bits/stl_map.h:90:61: internal compiler error: in finish_member_declaration, at cp/semantics.c:2468 Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions.