Depending on the compilation flags the same ice will trigger at different times, but I know which code line causes this, however I have not been successful at reducing the bug. Possibly with smaller source, the bug won't show up.
The bug seems to be triggered in class filename_pool which is at line 57241 in the preprocessed source. In a reduced testcase the compilation simply fails with an undefined reference to intrusive_ptr_release(filename_pool::holder*). The line 'friend void intrusive_ptr_release(holder*);' after the nested struct holder{}; must be moved above the declaration of holder together with a forward declaration of holder to be able to compile again. compilation flags: -save-temps -g -Wall -v: Configured with: ../gcc-4.1.1/configure --host=mingw32 --prefix=/mingw --with-gcc --with-gnu-ld --with-gnu-as --enable-threads --disable-nls --enable-languages=c,c++ --disable-win32-registry --disable-shared --enable-sjlj-exceptions --enable-libstdcxx-debug Thread model: win32 gcc version 4.1.1 -- Summary: ice on wrong code in in ggc_set_mark, at ggc-page.c:1262 Product: gcc Version: 4.1.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: baraclese at googlemail dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29896