diff --git a/mlir/include/mlir/Pass/AnalysisManager.h b/mlir/include/mlir/Pass/AnalysisManager.h index 199ffee792bb5..45009d4b02a58 100644 --- a/mlir/include/mlir/Pass/AnalysisManager.h +++ b/mlir/include/mlir/Pass/AnalysisManager.h @@ -85,17 +85,14 @@ template using has_is_invalidated = decltype(std::declval().isInvalidated( std::declval())); -/// Implementation of 'isInvalidated' if the analysis provides a definition. template -std::enable_if_t::value, bool> -isInvalidated(AnalysisT &analysis, const PreservedAnalyses &pa) { - return analysis.isInvalidated(pa); -} -/// Default implementation of 'isInvalidated'. -template -std::enable_if_t::value, bool> -isInvalidated(AnalysisT &analysis, const PreservedAnalyses &pa) { - return !pa.isPreserved(); +bool isInvalidated(AnalysisT &analysis, const PreservedAnalyses &pa) { + if constexpr (llvm::is_detected::value) + /// Implementation of 'isInvalidated' if the analysis provides a definition. + return analysis.isInvalidated(pa); + else + /// Default implementation of 'isInvalidated'. + return !pa.isPreserved(); } } // namespace analysis_impl