------- Comment #16 from rguenth at gcc dot gnu dot org 2008-02-06 11:19 ------- Just re-building real.o with removing the real.gc* files before fixes the bug, so to trigger this bug you indeed need the profile-feedback.
-O2 -fbranch-probabilities -finline-functions is enough to trigger the failure, -fno-tree-vrp -fno-tree-dominator-opts (that is, disabling jump threading) fixes it. It looks like rtd_divmod goes wrong, as it returns 141 for (gdb) print *num $90 = {cl = 1, decimal = 0, sign = 0, signalling = 0, canonical = 0, uexp = 1024, sig = {0, 0, 18446744073709549568}} (gdb) print *den $91 = {cl = 1, decimal = 0, sign = 0, signalling = 0, canonical = 0, uexp = 1017, sig = {3455452434845676643, 2207960133917416517, 16708042751414900190}} called from /* At this point, PTEN should contain the nearest power of 10 smaller than R, such that this division produces the first digit. Using a divide-step primitive that returns the complete integral remainder avoids the rounding error that would be produced if we were to use do_divide here and then simply multiply by 10 for each subsequent digit. */ digit = rtd_divmod (&r, &pten); though pten also looks funny here. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33992