On Jun 8, 2007, at 10:47 AM, Chris Lattner wrote:
>> --- llvm/include/llvm/Analysis/Dominators.h:1.95 Thu Jun 7
>> 16:34:22 2007
>> +++ llvm/include/llvm/Analysis/Dominators.h Thu Jun 7 17:17:16 2007
>> @@ -142,6 +142,16 @@
>> return getNode(BB);
>>}
>>
>> + /// getIDomBlock - re
>>> + /// getIDomBlock - return basic block BB's immediate domiantor
>>> basic block.
>>> + ///
>>> + BasicBlock *getIDomBlock(BasicBlock *BB) {
>>> +DomTreeNode *N = getNode(BB);
>>> +assert (N && "Missing dominator tree node");
>>> +DomTreeNode *I = N->getIDom();
>>> +assert (N
> --- llvm/include/llvm/Analysis/Dominators.h:1.95 Thu Jun 7
> 16:34:22 2007
> +++ llvm/include/llvm/Analysis/Dominators.h Thu Jun 7 17:17:16 2007
> @@ -142,6 +142,16 @@
> return getNode(BB);
>}
>
> + /// getIDomBlock - return basic block BB's immediate domiantor
> basic bloc
> Add accessor to get the blocks immediately dominated by a given
> block to ETForest.
Ok...
> @@ -327,6 +327,20 @@
> const ETNode *idom = NodeA->getFather();
> return idom ? idom->getData() : 0;
>}
> +
> + void getChildren(BasicBlock *A, std::vector&
> children) {
> +ETNod
>/// Return the immediate dominator of A.
> - BasicBlock *getIDom(BasicBlock *A) {
> + BasicBlock *getIDom(BasicBlock *A) const {
> +if (!A) return 0;
> +
> ETNode *NodeA = getNode(A);
A can't be null here, please check that NodeA isn't null instead
(i.e. that A is reachable).
-C
> + /// Return the immediate dominator of A.
> + BasicBlock *getIDom(BasicBlock *A) {
> +ETNode *NodeA = getNode(A);
> +const ETNode *idom = NodeA->getFather();
> +return idom ? idom->getData() : 0;
> + }
Random other question: Why does ETNode have a template accessor to
get its
On Apr 19, 2007, at 11:10 AM, Devang Patel wrote:
>
> On Apr 17, 2007, at 9:38 PM, Owen Anderson wrote:
>
>> Index: llvm/include/llvm/Analysis/Dominators.h
>> diff -u llvm/include/llvm/Analysis/Dominators.h:1.72 llvm/include/
>> llvm/Analysis/Dominators.h:1.73
>> --- llvm/include/llvm/Analysis/Do
On Apr 17, 2007, at 9:38 PM, Owen Anderson wrote:
> Index: llvm/include/llvm/Analysis/Dominators.h
> diff -u llvm/include/llvm/Analysis/Dominators.h:1.72 llvm/include/
> llvm/Analysis/Dominators.h:1.73
> --- llvm/include/llvm/Analysis/Dominators.h:1.72 Sun Apr 15 18:14:18
> 2007
> +++ llv
> @@ -225,10 +225,10 @@
>void Compress(BasicBlock *V, InfoRec &VInfo);
>BasicBlock *Eval(BasicBlock *v);
>void Link(BasicBlock *V, BasicBlock *W, InfoRec &WInfo);
> - inline BasicBlock *getIDom(BasicBlock *BB) const {
> - std::map::const_iterator I =
> IDoms.find(BB);
> -
> Remove ImmediateDominator analysis. The same information can be
> obtained from DomTree. A lot of code for
> constructing ImmediateDominator is now folded into DomTree
> construction.
>
> This is part of the ongoing work for PR217: http://llvm.org/PR217 .
Woot.
> +
> + struct InfoRec {
> --- llvm/include/llvm/Analysis/Dominators.h:1.67 Sun Apr 8
> 16:30:05 2007
> +++ llvm/include/llvm/Analysis/Dominators.h Sun Apr 8 19:52:49 2007
> @@ -27,6 +27,7 @@
> #define LLVM_ANALYSIS_DOMINATORS_H
>
> #include "llvm/Analysis/ET-Forest.h"
> +#include "llvm/Function.h"
> #include
11 matches
Mail list logo