PR 11637

Janis Johnson janis187@us.ibm.com
Sat Jul 26 02:37:00 GMT 2003


On Wed, Jul 23, 2003 at 04:29:47PM -0700, Mark Mitchell wrote:
> 
> This PR relates to reload creating an invalid instruction; it creates
> thie following move:
> 
>   (set (mem:SF (reg/v/u/f:SI 0 eax [58]) [3 S4 A32])
>     (const_double:DF -858993408 [0xcccccd00] 5.00000007450580596923828125e-2 [0x0.cccccdp-4]))
> 
> Note the use of DFmode on the second operand.
> 
> Can anyone figure out what is going wrong there?

The regression in PR 11637 was introduced or exposed with this patch:

--- gcc/gcc/ChangeLog ---

2002-11-17  Graham Stott  <graham.stott@btinternet.com>

        * real.c (real_to_decimal): Fix buffer overrun when buffer size
        is smaller than representation.

It was fixed on mainline by:

--- gcc/gcc/ChangeLog ---

Tue Jan 14 00:45:33 CET 2003  Jan Hubicka  <jh@suse.cz>

        * convert.c (strip_float_extensions):  Look for narrowest type handling
        FP constants.
 
        * fold-const.c (fold):  Fold (double)float1 CMP (double)float2 into
        float1 CMP float2.
        * convert.c (strip_float_extensions): Make global.
        * tree.h (strip_float_extensions): Declare.

The regression hunt was done on i686-pc-linux-gnu using the small test
case compiled with "-O2 -fnon-call-exceptions, and then searching the
generated .s file for "3e-2".

I can't get to gcc.gnu.org right now, but when I can I'll add this
information to the PR.

Janis



More information about the Gcc mailing list