[llvm] EarlyCSE: fix CmpPredicate duplicate-hashing (PR #119902)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Dec 13 09:14:26 PST 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-llvm-ir
Author: Ramkumar Ramachandra (artagnon)
<details>
<summary>Changes</summary>
Fixes #<!-- -->119893.
---
Full diff: https://github.com/llvm/llvm-project/pull/119902.diff
3 Files Affected:
- (modified) llvm/include/llvm/IR/CmpPredicate.h (-6)
- (modified) llvm/lib/IR/Instructions.cpp (-4)
- (modified) llvm/lib/Transforms/Scalar/EarlyCSE.cpp (+2-1)
``````````diff
diff --git a/llvm/include/llvm/IR/CmpPredicate.h b/llvm/include/llvm/IR/CmpPredicate.h
index ce78e4311f9f82..9aa1449465f5ff 100644
--- a/llvm/include/llvm/IR/CmpPredicate.h
+++ b/llvm/include/llvm/IR/CmpPredicate.h
@@ -71,13 +71,7 @@ class CmpPredicate {
/// Get the swapped predicate of a CmpInst.
static CmpPredicate getSwapped(const CmpInst *Cmp);
-
- /// Provided to facilitate storing a CmpPredicate in data structures that
- /// require hashing.
- friend hash_code hash_value(const CmpPredicate &Arg); // NOLINT
};
-
-[[nodiscard]] hash_code hash_value(const CmpPredicate &Arg);
} // namespace llvm
#endif
diff --git a/llvm/lib/IR/Instructions.cpp b/llvm/lib/IR/Instructions.cpp
index d1da02c744f18c..2d6fe40f4c1de0 100644
--- a/llvm/lib/IR/Instructions.cpp
+++ b/llvm/lib/IR/Instructions.cpp
@@ -3946,10 +3946,6 @@ CmpPredicate CmpPredicate::getSwapped(const CmpInst *Cmp) {
return getSwapped(get(Cmp));
}
-hash_code llvm::hash_value(const CmpPredicate &Arg) { // NOLINT
- return hash_combine(Arg.Pred, Arg.HasSameSign);
-}
-
//===----------------------------------------------------------------------===//
// SwitchInst Implementation
//===----------------------------------------------------------------------===//
diff --git a/llvm/lib/Transforms/Scalar/EarlyCSE.cpp b/llvm/lib/Transforms/Scalar/EarlyCSE.cpp
index 682c5c3d8c6340..3a0ae6b01a1144 100644
--- a/llvm/lib/Transforms/Scalar/EarlyCSE.cpp
+++ b/llvm/lib/Transforms/Scalar/EarlyCSE.cpp
@@ -290,7 +290,8 @@ static unsigned getHashValueImpl(SimpleValue Val) {
Pred = CmpInst::getInversePredicate(Pred);
std::swap(A, B);
}
- return hash_combine(Inst->getOpcode(), Pred, X, Y, A, B);
+ return hash_combine(Inst->getOpcode(),
+ static_cast<CmpInst::Predicate>(Pred), X, Y, A, B);
}
if (CastInst *CI = dyn_cast<CastInst>(Inst))
``````````
</details>
https://github.com/llvm/llvm-project/pull/119902
More information about the llvm-commits
mailing list