diff options
author | Owen Anderson <resistor@mac.com> | 2006-05-27 00:31:37 +0000 |
---|---|---|
committer | Owen Anderson <resistor@mac.com> | 2006-05-27 00:31:37 +0000 |
commit | a90b2c7240ef4b2db134cc3ae55210652508f073 (patch) | |
tree | 068f86b670919d751c7aa3a3c03072b96b71390d /lib/Transforms/Utils/LCSSA.cpp | |
parent | d61c4820c9e39500a67bec4d6cfe521a833afdcc (diff) |
A few small clean-ups, and the addition of an LCSSA statistic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28512 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Utils/LCSSA.cpp')
-rw-r--r-- | lib/Transforms/Utils/LCSSA.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/Transforms/Utils/LCSSA.cpp b/lib/Transforms/Utils/LCSSA.cpp index 43f331d71b..c8d9487a6d 100644 --- a/lib/Transforms/Utils/LCSSA.cpp +++ b/lib/Transforms/Utils/LCSSA.cpp @@ -31,18 +31,22 @@ #include "llvm/Pass.h" #include "llvm/Function.h" #include "llvm/Instructions.h" +#include "llvm/ADT/Statistic.h" #include "llvm/Analysis/Dominators.h" #include "llvm/Analysis/LoopInfo.h" #include "llvm/Support/CFG.h" #include <algorithm> -#include <set> #include <vector> using namespace llvm; namespace { + static Statistic<> NumLCSSA("lcssa", "Number of times LCSSA was applied"); + class LCSSA : public FunctionPass { public: + + LoopInfo *LI; // Loop information DominatorTree *DT; // Dominator Tree for the current Loop... DominanceFrontier *DF; // Current Dominance Frontier @@ -51,7 +55,8 @@ namespace { bool visitSubloop(Loop* L); /// This transformation requires natural loop information & requires that - /// loop preheaders be inserted into the CFG... + /// loop preheaders be inserted into the CFG. It maintains both of these, + /// as well as the CFG. It also requires dominator information. /// virtual void getAnalysisUsage(AnalysisUsage &AU) const { AU.setPreservesCFG(); @@ -102,6 +107,7 @@ bool LCSSA::visitSubloop(Loop* L) { for (std::set<Instruction*>::iterator I = AffectedValues.begin(), E = AffectedValues.end(); I != E; ++I) { + ++NumLCSSA; // We are applying the transformation for (std::vector<BasicBlock*>::iterator BBI = exitBlocks.begin(), BBE = exitBlocks.end(); BBI != BBE; ++BBI) { PHINode *phi = new PHINode((*I)->getType(), "lcssa"); |