------- Additional Comments From jakub at gcc dot gnu dot org 2005-01-14 18:35 ------- Are you sure this is not just a bug in valgrind? I have verified that with current CVS I get ERROR SUMMARY: 37 errors from 21 contexts (suppressed: 12 from 1) while if I rebuild stage1's combine.o with Roger's patch backed out, link new stage1 cc1, then rebuild stage2's real.o with the new stage1 cc1 and link new stage2 cc1, I get ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 12 from 1)
I did a binary search on real.s and e.g. one of the valgrind errors is triggered by following change in real.s: @@ -6453,8 +6453,8 @@ round_for_format: .p2align 2,,3 .L997: movl (%ebp), %eax + subl $-2147483648, %eax shrl $5, %eax - xorl $67108864, %eax subl $67108864, %eax cmpl %eax, 32(%esp) jge .L979 With the xorl there are no errors, with subl there is one error. But I don't see any functional difference between these two. If I replace 28 occurences of these subl $0x80000000, %eax before >> 5 to xorl $0x4000000, %eax after >> 5 (I left out encoders/decoders of non-ieee formats), valgrind stops reporting any errors. So to me this looks like valgrind not handling subl $0x80000000, %eax instruction correctly. Do you agree? I used valgrind 2.2.0. -- What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at redhat dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18089