Ismail Dönmez <[EMAIL PROTECTED]> writes: > Saturday 22 December 2007 19:11:32 tarihinde Ismail Dönmez şunları yazmıştı: > > Hi all, > > > > I am doing glibc 4.3 regression tests using gcc 4.3 trunk nearly every day > > and I see 3 tests fail : > > > > math/test-float > > math/test-ildoubl > > math/test-ifloat > > > > The erorrs are all similar : > > > > Failure: Test: Imaginary part of: cacosh (-0 + 0 i) == 0.0 + pi/2 i > > Result: > > is: 0.00000000000000000000e+00 0x0.00000000000000000000p+0 > > should be: 1.57079637050628662109e+00 0x1.921fb600000000000000p+0 > > difference: 1.57079637050628662109e+00 0x1.921fb600000000000000p+0 > > ulp : 13176795.0000 > > max.ulp : 0.0000 > > Replying to myself once again, these failures are due to -fgcse-after-reload > flag, -O3 -fno-gcse-after-reload cures this. Any tips on how to debug this?
Generic advice to start: compile with -da to get all the RTL dump files. Compare the dump files immediately before and after gcse-after-reload and see what changed. Set breakpoints on validate_change or make_insn_raw as appropriate for the changes. Walk up the stack and see what the code is doing. The file in question is postreload-gcse.c, which is relatively self-contained. Of course it is moderately likely that the bug is not in gcse-after-reload, and is in some other pass generating incorrect information. Still, finding the problem in gcse-after-reload is a good start. Ian