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]

Re: Bug in jump.c (jump_optimize)


> 
> 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)


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