[llvm-commits] [llvm] r41052 - in /llvm/trunk: include/llvm/Analysis/Dominators.h lib/VMCore/Dominators.cpp
Chris Lattner
clattner at apple.com
Tue Aug 14 08:49:32 PDT 2007
> URL: http://llvm.org/viewvc/llvm-project?rev=41052&view=rev
> Log:
> Add methods to erase basic block entry.
>
> + /// removeBlock - Remove basic block BB's frontier.
> + void removeBlock(BasicBlock *BB) {
> + assert(find(BB) != end() && "Block is not in
> DominanceFrontier!");
> + iterator BBDF = Frontiers.find(BB);
> + Frontiers.erase(BBDF);
This can just do: Frontiers.erase(BB);
>
> +/// eraseNode - Removes a node from the domiantor tree. Block
> must not
domiantor -> dominator
> +/// domiante any other blocks. Removes node from its immediate
> dominator's
domiante -> dominate
> +/// children list. Deletes dominator node associated with basic
> block BB.
> +void DominatorTreeBase::eraseNode(BasicBlock *BB) {
Since this can only remove leaf nodes (no children in the domtree)
would it make sense to name this eraseLeafNode?
> + DomTreeNode *Node = getNode(BB);
> + assert (Node && "Removing node that isn't in dominator tree.");
> +
> + // Remove node from immediate dominator's children list.
> + DomTreeNode *IDom = Node->getIDom();
> + if (IDom) {
> + std::vector<DomTreeNode*>::iterator I =
> + std::find(IDom->Children.begin(), IDom->Children.end(), Node);
> + assert(I != IDom->Children.end() &&
> + "Not in immediate dominator children set!");
> + // I am no longer your child...
> + IDom->Children.erase(I);
> + }
> +
> + assert (Node->getChildren().empty() && "Children list is not
> empty");
Please move this assertion up to the top, say "Node is not a leaf" or
something.
Thanks Devang,
-Chris
More information about the llvm-commits
mailing list