aboutsummaryrefslogtreecommitdiff
path: root/lib/Analysis
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2001-06-27 23:41:11 +0000
committerChris Lattner <sabre@nondot.org>2001-06-27 23:41:11 +0000
commit7fc9fe34390c66ca58646d09a87f7dbaacb6c1f8 (patch)
treefd083cad8506b9f54d19b8429dfae825f264c35b /lib/Analysis
parent138a124f09de272b2ab93cfd6e2a8a283d18029b (diff)
Miscellaneous cleanups:
* Convert post to pre-increment for for loops * Use generic programming more * Use new Value::cast* instructions * Use new Module, Method, & BasicBlock forwarding methods * Use new facilities in STLExtras.h * Use new Instruction::isPHINode() method git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis')
-rw-r--r--lib/Analysis/IntervalPartition.cpp31
-rw-r--r--lib/Analysis/ModuleAnalyzer.cpp33
2 files changed, 31 insertions, 33 deletions
diff --git a/lib/Analysis/IntervalPartition.cpp b/lib/Analysis/IntervalPartition.cpp
index f820d7ad16..32936fd43d 100644
--- a/lib/Analysis/IntervalPartition.cpp
+++ b/lib/Analysis/IntervalPartition.cpp
@@ -6,6 +6,7 @@
//===----------------------------------------------------------------------===//
#include "llvm/Analysis/IntervalIterator.h"
+#include "llvm/Tools/STLExtras.h"
using namespace cfg;
@@ -49,22 +50,24 @@ void IntervalPartition::updatePredecessors(cfg::Interval *Int) {
// specified method...
//
IntervalPartition::IntervalPartition(Method *M) {
- assert(M->getBasicBlocks().front() && "Cannot operate on prototypes!");
+ assert(M->front() && "Cannot operate on prototypes!");
// Pass false to intervals_begin because we take ownership of it's memory
method_interval_iterator I = intervals_begin(M, false);
- method_interval_iterator End = intervals_end(M);
- assert(I != End && "No intervals in method!?!?!");
+ assert(I != intervals_end(M) && "No intervals in method!?!?!");
addIntervalToPartition(RootInterval = *I);
- for (++I; I != End; ++I)
- addIntervalToPartition(*I);
+ ++I; // After the first one...
+
+ // Add the rest of the intervals to the partition...
+ for_each(I, intervals_end(M),
+ bind_obj(this, &IntervalPartition::addIntervalToPartition));
// Now that we know all of the successor information, propogate this to the
// predecessors for each block...
- for(iterator It = begin(), E = end(); It != E; ++It)
- updatePredecessors(*It);
+ for_each(begin(), end(),
+ bind_obj(this, &IntervalPartition::updatePredecessors));
}
@@ -78,16 +81,18 @@ IntervalPartition::IntervalPartition(IntervalPartition &IP, bool) {
// Pass false to intervals_begin because we take ownership of it's memory
interval_part_interval_iterator I = intervals_begin(IP, false);
- interval_part_interval_iterator End = intervals_end(IP);
- assert(I != End && "No intervals in interval partition!?!?!");
+ assert(I != intervals_end(IP) && "No intervals in interval partition!?!?!");
addIntervalToPartition(RootInterval = *I);
- for (++I; I != End; ++I)
- addIntervalToPartition(*I);
+ ++I; // After the first one...
+
+ // Add the rest of the intervals to the partition...
+ for_each(I, intervals_end(IP),
+ bind_obj(this, &IntervalPartition::addIntervalToPartition));
// Now that we know all of the successor information, propogate this to the
// predecessors for each block...
- for(iterator I = begin(), E = end(); I != E; ++I)
- updatePredecessors(*I);
+ for_each(begin(), end(),
+ bind_obj(this, &IntervalPartition::updatePredecessors));
}
diff --git a/lib/Analysis/ModuleAnalyzer.cpp b/lib/Analysis/ModuleAnalyzer.cpp
index 1c3464e48c..0f028d12dd 100644
--- a/lib/Analysis/ModuleAnalyzer.cpp
+++ b/lib/Analysis/ModuleAnalyzer.cpp
@@ -13,6 +13,7 @@
#include "llvm/BasicBlock.h"
#include "llvm/DerivedTypes.h"
#include "llvm/ConstPoolVals.h"
+#include "llvm/Tools/STLExtras.h"
#include <map>
// processModule - Driver function to call all of my subclasses virtual methods.
@@ -87,7 +88,7 @@ bool ModuleAnalyzer::processConstPool(const ConstantPool &CP, bool isMethod) {
if (processConstPoolPlane(CP, Plane, isMethod)) return true;
for (ConstantPool::PlaneType::const_iterator CI = Plane.begin();
- CI != Plane.end(); CI++) {
+ CI != Plane.end(); ++CI) {
if ((*CI)->getType() == Type::TypeTy)
if (handleType(TypeSet, ((const ConstPoolType*)(*CI))->getValue()))
return true;
@@ -98,11 +99,9 @@ bool ModuleAnalyzer::processConstPool(const ConstantPool &CP, bool isMethod) {
}
if (!isMethod) {
- assert(CP.getParent()->getValueType() == Value::ModuleVal);
- const Module *M = (const Module*)CP.getParent();
+ const Module *M = CP.getParent()->castModuleAsserting();
// Process the method types after the constant pool...
- for (Module::MethodListType::const_iterator I = M->getMethodList().begin();
- I != M->getMethodList().end(); I++) {
+ for (Module::const_iterator I = M->begin(); I != M->end(); ++I) {
if (handleType(TypeSet, (*I)->getType())) return true;
if (visitMethod(*I)) return true;
}
@@ -111,34 +110,28 @@ bool ModuleAnalyzer::processConstPool(const ConstantPool &CP, bool isMethod) {
}
bool ModuleAnalyzer::processMethods(const Module *M) {
- for (Module::MethodListType::const_iterator I = M->getMethodList().begin();
- I != M->getMethodList().end(); I++)
- if (processMethod(*I)) return true;
-
- return false;
+ return apply_until(M->begin(), M->end(),
+ bind_obj(this, &ModuleAnalyzer::processMethod));
}
bool ModuleAnalyzer::processMethod(const Method *M) {
// Loop over the arguments, processing them...
- const Method::ArgumentListType &ArgList = M->getArgumentList();
- for (Method::ArgumentListType::const_iterator AI = ArgList.begin();
- AI != ArgList.end(); AI++)
- if (processMethodArgument(*AI)) return true;
+ if (apply_until(M->getArgumentList().begin(), M->getArgumentList().end(),
+ bind_obj(this, &ModuleAnalyzer::processMethodArgument)))
+ return true;
// Loop over the constant pool, adding the constants to the table...
processConstPool(M->getConstantPool(), true);
// Loop over all the basic blocks, in order...
- Method::BasicBlocksType::const_iterator BBI = M->getBasicBlocks().begin();
- for (; BBI != M->getBasicBlocks().end(); BBI++)
- if (processBasicBlock(*BBI)) return true;
- return false;
+ return apply_until(M->begin(), M->end(),
+ bind_obj(this, &ModuleAnalyzer::processBasicBlock));
}
bool ModuleAnalyzer::processBasicBlock(const BasicBlock *BB) {
// Process all of the instructions in the basic block
- BasicBlock::InstListType::const_iterator Inst = BB->getInstList().begin();
- for (; Inst != BB->getInstList().end(); Inst++) {
+ BasicBlock::const_iterator Inst = BB->begin();
+ for (; Inst != BB->end(); Inst++) {
if (preProcessInstruction(*Inst) || processInstruction(*Inst)) return true;
}
return false;