[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[csmith-bugs] checksum computation, --no-longlong, and 32 vs 64 bits



Dear Csmith developers,

I'm running Csmith on a x86-64 platform and running the output with
gcc (64 bits), gcc -m32 (32 bits), and CompCert (32 bits).

For a while I was very worried that CompCert-generated code reported
different checksums than gcc.  Then I understood that different
checksum algorithms are used with CompCert and with gcc.

I'd like to offer the following suggestions:

1- In --ccomp mode, always generate

#define NO_LONGLONG

before #include "csmith.h", so that even if the output is compiled
with gcc, a 32-bit checksum will be computed.

Same goes for SPLAT mode?  (whatever that is).

2- In -no-longlong mode, do not generate

#ifndef __x86_64__
#define NO_LONGLONG
#endif

but do generate

#define NO_LONGLONG

(Why single out x86_64???)

Another, more radical suggestions would be to have two functions

crc32_4bytes (uint32_t val)
crc32_8bytes (uint64_t val)   (only #ifndef NO_LONGLONG)

and call crc32_4bytes for all variables of type 32 bit or smaller
and call crc32_8bytes only for variables of type 64 bit int.

That was the last message in the series.  Thanks for your patience,
and for an amazing piece of software.

- Xavier