This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Non-portable test?
- From: Yuri Gribov <tetra2005 at googlemail dot com>
- To: gcc at gcc dot gnu dot org
- Date: Wed, 23 Sep 2009 12:44:37 +0400
- Subject: Non-portable test?
Hi all,
This is my first post to the list so do not be too harsh)
I have expected all c-torture tests to be highly portable but I have
recently ran into test which relies on int being 32-bit
(execute/980526-2.c).
The test runs to_kdev_t(0x12345678) (see below) and verifies that
result equals 0x15800078. But this is true only with 32-bit ints. With
64-bits we have 0x48d15800078.
static inline kdev_t to_kdev_t(int dev)
{
int major, minor;
if (sizeof(kdev_t) == 16)
return (kdev_t)dev;
major = (dev >> 8);
minor = (dev & 0xff);
return ((( major ) << 22 ) | ( minor )) ;
}
Shouldn't we modify a precondition in main:
if (sizeof (int) < 4)
exit (0);
to be
if (sizeof (int) != 4)
exit (0);
or better
if( sizeof(int)*CHAR_BIT != 32 )
exit(0)
?
Best regards,
Yuri