This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c/16031] New: 5.1093e+35 (as a variable) cast to long long => -1
- From: "flash at pobox dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 17 Jun 2004 03:00:52 -0000
- Subject: [Bug c/16031] New: 5.1093e+35 (as a variable) cast to long long => -1
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
The following prints -1; this is undefined behavior per C99 spec §6.3.1.4, but it's odd nonetheless, and
inconsistent with two similar cases, below:
volatile const register float arg2_float_195 = FLT_MAX/666.0;
printf( " \t %s %lld \n " , "" , ( long long ) arg2_float_195 );
(The blank string and parentheses are testing artifacts.)
As an unsigned long, we get 18446744073709551615:
printf( " \t %s %llu \n " , "" , ( unsigned long long ) arg2_float_195 );
As a literal constant, we get 9223372036854775807:
printf( " \t %s ( long long ) 5.1093e+35 :\t %lld \n " , "" , ( long long ) 5.1093e+35 );
--------
Here's the session; preprocessed file to follow. Originally found with C99 option on, but also occurs
without it. Also occurred with DevTools 3.3.
/usr/local/gcc34/bin/gcc -v -save-temps ../c/noerror/bugfiles/gcc_bugfiles/Float_to_long_long.c
Reading specs from /usr/local/gcc34/lib/gcc/powerpc-apple-darwin7.3.0/3.4.0/specs
Configured with: configure --prefix=/usr/local/gcc34
Thread model: posix
gcc version 3.4.0
/usr/local/gcc34/libexec/gcc/powerpc-apple-darwin7.3.0/3.4.0/cc1 -E -quiet -v -D__DYNAMIC__ ../
c/noerror/bugfiles/gcc_bugfiles/Float_to_long_long.c -fPIC -o Float_to_long_long.i
ignoring nonexistent directory "/usr/local/gcc34/lib/gcc/powerpc-apple-darwin7.3.0/3.4.0/../../../../
powerpc-apple-darwin7.3.0/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
/usr/local/gcc34/include
/usr/local/gcc34/lib/gcc/powerpc-apple-darwin7.3.0/3.4.0/include
/usr/include
End of search list.
/usr/local/gcc34/libexec/gcc/powerpc-apple-darwin7.3.0/3.4.0/cc1 -fpreprocessed
Float_to_long_long.i -fPIC -quiet -dumpbase Float_to_long_long.c -auxbase Float_to_long_long
-version -o Float_to_long_long.s
GNU C version 3.4.0 (powerpc-apple-darwin7.3.0)
compiled by GNU C version 3.3 20030304 (Apple Computer, Inc. build 1495).
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
as -arch ppc -o Float_to_long_long.o Float_to_long_long.s
/usr/local/gcc34/libexec/gcc/powerpc-apple-darwin7.3.0/3.4.0/collect2 -arch ppc -dynamic -o
a.out -lcrt1.o -lcrt2.o -L/usr/local/gcc34/lib/gcc/powerpc-apple-darwin7.3.0/3.4.0 -L/usr/local/
gcc34/lib/gcc/powerpc-apple-darwin7.3.0/3.4.0/../../.. Float_to_long_long.o -lgcc -lgcc_eh -lSystem |
c++filt
[gharlane:compilerChain/tests/scripts] flash% a.out
) 5.1093e+35 ( ( long long ) arg2_float_195 ) :
-1
) 5.1093e+35 ( ( unsigned long long ) arg2_float_195 ) :
18446744073709551615
( long long ) 5.1093e+35 : 9223372036854775807
--
Summary: 5.1093e+35 (as a variable) cast to long long => -1
Product: gcc
Version: 3.4.0
Status: UNCONFIRMED
Severity: minor
Priority: P3
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: flash at pobox dot com
CC: gcc-bugs at gcc dot gnu dot org
GCC build triplet: powerpc-apple-darwin7.3.0
GCC host triplet: powerpc-apple-darwin7.3.0
GCC target triplet: powerpc-apple-darwin7.3.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16031