X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FSupport%2FPointerLikeTypeTraits.h;h=8370821392146130de2b5bfa1441cda3c35873ba;hb=976f770e2d008d323b760393c998cfc912763eec;hp=b0edd3bd09f99d8049cf27b9d21a5d8f82366c85;hpb=837e59e2e8a0fc3133aa25cea26b9ee3c7e72c8f;p=oota-llvm.git diff --git a/include/llvm/Support/PointerLikeTypeTraits.h b/include/llvm/Support/PointerLikeTypeTraits.h index b0edd3bd09f..83708213921 100644 --- a/include/llvm/Support/PointerLikeTypeTraits.h +++ b/include/llvm/Support/PointerLikeTypeTraits.h @@ -38,7 +38,7 @@ public: return static_cast(P); } - /// Note, we assume here that malloc returns objects at least 8-byte aligned. + /// Note, we assume here that malloc returns objects at least 4-byte aligned. /// However, this may be wrong, or pointers may be from something other than /// malloc. In this case, you should specialize this template to reduce this. /// @@ -50,12 +50,16 @@ public: // Provide PointerLikeTypeTraits for const pointers. template class PointerLikeTypeTraits { + typedef PointerLikeTypeTraits NonConst; + public: - static inline const void *getAsVoidPointer(const T* P) { return P; } + static inline const void *getAsVoidPointer(const T* P) { + return NonConst::getAsVoidPointer(const_cast(P)); + } static inline const T *getFromVoidPointer(const void *P) { - return static_cast(P); + return NonConst::getFromVoidPointer(const_cast(P)); } - enum { NumLowBitsAvailable = 2 }; + enum { NumLowBitsAvailable = NonConst::NumLowBitsAvailable }; }; // Provide PointerLikeTypeTraits for uintptr_t.