[llvm-commits] [parallel] CVS: llvm/include/llvm/Analysis/ParallelInfo.h
Misha Brukman
brukman at cs.uiuc.edu
Fri Apr 16 11:35:01 PDT 2004
Changes in directory llvm/include/llvm/Analysis:
ParallelInfo.h updated: 1.1.2.2 -> 1.1.2.3
---
Log message:
Accept a header BasicBlock in ParallelSeq constructor, various cleanups.
---
Diffs of the changes: (+20 -20)
Index: llvm/include/llvm/Analysis/ParallelInfo.h
diff -u llvm/include/llvm/Analysis/ParallelInfo.h:1.1.2.2 llvm/include/llvm/Analysis/ParallelInfo.h:1.1.2.3
--- llvm/include/llvm/Analysis/ParallelInfo.h:1.1.2.2 Sun Feb 8 13:56:14 2004
+++ llvm/include/llvm/Analysis/ParallelInfo.h Fri Apr 16 11:35:12 2004
@@ -30,6 +30,7 @@
///
class ParallelRegion {
ParallelSeq *parent;
+ std::vector<ParallelSeq*> children;
std::vector<BasicBlock*> Blocks;
public:
@@ -43,12 +44,14 @@
ParallelRegion(ParallelSeq *PS) : parent(PS) {}
ParallelRegion(BasicBlock *BB) : parent(0) { Blocks.push_back(BB); }
ParallelRegion() : parent(0) {}
+ ~ParallelRegion();
static ParallelRegion* discoverRegion(BasicBlock *pbrBlock,
BasicBlock *begin, BasicBlock *end);
void addBasicBlock(BasicBlock *BB) { Blocks.push_back(BB); }
void removeBasicBlock(BasicBlock *BB);
bool contains(const BasicBlock *BB);
+ void addChildSeq(ParallelSeq *PS);
ParallelSeq *getParent() { return parent; }
@@ -63,9 +66,8 @@
/// before the end of the function.
///
class ParallelSeq {
- ParallelSeq *ParentSeq;
+ ParallelRegion *parent;
BasicBlock *SeqHeader;
- std::vector<ParallelSeq*> ParaSubSeqs; // Other parallel sequences contained
std::vector<ParallelRegion*> Regions; // Parallel code regions
std::vector<BasicBlock*> JoinBlocks; // Blocks containing "join", if any
@@ -73,16 +75,16 @@
const ParallelSeq &operator=(const ParallelSeq &); // DO NOT IMPLEMENT
public:
+ ParallelSeq(ParallelRegion *PR0, ParallelRegion *PR1, BasicBlock *SeqHd = 0)
+ : parent(0), SeqHeader(SeqHd) {
+ Regions.push_back(PR0);
+ Regions.push_back(PR1);
+ }
+
/// contains - Return true of the specified basic block is in this sequence
///
bool contains(const BasicBlock *BB) const;
- /// iterator/begin/end - Return the seqs contained entirely within this seq.
- ///
- typedef std::vector<ParallelSeq*>::const_iterator iterator;
- iterator begin() const { return ParaSubSeqs.begin(); }
- iterator end() const { return ParaSubSeqs.end(); }
-
/// region_iterator/region_begin/region_end - Return the regions contained
/// within this parallel sequence.
///
@@ -99,16 +101,13 @@
///
BasicBlock *getHeader() const { return SeqHeader; }
+ void setParent(ParallelRegion *PR) { parent = PR; }
+
void print(std::ostream &O, unsigned Depth = 0) const;
void dump() const;
private:
friend class ParallelInfo;
- inline ParallelSeq(ParallelRegion *PR0, ParallelRegion *PR1)
- : ParentSeq(0), SeqHeader(0) {
- Regions.push_back(PR0);
- Regions.push_back(PR1);
- }
};
@@ -120,20 +119,21 @@
std::vector<ParallelSeq*> TopLevelSeqs;
friend class ParallelSeq;
- /// getAnalysisUsage - Requires dominator sets
- ///
- virtual void getAnalysisUsage(AnalysisUsage &AU) const;
+ void print(std::ostream &O) const;
+
+ ParallelSeq* ConsiderParallelSeq(BasicBlock *BB, const DominatorSet &DS);
+
+public:
/// runOnFunction - Calculate the parallel region information.
///
virtual bool runOnFunction(Function &F);
- void print(std::ostream &O) const;
+ /// getAnalysisUsage - Requires dominator sets
+ ///
+ virtual void getAnalysisUsage(AnalysisUsage &AU) const;
void Calculate(const DominatorSet &DS);
- ParallelSeq* ConsiderParallelSeq(BasicBlock *BB, const DominatorSet &DS);
-
-public:
/// iterator/begin/end - The interface to the top-level parallel sequences in
/// the current function.
More information about the llvm-commits
mailing list