[Mlir-commits] [mlir] 25b05e0 - [mlir] Simplify functions with "constexpr if" (NFC) (#137551)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Sun Apr 27 15:59:47 PDT 2025
Author: Kazu Hirata
Date: 2025-04-27T15:59:44-07:00
New Revision: 25b05e0b234fe4d26f9717bf505566892479bee6
URL: https://github.com/llvm/llvm-project/commit/25b05e0b234fe4d26f9717bf505566892479bee6
DIFF: https://github.com/llvm/llvm-project/commit/25b05e0b234fe4d26f9717bf505566892479bee6.diff
LOG: [mlir] Simplify functions with "constexpr if" (NFC) (#137551)
We can use "constexpr if" to combine the two variants of functions.
Added:
Modified:
mlir/include/mlir/IR/OpDefinition.h
mlir/include/mlir/IR/PatternMatch.h
mlir/include/mlir/Pass/PassOptions.h
Removed:
################################################################################
diff --git a/mlir/include/mlir/IR/OpDefinition.h b/mlir/include/mlir/IR/OpDefinition.h
index 237d48756c749..31f54413a5ff0 100644
--- a/mlir/include/mlir/IR/OpDefinition.h
+++ b/mlir/include/mlir/IR/OpDefinition.h
@@ -1631,14 +1631,11 @@ using detect_has_verify_region_trait =
/// Verify the given trait if it provides a verifier.
template <typename T>
-std::enable_if_t<detect_has_verify_trait<T>::value, LogicalResult>
-verifyTrait(Operation *op) {
- return T::verifyTrait(op);
-}
-template <typename T>
-inline std::enable_if_t<!detect_has_verify_trait<T>::value, LogicalResult>
-verifyTrait(Operation *) {
- return success();
+LogicalResult verifyTrait(Operation *op) {
+ if constexpr (detect_has_verify_trait<T>::value)
+ return T::verifyTrait(op);
+ else
+ return success();
}
/// Given a set of traits, return the result of verifying the given operation.
@@ -1649,15 +1646,11 @@ LogicalResult verifyTraits(Operation *op) {
/// Verify the given trait if it provides a region verifier.
template <typename T>
-std::enable_if_t<detect_has_verify_region_trait<T>::value, LogicalResult>
-verifyRegionTrait(Operation *op) {
- return T::verifyRegionTrait(op);
-}
-template <typename T>
-inline std::enable_if_t<!detect_has_verify_region_trait<T>::value,
- LogicalResult>
-verifyRegionTrait(Operation *) {
- return success();
+LogicalResult verifyRegionTrait(Operation *op) {
+ if constexpr (detect_has_verify_region_trait<T>::value)
+ return T::verifyRegionTrait(op);
+ else
+ return success();
}
/// Given a set of traits, return the result of verifying the regions of the
diff --git a/mlir/include/mlir/IR/PatternMatch.h b/mlir/include/mlir/IR/PatternMatch.h
index fc6ae8fb55fec..10cfe851765dc 100644
--- a/mlir/include/mlir/IR/PatternMatch.h
+++ b/mlir/include/mlir/IR/PatternMatch.h
@@ -273,17 +273,13 @@ class RewritePattern : public Pattern {
template <typename T>
using detect_has_initialize = llvm::is_detected<has_initialize, T>;
- /// Initialize the derived pattern by calling its `initialize` method.
+ /// Initialize the derived pattern by calling its `initialize` method if
+ /// available.
template <typename T>
- static std::enable_if_t<detect_has_initialize<T>::value>
- initializePattern(T &pattern) {
- pattern.initialize();
+ static void initializePattern(T &pattern) {
+ if constexpr (detect_has_initialize<T>::value)
+ pattern.initialize();
}
- /// Empty derived pattern initializer for patterns that do not have an
- /// initialize method.
- template <typename T>
- static std::enable_if_t<!detect_has_initialize<T>::value>
- initializePattern(T &) {}
/// An anchor for the virtual table.
virtual void anchor();
diff --git a/mlir/include/mlir/Pass/PassOptions.h b/mlir/include/mlir/Pass/PassOptions.h
index 68588279e2f5a..e1f16c6158ad5 100644
--- a/mlir/include/mlir/Pass/PassOptions.h
+++ b/mlir/include/mlir/Pass/PassOptions.h
@@ -75,16 +75,13 @@ static void printOptionValue(raw_ostream &os, const std::string &str) {
os << "}";
}
template <typename ParserT, typename DataT>
-static std::enable_if_t<has_stream_operator<DataT>::value>
-printOptionValue(raw_ostream &os, const DataT &value) {
- os << value;
-}
-template <typename ParserT, typename DataT>
-static std::enable_if_t<!has_stream_operator<DataT>::value>
-printOptionValue(raw_ostream &os, const DataT &value) {
- // If the value can't be streamed, fallback to checking for a print in the
- // parser.
- ParserT::print(os, value);
+static void printOptionValue(raw_ostream &os, const DataT &value) {
+ if constexpr (has_stream_operator<DataT>::value)
+ os << value;
+ else
+ // If the value can't be streamed, fallback to checking for a print in the
+ // parser.
+ ParserT::print(os, value);
}
} // namespace pass_options
More information about the Mlir-commits
mailing list