-
Notifications
You must be signed in to change notification settings - Fork 13.5k
[ADT] DenseMapInfo<unsigned long>::getHashValue - avoid MSVC out of bounds shift warning #96173
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
…ounds shift warning Fixes MSVC warning after llvm#95734 - despite it taking the `sizeof(Val) == 4` path, it still warns that the 32-bit unsigned long shift by 32 is out of bounds, so avoid it by converting the hard coded shift amount to be based off sizeof() instead.
@llvm/pr-subscribers-llvm-adt Author: Simon Pilgrim (RKSimon) ChangesFixes MSVC warning after #95734 - despite it taking the Full diff: https://github.com/llvm/llvm-project/pull/96173.diff 1 Files Affected:
diff --git a/llvm/include/llvm/ADT/DenseMapInfo.h b/llvm/include/llvm/ADT/DenseMapInfo.h
index 4f0aaa1ad48bb..3d83a2c1473f5 100644
--- a/llvm/include/llvm/ADT/DenseMapInfo.h
+++ b/llvm/include/llvm/ADT/DenseMapInfo.h
@@ -142,7 +142,7 @@ template<> struct DenseMapInfo<unsigned long> {
if constexpr (sizeof(Val) == 4)
return DenseMapInfo<unsigned>::getHashValue(Val);
else
- return detail::combineHashValue(Val >> 32, Val);
+ return detail::combineHashValue(Val >> (4 * sizeof(Val)), Val);
}
static bool isEqual(const unsigned long& LHS, const unsigned long& RHS) {
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Thank you everyone |
…ounds shift warning (llvm#96173) Fixes MSVC warning after llvm#95734 - despite it taking the `sizeof(Val) == 4` path, it still warns that the 32-bit unsigned long shift by 32 is out of bounds.
Fixes MSVC warning after #95734 - despite it taking the
sizeof(Val) == 4
path, it still warns that the 32-bit unsigned long shift by 32 is out of bounds.