diff --git a/clang/lib/AST/Interp/Descriptor.cpp b/clang/lib/AST/Interp/Descriptor.cpp index 2098ae778a87a..34240ed4352dc 100644 --- a/clang/lib/AST/Interp/Descriptor.cpp +++ b/clang/lib/AST/Interp/Descriptor.cpp @@ -269,7 +269,7 @@ InitMap::T *InitMap::data() { bool InitMap::initialize(unsigned I) { unsigned Bucket = I / PER_FIELD; - unsigned Mask = 1ull << static_cast(I % PER_FIELD); + T Mask = T(1) << (I % PER_FIELD); if (!(data()[Bucket] & Mask)) { data()[Bucket] |= Mask; UninitFields -= 1; @@ -279,8 +279,7 @@ bool InitMap::initialize(unsigned I) { bool InitMap::isInitialized(unsigned I) { unsigned Bucket = I / PER_FIELD; - unsigned Mask = 1ull << static_cast(I % PER_FIELD); - return data()[Bucket] & Mask; + return data()[Bucket] & (T(1) << (I % PER_FIELD)); } InitMap *InitMap::allocate(unsigned N) {