1 //===-- VPlanDominatorTree.h ------------------------------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 /// 9 /// \file 10 /// This file implements dominator tree analysis for a single level of a VPlan's 11 /// H-CFG. 12 /// 13 //===----------------------------------------------------------------------===// 14 15 #ifndef LLVM_TRANSFORMS_VECTORIZE_VPLANDOMINATORTREE_H 16 #define LLVM_TRANSFORMS_VECTORIZE_VPLANDOMINATORTREE_H 17 18 #include "VPlan.h" 19 #include "llvm/ADT/GraphTraits.h" 20 #include "llvm/IR/Dominators.h" 21 22 namespace llvm { 23 24 /// Template specialization of the standard LLVM dominator tree utility for 25 /// VPBlockBases. 26 using VPDominatorTree = DomTreeBase<VPBlockBase>; 27 28 using VPDomTreeNode = DomTreeNodeBase<VPBlockBase>; 29 30 /// Template specializations of GraphTraits for VPDomTreeNode. 31 template <> 32 struct GraphTraits<VPDomTreeNode *> 33 : public DomTreeGraphTraitsBase<VPDomTreeNode, VPDomTreeNode::iterator> {}; 34 35 template <> 36 struct GraphTraits<const VPDomTreeNode *> 37 : public DomTreeGraphTraitsBase<const VPDomTreeNode, 38 VPDomTreeNode::const_iterator> {}; 39 } // namespace llvm 40 #endif // LLVM_TRANSFORMS_VECTORIZE_VPLANDOMINATORTREE_H 41