@@ -85,17 +85,14 @@ template <typename T, typename... Args>
8585using has_is_invalidated = decltype (std::declval<T &>().isInvalidated(
8686 std::declval<const PreservedAnalyses &>()));
8787
88- // / Implementation of 'isInvalidated' if the analysis provides a definition.
8988template <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>();
9996}
10097} // namespace analysis_impl
10198
0 commit comments