When compiling the supplied test case with `gcc -c -O2 -ftracer test.c` with gcc-4.0.3 the following error occurs:
test.c: In function mpfr_pow_ui: test.c:18: error: unrecognizable insn: (insn 96 44 46 6 (set (reg:CCZ 17 flags) (compare:CCZ (and:DI (reg/v:DI 66 [ n ]) (const_int 4611686018427387904 [0x4000000000000000])) (const_int 0 [0x0]))) -1 (nil) (expr_list:REG_DEAD (reg/v:DI 66 [ n ]) (nil))) test.c:18: internal compiler error: in extract_insn, at recog.c:2020 This does not occur in 3.4, 4.1, or 4.2. Revision 98597 on gcc-4_1-branch seems to be where it was fixed for 4.1. Here is the testcase I am using: unsigned int __gmpfr_flags; int mpfr_pow_ui (unsigned long int n) { unsigned long m; int inexact; int i; for (m = n, i = 0; m; i++, m >>= 1) ; ((void) (__gmpfr_flags &= 31 ^ 1)); if (n & (1UL << (i-2))) return 0; } Using built-in specs. Target: x86_64-unknown-linux-gnu Configured with: ../gcc-4/configure --prefix=/home/halcy0n/gcc-test/bin-4/ --enable-languages=c,c++ --disable-multilib Thread model: posix gcc version 4.0.3 20051222 (prerelease) -- Summary: [4.0 Regression] unrecognizable insn on x86_64 with -O2 -ftracer Product: gcc Version: 4.0.3 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: halcy0n at gentoo dot org GCC build triplet: x86_64-pc-linux-gnu GCC host triplet: x86_64-pc-linux-gnu GCC target triplet: x86_64-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25554