@@ -85,17 +85,14 @@ template <typename T, typename... Args>
85
85
using has_is_invalidated = decltype (std::declval<T &>().isInvalidated(
86
86
std::declval<const PreservedAnalyses &>()));
87
87
88
- // / Implementation of 'isInvalidated' if the analysis provides a definition.
89
88
template <typename AnalysisT>
90
- std::enable_if_t <llvm::is_detected<has_is_invalidated, AnalysisT>::value, bool >
91
- isInvalidated (AnalysisT &analysis, const PreservedAnalyses &pa) {
92
- return analysis.isInvalidated (pa);
93
- }
94
- // / Default implementation of 'isInvalidated'.
95
- template <typename AnalysisT>
96
- std::enable_if_t <!llvm::is_detected<has_is_invalidated, AnalysisT>::value, bool >
97
- isInvalidated (AnalysisT &analysis, const PreservedAnalyses &pa) {
98
- return !pa.isPreserved <AnalysisT>();
89
+ bool isInvalidated (AnalysisT &analysis, const PreservedAnalyses &pa) {
90
+ if constexpr (llvm::is_detected<has_is_invalidated, AnalysisT>::value)
91
+ // / Implementation of 'isInvalidated' if the analysis provides a definition.
92
+ return analysis.isInvalidated (pa);
93
+ else
94
+ // / Default implementation of 'isInvalidated'.
95
+ return !pa.isPreserved <AnalysisT>();
99
96
}
100
97
} // namespace analysis_impl
101
98
0 commit comments