[ADT] Unbreak PointerEmbeddedInt build with MSVC.
authorBenjamin Kramer <benny.kra@googlemail.com>
Sun, 10 Jan 2016 14:06:29 +0000 (14:06 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Sun, 10 Jan 2016 14:06:29 +0000 (14:06 +0000)
MSVC seems to have problems looking up Value inside of the template. Not
really sure whether that's a bug there or Clang and GCC being too
permissive.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257288 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ADT/PointerEmbeddedInt.h

index 9386c42350bf6cc72456d73faf4553a1a7c0ac88..5bd14c6173a98e392ec1b3885d1684100581da85 100644 (file)
@@ -30,13 +30,13 @@ template <typename IntT, int Bits = sizeof(IntT) * CHAR_BIT>
 class PointerEmbeddedInt {
   uintptr_t Value;
 
 class PointerEmbeddedInt {
   uintptr_t Value;
 
-  static_assert(Bits < sizeof(Value) * CHAR_BIT,
+  static_assert(Bits < sizeof(PointerEmbeddedInt::Value) * CHAR_BIT,
                 "Cannot embed more bits than we have in a pointer!");
 
   enum : uintptr_t {
     // We shift as many zeros into the value as we can while preserving the
     // number of bits desired for the integer.
                 "Cannot embed more bits than we have in a pointer!");
 
   enum : uintptr_t {
     // We shift as many zeros into the value as we can while preserving the
     // number of bits desired for the integer.
-    Shift = sizeof(Value) * CHAR_BIT - Bits,
+    Shift = sizeof(PointerEmbeddedInt::Value) * CHAR_BIT - Bits,
 
     // We also want to be able to mask out the preserved bits for asserts.
     Mask = static_cast<uintptr_t>(-1) << Bits
 
     // We also want to be able to mask out the preserved bits for asserts.
     Mask = static_cast<uintptr_t>(-1) << Bits