[llvm] [IR] Simplify HasCachedHash with is_detected (NFC) (PR #159510)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 17 23:01:46 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-llvm-ir
Author: Kazu Hirata (kazutakahirata)
<details>
<summary>Changes</summary>
With is_detected, we don't need to implement a SFINAE trick on our own.
---
Full diff: https://github.com/llvm/llvm-project/pull/159510.diff
1 Files Affected:
- (modified) llvm/lib/IR/Metadata.cpp (+2-7)
``````````diff
diff --git a/llvm/lib/IR/Metadata.cpp b/llvm/lib/IR/Metadata.cpp
index fc78a5b299f49..09e25ceaf59c3 100644
--- a/llvm/lib/IR/Metadata.cpp
+++ b/llvm/lib/IR/Metadata.cpp
@@ -986,15 +986,10 @@ static T *uniquifyImpl(T *N, DenseSet<T *, InfoT> &Store) {
}
template <class NodeTy> struct MDNode::HasCachedHash {
- using Yes = char[1];
- using No = char[2];
- template <class U, U Val> struct SFINAE {};
-
template <class U>
- static Yes &check(SFINAE<void (U::*)(unsigned), &U::setHash> *);
- template <class U> static No &check(...);
+ using check = decltype(static_cast<void (U::*)(unsigned)>(&U::setHash));
- static const bool value = sizeof(check<NodeTy>(nullptr)) == sizeof(Yes);
+ static constexpr bool value = is_detected<check, NodeTy>::value;
};
MDNode *MDNode::uniquify() {
``````````
</details>
https://github.com/llvm/llvm-project/pull/159510
More information about the llvm-commits
mailing list