nhaehnle created this revision. nhaehnle added reviewers: arsenm, RKSimon, mehdi_amini, courbet. Herald added subscribers: cfe-commits, msifontes, jurahul, Kayjukh, vkmr, grosul1, Joonsoo, stephenneuendorffer, liufengdb, aartbik, lucyrfox, mgester, arpith-jacob, nicolasvasilache, antiagainst, shauheen, jpienaar, rriddle, rogfer01, kuhar, hiraditya, Prazek, wdng. Herald added a reviewer: rriddle. Herald added a reviewer: aartbik. Herald added projects: clang, MLIR, LLVM. nhaehnle added a parent revision: D83086: DomTree: add private create{Child,Node} helpers. nhaehnle added a child revision: D83088: Introduce CfgTraits abstraction.
Almost all uses of these iterators, including implicit ones, really only need the const variant (as it should be). The only exception is in NewGVN, which changes the order of dominator tree child nodes. Change-Id: I4b5bd71e32d71b0c67b03d4927d93fe9413726d4 Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D83087 Files: clang/include/clang/Analysis/Analyses/Dominators.h llvm/include/llvm/CodeGen/MachineDominators.h llvm/include/llvm/IR/Dominators.h llvm/lib/Target/X86/X86InstrInfo.cpp llvm/lib/Transforms/Scalar/EarlyCSE.cpp llvm/lib/Transforms/Scalar/Sink.cpp llvm/lib/Transforms/Vectorize/VPlanDominatorTree.h mlir/include/mlir/IR/Dominance.h mlir/lib/Transforms/CSE.cpp
Index: mlir/lib/Transforms/CSE.cpp =================================================================== --- mlir/lib/Transforms/CSE.cpp +++ mlir/lib/Transforms/CSE.cpp @@ -64,7 +64,7 @@ ScopedMapTy::ScopeTy scope; DominanceInfoNode *node; - DominanceInfoNode::iterator childIterator; + DominanceInfoNode::const_iterator childIterator; /// If this node has been fully processed yet or not. bool processed; Index: mlir/include/mlir/IR/Dominance.h =================================================================== --- mlir/include/mlir/IR/Dominance.h +++ mlir/include/mlir/IR/Dominance.h @@ -141,7 +141,7 @@ /// DominatorTree GraphTraits specialization so the DominatorTree can be /// iterated by generic graph iterators. template <> struct GraphTraits<mlir::DominanceInfoNode *> { - using ChildIteratorType = mlir::DominanceInfoNode::iterator; + using ChildIteratorType = mlir::DominanceInfoNode::const_iterator; using NodeRef = mlir::DominanceInfoNode *; static NodeRef getEntryNode(NodeRef N) { return N; } Index: llvm/lib/Transforms/Vectorize/VPlanDominatorTree.h =================================================================== --- llvm/lib/Transforms/Vectorize/VPlanDominatorTree.h +++ llvm/lib/Transforms/Vectorize/VPlanDominatorTree.h @@ -30,7 +30,8 @@ /// Template specializations of GraphTraits for VPDomTreeNode. template <> struct GraphTraits<VPDomTreeNode *> - : public DomTreeGraphTraitsBase<VPDomTreeNode, VPDomTreeNode::iterator> {}; + : public DomTreeGraphTraitsBase<VPDomTreeNode, + VPDomTreeNode::const_iterator> {}; template <> struct GraphTraits<const VPDomTreeNode *> Index: llvm/lib/Transforms/Scalar/Sink.cpp =================================================================== --- llvm/lib/Transforms/Scalar/Sink.cpp +++ llvm/lib/Transforms/Scalar/Sink.cpp @@ -166,8 +166,8 @@ // dominated by one of the successors. // Look at all the dominated blocks and see if we can sink it in one. DomTreeNode *DTN = DT.getNode(Inst->getParent()); - for (DomTreeNode::iterator I = DTN->begin(), E = DTN->end(); - I != E && SuccToSinkTo == nullptr; ++I) { + for (auto I = DTN->begin(), E = DTN->end(); I != E && SuccToSinkTo == nullptr; + ++I) { BasicBlock *Candidate = (*I)->getBlock(); // A node always immediate-dominates its children on the dominator // tree. Index: llvm/lib/Transforms/Scalar/EarlyCSE.cpp =================================================================== --- llvm/lib/Transforms/Scalar/EarlyCSE.cpp +++ llvm/lib/Transforms/Scalar/EarlyCSE.cpp @@ -620,8 +620,8 @@ public: StackNode(ScopedHTType &AvailableValues, LoadHTType &AvailableLoads, InvariantHTType &AvailableInvariants, CallHTType &AvailableCalls, - unsigned cg, DomTreeNode *n, DomTreeNode::iterator child, - DomTreeNode::iterator end) + unsigned cg, DomTreeNode *n, DomTreeNode::const_iterator child, + DomTreeNode::const_iterator end) : CurrentGeneration(cg), ChildGeneration(cg), Node(n), ChildIter(child), EndIter(end), Scopes(AvailableValues, AvailableLoads, AvailableInvariants, @@ -635,7 +635,7 @@ unsigned childGeneration() { return ChildGeneration; } void childGeneration(unsigned generation) { ChildGeneration = generation; } DomTreeNode *node() { return Node; } - DomTreeNode::iterator childIter() { return ChildIter; } + DomTreeNode::const_iterator childIter() { return ChildIter; } DomTreeNode *nextChild() { DomTreeNode *child = *ChildIter; @@ -643,7 +643,7 @@ return child; } - DomTreeNode::iterator end() { return EndIter; } + DomTreeNode::const_iterator end() { return EndIter; } bool isProcessed() { return Processed; } void process() { Processed = true; } @@ -651,8 +651,8 @@ unsigned CurrentGeneration; unsigned ChildGeneration; DomTreeNode *Node; - DomTreeNode::iterator ChildIter; - DomTreeNode::iterator EndIter; + DomTreeNode::const_iterator ChildIter; + DomTreeNode::const_iterator EndIter; NodeScope Scopes; bool Processed = false; }; Index: llvm/lib/Target/X86/X86InstrInfo.cpp =================================================================== --- llvm/lib/Target/X86/X86InstrInfo.cpp +++ llvm/lib/Target/X86/X86InstrInfo.cpp @@ -8660,8 +8660,7 @@ } // Visit the children of this block in the dominator tree. - for (MachineDomTreeNode::iterator I = Node->begin(), E = Node->end(); - I != E; ++I) { + for (auto I = Node->begin(), E = Node->end(); I != E; ++I) { Changed |= VisitNode(*I, TLSBaseAddrReg); } Index: llvm/include/llvm/IR/Dominators.h =================================================================== --- llvm/include/llvm/IR/Dominators.h +++ llvm/include/llvm/IR/Dominators.h @@ -208,7 +208,8 @@ template <> struct GraphTraits<DomTreeNode *> - : public DomTreeGraphTraitsBase<DomTreeNode, DomTreeNode::iterator> {}; + : public DomTreeGraphTraitsBase<DomTreeNode, DomTreeNode::const_iterator> { +}; template <> struct GraphTraits<const DomTreeNode *> Index: llvm/include/llvm/CodeGen/MachineDominators.h =================================================================== --- llvm/include/llvm/CodeGen/MachineDominators.h +++ llvm/include/llvm/CodeGen/MachineDominators.h @@ -261,7 +261,8 @@ template <> struct GraphTraits<MachineDomTreeNode *> : public MachineDomTreeGraphTraitsBase<MachineDomTreeNode, - MachineDomTreeNode::iterator> {}; + MachineDomTreeNode::const_iterator> { +}; template <> struct GraphTraits<const MachineDomTreeNode *> Index: clang/include/clang/Analysis/Analyses/Dominators.h =================================================================== --- clang/include/clang/Analysis/Analyses/Dominators.h +++ clang/include/clang/Analysis/Analyses/Dominators.h @@ -349,7 +349,7 @@ /// template <> struct GraphTraits<clang::DomTreeNode *> { using NodeRef = ::clang::DomTreeNode *; - using ChildIteratorType = ::clang::DomTreeNode::iterator; + using ChildIteratorType = ::clang::DomTreeNode::const_iterator; static NodeRef getEntryNode(NodeRef N) { return N; } static ChildIteratorType child_begin(NodeRef N) { return N->begin(); }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits