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