This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Bug in jump.c (jump_optimize)
- To: michaelh at ongaonga dot chch dot cri dot nz (Michael P. Hayes)
- Subject: Re: Bug in jump.c (jump_optimize)
- From: hjl at lucon dot org (H.J. Lu)
- Date: Thu, 12 Mar 1998 21:18:40 -0800 (PST)
- Cc: egcs at cygnus dot com
>
> H.J. Lu writes:
>
> > I believe the bug is introduced by this patch:
>
> <jump.c patch snipped>
>
> > On x86, 0.0 and 1.0 are 2 special floating point constansts among
> > others. They can be pushed onto the floating point resgister stack.
> > They are not in memory nor in resgister. When the floating point
> > constants are enabled for conditional move, gcc will try to
> > load (cc0) onto the floating point resgister stack. It certainly
> > won't work. We need to fix i386.md to handle those special
> > floating point constansts.
>
> I submitted this patch to GCC2 a while ago but Kenner deferred it
> since he was trying to get 2.8.0 out and had some reservation about
> conditional loads of floating point constants. It looks like Jeff
He was right.
> picked it up and installed it into EGCS.
>
> Is this just a problem with the definition of the 386 conditional move
> patterns?
Yes, I have sent in a patch for i386.md.
>
> On a related note, I have been looking at conditional loads from
> memory. Are there any caveats to watch with this, apart from
> dereferencing a pointer also used in the condition?
>
Yes, I have sent 2 related bug reports with test cases to the
egcs list.
--
H.J. Lu (hjl@gnu.org)