I'm very sorry for the inconvenience, but this bug is not directly related to any CodeSourcery built GCC toolchain. It was a pure coincedence using such a toolchain.
I am able to reproduce the effect with toolchain GCC 4.6.0 for MIPS built from source using MinGW:
Target: mips-siemens-elf
Configured with: ../../gcc-4.6.0/configure --enable-languages=c,c++ --with-arch=mips32r2 -enable-poison-system-directories --enable-interwork --enable-multilib --enable-sgxx-sde-multilibs --with-gcc --with-gnu-ld --with-gnu-as --with-stabs --disable-libmudflap --disable-libssp --disable-shared --disable-threads --disable-libgomp --disable-win32-registry --disable-nls --target=mips-siemens-elf --with-newlib --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --prefix=/build_mips_4.6.0_cloog/cross-gcc/mips-siemens-elf --with-gmp=/build_mips_4.6.0_cloog/host --with-mpfr=/build_mips_4.6.0_cloog/host --with-mpc=/build_mips_4.6.0_cloog/host --with-ppl=/build_mips_4.6.0_cloog/host --with-cloog=/build_mips_4.6.0_cloog/host --with-sysroot=/build_mips_4.6.0_cloog/cross-gcc/mips-siemens-elf
Thread model: single
gcc version 4.6.0 (GCC)
The behaviour seems to be related to the code line
if(r != !!r)
When replacing the condition with the equivalent
if(r != 0 && r != 1)
everything seems fine.
Is it worth investigating the issue further and re-open it?