Skip to content
Snippets Groups Projects
Commit bb97db3d authored by Preston Briggs's avatar Preston Briggs
Browse files

extending the interface of Dependence slightly to support future work

llvm-svn: 185241
parent 5c47650f
No related branches found
No related tags found
No related merge requests found
...@@ -61,11 +61,20 @@ namespace llvm { ...@@ -61,11 +61,20 @@ namespace llvm {
/// cases (for output, flow, and anti dependences), the dependence implies /// cases (for output, flow, and anti dependences), the dependence implies
/// an ordering, where the source must precede the destination; in contrast, /// an ordering, where the source must precede the destination; in contrast,
/// input dependences are unordered. /// input dependences are unordered.
///
/// When a dependence graph is built, each Dependence will be a member of
/// the set of predecessor edges for its destination instruction and a set
/// if successor edges for its source instruction. These sets are represented
/// as singly-linked lists, with the "next" fields stored in the dependence
/// itelf.
class Dependence { class Dependence {
public: public:
Dependence(Instruction *Source, Dependence(Instruction *Source,
Instruction *Destination) : Instruction *Destination) :
Src(Source), Dst(Destination) {} Src(Source),
Dst(Destination),
NextPredecessor(NULL),
NextSuccessor(NULL) {}
virtual ~Dependence() {} virtual ~Dependence() {}
/// Dependence::DVEntry - Each level in the distance/direction vector /// Dependence::DVEntry - Each level in the distance/direction vector
...@@ -164,11 +173,36 @@ namespace llvm { ...@@ -164,11 +173,36 @@ namespace llvm {
/// variable associated with the loop at this level. /// variable associated with the loop at this level.
virtual bool isScalar(unsigned Level) const; virtual bool isScalar(unsigned Level) const;
/// getNextPredecessor - Returns the value of the NextPredecessor
/// field.
const Dependence *getNextPredecessor() const {
return NextPredecessor;
}
/// getNextSuccessor - Returns the value of the NextSuccessor
/// field.
const Dependence *getNextSuccessor() const {
return NextSuccessor;
}
/// setNextPredecessor - Sets the value of the NextPredecessor
/// field.
void setNextPredecessor(const Dependence *pred) {
NextPredecessor = pred;
}
/// setNextSuccessor - Sets the value of the NextSuccessor
/// field.
void setNextSuccessor(const Dependence *succ) {
NextSuccessor = succ;
}
/// dump - For debugging purposes, dumps a dependence to OS. /// dump - For debugging purposes, dumps a dependence to OS.
/// ///
void dump(raw_ostream &OS) const; void dump(raw_ostream &OS) const;
private: private:
Instruction *Src, *Dst; Instruction *Src, *Dst;
const Dependence *NextPredecessor, *NextSuccessor;
friend class DependenceAnalysis; friend class DependenceAnalysis;
}; };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment