This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]