//===- IteratedDominanceFrontier.h - Calculate IDF --------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLVM_ANALYSIS_ITERATEDDOMINANCEFRONTIER_H #define LLVM_ANALYSIS_ITERATEDDOMINANCEFRONTIER_H #include "llvm/Support/CFGDiff.h" #include "llvm/Support/GenericIteratedDominanceFrontier.h" namespace llvm { class BasicBlock; namespace IDFCalculatorDetail { /// Specialization for BasicBlock for the optional use of GraphDiff. ChildrenGetterTy<BasicBlock, IsPostDom>; } // end of namespace IDFCalculatorDetail template <bool IsPostDom> class IDFCalculator final : public IDFCalculatorBase<BasicBlock, IsPostDom> { … }; ForwardIDFCalculator; ReverseIDFCalculator; //===----------------------------------------------------------------------===// // Implementation. //===----------------------------------------------------------------------===// namespace IDFCalculatorDetail { template <bool IsPostDom> typename ChildrenGetterTy<BasicBlock, IsPostDom>::ChildrenTy ChildrenGetterTy<BasicBlock, IsPostDom>::get(const NodeRef &N) { … } } // end of namespace IDFCalculatorDetail } // end of namespace llvm #endif