This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: glibc 2.7 complex functions are possibly miscompiled by gcc 4.3 trunk
Ismail DÃnmez <ismail@pardus.org.tr> 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