bug-gnulib
[Top][All Lists]
Advanced

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

Re: new module 'popcount'


From: Ben Pfaff
Subject: Re: new module 'popcount'
Date: Mon, 23 Jul 2007 19:15:02 -0700
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.1 (gnu/linux)

Jim Meyering <address@hidden> writes:
> Ben Pfaff <address@hidden> wrote:
>> I wanted to use verify_true instead of if...abort, but GCC -Wall
>> gave an annoying "statement with no effect" warning.
> You can use (void) verify_true (...).

Thank you.  I don't know why that didn't occur to me.  I
installed the appended patch.

Bruno Haible <address@hidden> writes:
> verify_true() is meant to be used in an expression context. In a declaration
> context (e.g. at the beginning of a function or of a compound statement)
> you can use verify().

That's true, of course.  I wanted to put the call to it in the
middle of the block, though, because that is where it seems most
natural to me, especially if any more calls to popcount32 were to
become necessary.

2007-07-23  Ben Pfaff  <address@hidden>

        * lib/popcount.h: Use verify_true instead of if...abort.
        * modules/popcount: Depend on verify module.
        Suggested by Jim Meyering.

Index: lib/popcount.h
===================================================================
RCS file: /sources/gnulib/gnulib/lib/popcount.h,v
retrieving revision 1.2
diff -u -p -r1.2 popcount.h
--- lib/popcount.h      23 Jul 2007 04:17:50 -0000      1.2
+++ lib/popcount.h      24 Jul 2007 02:11:32 -0000
@@ -22,17 +22,17 @@
 
 #include <limits.h>
 #include <stdlib.h>
+#include "verify.h"
 
 #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR >= 4)
 #define POPCOUNT_CALCULATION(NAME, TYPE)        \
         return __builtin_##NAME (x);
 #else
-#define POPCOUNT_CALCULATION(NAME, TYPE)        \
-        int pop = popcount32 (x);               \
-        if (CHAR_BIT * sizeof (TYPE) > 32)      \
-          pop += popcount32 (x >> 31 >> 1);     \
-        if (CHAR_BIT * sizeof (TYPE) > 64)      \
-          abort ();                             \
+#define POPCOUNT_CALCULATION(NAME, TYPE)                        \
+        int pop = popcount32 (x);                               \
+        if (CHAR_BIT * sizeof (TYPE) > 32)                      \
+          pop += popcount32 (x >> 31 >> 1);                     \
+        (void) verify_true (CHAR_BIT * sizeof (TYPE) <= 64);    \
         return pop;
 
 /* Compute and return the population count of the low 32 bits of
Index: modules/popcount
===================================================================
RCS file: /sources/gnulib/gnulib/modules/popcount,v
retrieving revision 1.1
diff -u -p -r1.1 popcount
--- modules/popcount    23 Jul 2007 00:21:20 -0000      1.1
+++ modules/popcount    24 Jul 2007 02:11:33 -0000
@@ -7,6 +7,7 @@ m4/popcount.m4
 
 Depends-on:
 inline
+verify
 
 configure.ac:
 gl_POPCOUNT

-- 
Ben Pfaff 
http://benpfaff.org





reply via email to

[Prev in Thread] Current Thread [Next in Thread]