The .ii file is here: http://www.misconception.org.uk/will/Convex.ii An ICE is generated when compiling a legal piece of C++.
I miss there the actual command line which triggers it (you'll get it when you run the g++ command with -v, what I'm interested in is something like: /usr/lib/gcc-lib/i386-redhat-linux/2.96/cc1plus Convex.ii -quiet -dumpbase Convex.cpp -O2 -version -o Convex.s ). I've tried to see which of -O0/-O1/-O2 -fpic/-O3 would trigger it and none did, so it presumably depends on some special options passed to it.
c++ -DHAVE_CONFIG_H -I. -I. -I.. -I../modules -I/usr/lib/sigc++/include -Wall -DDEBUG -I/usr/local/include -save-temps -v -Wp,-MD,.deps/Convex.pp -c Convex.cpp -fPIC -DPIC -o Convex.lo Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/2.96/specs gcc version 2.96 20000731 (Red Hat Linux 7.0) /usr/lib/gcc-lib/i386-redhat-linux/2.96/cpp0 -lang-c++ -D__GNUG__=2 -v -I. -I. -I.. -I../modules -I/usr/lib/sigc++/include -I/usr/local/include -D__GNUC__=2 -D__GNUC_MINOR__=96 -D__GNUC_PATCHLEVEL__=0 -D__ELF__ -Dunix -Dlinux -D__ELF__ -D__unix__ -D__linux__ -D__unix -D__linux -Asystem(posix) -Wall -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ -D__tune_i386__ -D__PIC__ -D__pic__ -DHAVE_CONFIG_H -DDEBUG -DPIC -MD .deps/Convex.pp Convex.cpp Convex.ii GNU CPP version 2.96 20000731 (Red Hat Linux 7.0) (cpplib) (i386 Linux/ELF) ignoring nonexistent directory "/usr/i386-redhat-linux/include" ignoring duplicate directory "." ignoring duplicate directory "/usr/local/include" #include "..." search starts here: #include <...> search starts here: . .. /usr/lib/sigc++/include /usr/local/include /usr/include/g++-3 /usr/lib/gcc-lib/i386-redhat-linux/2.96/include /usr/include End of search list. /usr/lib/gcc-lib/i386-redhat-linux/2.96/cc1plus Convex.ii -quiet -dumpbase Convex.cpp -Wall -version -fPIC -o Convex.s GNU C++ version 2.96 20000731 (Red Hat Linux 7.0) (i386-redhat-linux) compiled by GNU C version 2.96 20000731 (Red Hat Linux 7.0). Convex.cpp: In function `bool intersect (const Convex &, const Convex &, const Transform &, const Transform &, Vector &)': Convex.cpp:236: Internal compiler error in print_operand_address, at config/i386/i386.c:3434 Please submit a full bug report. See <URL:http://bugzilla.redhat.com/bugzilla/> for instructions. make: *** [Convex.lo] Error 1
Thanks for the report, fix for this will appear in gcc-c++-2.96-65 (works in my tree).