[LLVMdev] Minor cleanup to prior APInt patch

Neil Booth neil at daikokuya.co.uk
Fri Aug 17 18:11:29 PDT 2007


As requested by Chris.

Neil.
-------------- next part --------------
Index: include/llvm/ADT/APInt.h
===================================================================
--- include/llvm/ADT/APInt.h	(revision 41148)
+++ include/llvm/ADT/APInt.h	(working copy)
@@ -19,9 +19,7 @@
 #include <cassert>
 #include <string>
 
-#define HOST_CHAR_BIT 8
-#define compileTimeAssert(cond) extern int CTAssert[(cond) ? 1 : -1]
-#define integerPartWidth (HOST_CHAR_BIT * sizeof(llvm::integerPart))
+#define COMPILE_TIME_ASSERT(cond) extern int CTAssert[(cond) ? 1 : -1]
 
 namespace llvm {
 
@@ -29,6 +27,9 @@
      bignum.  */
   typedef uint64_t integerPart;
 
+  const unsigned int host_char_bit = 8;
+  const unsigned int integerPartWidth = host_char_bit * sizeof(integerPart);
+
 //===----------------------------------------------------------------------===//
 //                              APInt Class
 //===----------------------------------------------------------------------===//
Index: lib/Support/APInt.cpp
===================================================================
--- lib/Support/APInt.cpp	(revision 41148)
+++ lib/Support/APInt.cpp	(working copy)
@@ -2018,15 +2018,29 @@
 
 /* Assumed by lowHalf, highHalf, partMSB and partLSB.  A fairly safe
    and unrestricting assumption.  */
-compileTimeAssert(integerPartWidth % 2 == 0);
+COMPILE_TIME_ASSERT(integerPartWidth % 2 == 0);
 
-#define lowBitMask(bits) (~(integerPart) 0 >> (integerPartWidth - (bits)))
-#define lowHalf(part) ((part) & lowBitMask(integerPartWidth / 2))
-#define highHalf(part) ((part) >> (integerPartWidth / 2))
-
 /* Some handy functions local to this file.  */
 namespace {
 
+  inline integerPart
+  lowBitMask(unsigned int bits)
+  {
+    return ~(integerPart) 0 >> (integerPartWidth - bits);
+  }
+
+  inline integerPart
+  lowHalf(integerPart part)
+  {
+    return part & lowBitMask(integerPartWidth / 2);
+  }
+
+  inline integerPart
+  highHalf(integerPart part)
+  {
+    return part >> (integerPartWidth / 2);
+  }
+
   /* Returns the bit number of the most significant bit of a part.  If
      the input number has no bits set -1U is returned.  */
   unsigned int


More information about the llvm-dev mailing list