The compiler is actually from the debian "gcc-snapshot" package, version 20100414-1. The same error occurs using the debian g++-4.5 package (version 4.5-20100404-1).
The same error occurs for many source-files in my program, so I've just picked one. I will attach the pre-processed source-file after I submit the bug. With the pre-processed source file in /tmp/local-surface-pp.cc, I compiled with the following commands: $ LD_LIBRARY_PATH=/usr/lib/gcc-snapshot/lib: $ PATH=/usr/lib/gcc-snapshot/bin:/home/soft1/miles/bin:/usr/local/bin:/usr/games:/usr/bin:/bin:/usr/sbin:/sbin:. $ export PATH LD_LIBRARY_PATH $ g++ -v -fwhole-program -pthread -O3 -fomit-frame-pointer -ffast-math -march=native -mfpmath=sse -g -std=c++0x -Wall -Wextra -fno-finite-math-only -ftrapping-math -fno-associative-math -c local-surface-pp.cc Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/usr/lib/gcc-snapshot/libexec/gcc/x86_64-linux-gnu/4.5.0/lto-wrapper Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Debian 20100414-1' --with-bugurl=file:///usr/share/doc/gcc-snapshot/README.Bugs --enable-languages=c,ada,c++,java,fortran,objc,obj-c++ --prefix=/usr/lib/gcc-snapshot --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --disable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-plugin --enable-gold --with-plugin-ld=ld.gold --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.5-snap/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.5-snap --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.5-snap --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --with-arch-32=i486 --with-tune=generic --disable-werror --enable-checking=yes --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 4.5.0 (Debian 20100414-1) COLLECT_GCC_OPTIONS='-v' '-fwhole-program' '-pthread' '-O3' '-fomit-frame-pointer' '-ffast-math' '-mfpmath=sse' '-g' '-std=c++0x' '-Wall' '-Wextra' '-fno-finite-math-only' '-ftrapping-math' '-fno-associative-math' '-c' '-shared-libgcc' /usr/lib/gcc-snapshot/libexec/gcc/x86_64-linux-gnu/4.5.0/cc1plus -quiet -v -D_GNU_SOURCE -D_REENTRANT local-surface-pp.cc -march=core2 -mcx16 -msahf -msse4.1 --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=6144 -mtune=core2 -quiet -dumpbase local-surface-pp.cc -mfpmath=sse -auxbase local-surface-pp -g -O3 -Wall -Wextra -std=c++0x -version -fwhole-program -fomit-frame-pointer -ffast-math -fno-finite-math-only -ftrapping-math -fno-associative-math -o /tmp/ccxxX99K.s GNU C++ (Debian 20100414-1) version 4.5.0 (x86_64-linux-gnu) compiled by GNU C version 4.5.0, GMP version 4.3.2, MPFR version 2.4.2-p1, MPC version 0.8.1 GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" ignoring nonexistent directory "/usr/lib/gcc-snapshot/lib/gcc/x86_64-linux-gnu/4.5.0/../../../../x86_64-linux-gnu/include" ignoring nonexistent directory "/usr/include/x86_64-linux-gnu" #include "..." search starts here: #include <...> search starts here: /usr/lib/gcc-snapshot/lib/gcc/x86_64-linux-gnu/4.5.0/../../../../include/c++/4.5.0 /usr/lib/gcc-snapshot/lib/gcc/x86_64-linux-gnu/4.5.0/../../../../include/c++/4.5.0/x86_64-linux-gnu /usr/lib/gcc-snapshot/lib/gcc/x86_64-linux-gnu/4.5.0/../../../../include/c++/4.5.0/backward /usr/local/include /usr/lib/gcc-snapshot/include /usr/lib/gcc-snapshot/lib/gcc/x86_64-linux-gnu/4.5.0/include /usr/lib/gcc-snapshot/lib/gcc/x86_64-linux-gnu/4.5.0/include-fixed /usr/include End of search list. GNU C++ (Debian 20100414-1) version 4.5.0 (x86_64-linux-gnu) compiled by GNU C version 4.5.0, GMP version 4.3.2, MPFR version 2.4.2-p1, MPC version 0.8.1 GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 Compiler executable checksum: b5bba9b3a42b8bffe7d64192a699586c local-surface.cc:37:1: internal compiler error: in ipcp_iterate_stage, at ipa-cp.c:760 Please submit a full bug report, with preprocessed source if appropriate. See <file:///usr/share/doc/gcc-snapshot/README.Bugs> for instructions. -- Summary: compiling .cc file with -fwhole-program results in ICE, in ipcp_iterate_stage, at ipa-cp.c:760 Product: gcc Version: 4.5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: miles at gnu dot org GCC build triplet: x86_64-unknown-linux-gnu GCC host triplet: x86_64-unknown-linux-gnu GCC target triplet: x86_64-unknown-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43812