Subject: Re: conversion u_int64_t -> double
To: None <eeh@netbsd.org>
From: Andrei Petrov <and@genesyslab.com>
List: port-sparc64
Date: 02/15/2001 09:57:49
You compiled with optimization and conversion just gone,
'constant propogation'. Try without -O.
Andrey
On 15 Feb 2001 eeh@netbsd.org wrote:
>
> On 13 Feb 2001 eeh@netbsd.org wrote:
>
> >
> > Here is a test:
> >
> > #include <stdio.h>
> > main()
> > {
> > unsigned long int i1 = 1;
> > double c1;
> >
> > c1 = i1;
> >
> > printf("%g\n", c1);
> > }
> >
> >
> > I got 4.94066e-324. Not good. Too little:-).
> >
> > Is that known problem? Is there known remedy to it?
> >
> > int64_t -> double works.
> >
> > That does not appear to be a problem on my machine.
> > Try upgrading to the latest -current snapshot and
> > rebuilding the toolchain.
>
> Upgrade didn't help.
> What is your machine? Could you please send me
> Ultra 1
> assembler output for the test above, it could give me some
> pointers.
> Here:
>
> .file "foo.c"
> .section ".rodata"
> .align 8
> .LLC1:
> .asciz "%g\n"
> .section ".text"
> .align 4
> .global main
> .type main,@function
> .proc 04
> main:
> !#PROLOGUE# 0
> save %sp, -192, %sp
> !#PROLOGUE# 1
> sethi %hi(.LLC1), %o0
> mov 1023, %o1
> add %o0, %g4, %o0
> sllx %o1, 52, %o1
> call printf, 0
> add %o0, %lo(.LLC1), %o0
> return %i7+8
> nop
> .LLfe1:
> .size main,.LLfe1-main
> .ident "GCC: (GNU) 2.95.2 19991024 (release)"
>
> BTW the problem is very noticable on my machine:
> vmstat,iostat,gprof print [Inf] or [NaN] all the time.
>
> Try rebuilding gcc.
>
> Eduardo
>
>