This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Bug in jump.c (jump_optimize)
- To: hjl at lucon dot org (H.J. Lu)
- Subject: Bug in jump.c (jump_optimize)
- From: "Michael P. Hayes" <michaelh at ongaonga dot chch dot cri dot nz>
- Date: Fri, 13 Mar 1998 05:00:00 GMT
- Cc: bregor at anusf dot anu dot edu dot au (Roger W. Brown), michaelh at ongaonga dot chch dot cri dot nz, egcs at cygnus dot com
- References: <XFMail.980307135116.bregor@anusf.anu.edu.au><m0yDHLL-00058JC@ocean.lucon.org>
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
picked it up and installed it into EGCS.
Is this just a problem with the definition of the 386 conditional move
patterns?
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?
Michael.