From: Rusty Russell Date: Mon, 16 Mar 2009 04:48:17 +0000 (+1030) Subject: Fix warnings for ilog (see below) gcc 4.1, and testsuite fixes. X-Git-Url: http://git.ozlabs.org/?p=ccan;a=commitdiff_plain;h=2037a903729fea95d76ad7baa7c1e2cd3ce38f04 Fix warnings for ilog (see below) gcc 4.1, and testsuite fixes. (1) Include ilog.h header first (checks that it doesn't need anything else) (2) Include ilog.c (only api tests don't need this). Here are the warnings with gcc 4.1: Running gcc -O3 -Wall -Wundef -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes -Wmissing-declarations -Werror -Iccan/ -I. -o ccan/ilog/test/run ccan/ilog/test/run.c ccan/tap/tap.o In file included from ccan/ilog/test/run.c:2: ccan/ilog/ilog.h:27:10: error: "LLONG_MAX" is not defined cc1: warnings being treated as errors ccan/ilog/test/run.c: In function ‘main’: ccan/ilog/test/run.c:36: warning: suggest brackets around + or - inside shift ccan/ilog/test/run.c:55: warning: suggest brackets around + or - inside shift ccan/ilog/test/run.c:55: warning: suggest brackets around + or - inside shift ccan/ilog/test/run.c:55: warning: suggest brackets around + or - in operand of & ccan/ilog/test/run.c:63: warning: suggest brackets around + or - inside shift ccan/ilog/test/run.c:85: warning: suggest brackets around + or - inside shift ccan/ilog/test/run.c:85: warning: suggest brackets around + or - inside shift ccan/ilog/test/run.c:85: warning: suggest brackets around + or - in operand of & --- diff --git a/ccan/ilog/ilog.h b/ccan/ilog/ilog.h index f74a3507..29689f5f 100644 --- a/ccan/ilog/ilog.h +++ b/ccan/ilog/ilog.h @@ -24,7 +24,7 @@ # elif LONG_MAX>=9223372036854775807LL # define CLZ64_OFFS ((int)sizeof(unsigned long)*CHAR_BIT) # define CLZ64(_x) (__builtin_clzl(_x)) -# elif LLONG_MAX>=9223372036854775807LL +# else /* long long must be >= 64 bits according to ISO C */ # define CLZ64_OFFS ((int)sizeof(unsigned long long)*CHAR_BIT) # define CLZ64(_x) (__builtin_clzll(_x)) # endif diff --git a/ccan/ilog/test/run.c b/ccan/ilog/test/run.c index 81935840..2aeee1ce 100644 --- a/ccan/ilog/test/run.c +++ b/ccan/ilog/test/run.c @@ -1,11 +1,7 @@ -#include #include "ilog/ilog.h" +#include "ilog/ilog.c" +#include #include "tap/tap.h" -#if defined(__GNUC_PREREQ) -# if __GNUC_PREREQ(4,2) -# pragma GCC diagnostic ignored "-Wparentheses" -# endif -#endif /*Dead simple (but slow) versions to compare against.*/ @@ -33,7 +29,7 @@ int main(int _argc,const char *_argv[]){ for(i=0;i<=32;i++){ uint32_t v; /*Test each bit in turn (and 0).*/ - v=i?(uint32_t)1U<>(33-i>>1)>>(32-i>>1); + v=(1103515245U*v+12345U)&0xFFFFFFFFU>>((33-i)>>1)>>((32-i)>>1); } } ok1(nmatches==3*(32+1)*NTRIALS); @@ -60,7 +56,7 @@ int main(int _argc,const char *_argv[]){ for(i=0;i<=64;i++){ uint64_t v; /*Test each bit in turn (and 0).*/ - v=i?(uint64_t)1U<>(65-i>>1)>>(64-i>>1)); + v=(uint64_t)((2862933555777941757ULL*v+3037000493ULL) + &0xFFFFFFFFFFFFFFFFULL>>((65-i)>>1)>>((64-i)>>1)); } } ok1(nmatches==3*(64+1)*NTRIALS);