public inbox for linux-ia64@vger.kernel.org
 help / color / mirror / Atom feed
* [Linux-ia64] gcc type promotion bug?
@ 2002-04-16 20:00 Richard Hirst
  2002-04-16 20:31 ` Andreas Schwab
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Richard Hirst @ 2002-04-16 20:00 UTC (permalink / raw)
  To: linux-ia64

#include <stdio.h>

int
main(int argc, char **argv)
{
        long a = 0x70000037L;
        float f = 0.01;
        long b = a + 1L/f;

        printf("%lx, %lx\n", b, a + 100L);
        return 0;
}



In the above, 1/f = 100, so the two numbers printed out should be the
same.  For me it prints out "70000080, 7000009b".  Same for gcc 2.96
and 3.0.3.

By trying various numbers for 'a', it appears to me that it is demoting
'a' to a float when evaluating 'b', thus truncating it to 24 significant
bits.  I thought all mixed mode arithmetic was supposed to be promoted
to doubles for evaluation.  This is breaking parted 1.6 on ia64.

Richard



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2002-04-16 20:58 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-04-16 20:00 [Linux-ia64] gcc type promotion bug? Richard Hirst
2002-04-16 20:31 ` Andreas Schwab
2002-04-16 20:36 ` Richard Hirst
2002-04-16 20:58 ` Andreas Schwab

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox