James Youngman wrote: > It might be worth including a comment explaining the problem in the > source, so that the somebody else does not accidentally re-introduce > the same bug.
You're right. Done: *** lib/count-one-bits.h.orig 2008-04-13 22:51:41.000000000 +0200 --- lib/count-one-bits.h 2008-04-13 22:51:25.000000000 +0200 *************** *** 30,35 **** --- 30,37 ---- return BUILTIN (x); #else #define COUNT_ONE_BITS(BUILTIN, TYPE) \ + /* This condition is written so as to avoid shifting by more than \ + 31 bits at once, and also avoids a random HP-UX cc bug. */ \ verify (((TYPE) -1 >> 31 >> 31 >> 2) == 0); /* TYPE has at most 64 bits */ \ int count = count_one_bits_32 (x); \ if (1 < (TYPE) -1 >> 31) /* TYPE has more than 32 bits? */ \