@@ -37,7 +37,6 @@ namespace tsar {
3737 class TransformationContext ;
3838 class DIAliasNode ;
3939 class DIAliasTree ;
40- class MemoryMatchInfo ;
4140}
4241
4342namespace clang {
@@ -49,7 +48,6 @@ namespace llvm {
4948
5049class Loop ;
5150class MDNode ;
52- class GlobalsAAResult ;
5351
5452class ClangLoopSwapping : public FunctionPass , private bcl ::Uncopyable {
5553public:
@@ -63,23 +61,28 @@ class ClangLoopSwapping : public FunctionPass, private bcl::Uncopyable {
6361 void releaseMemory () override ;
6462
6563private:
66- void initializeProviderOnClient (llvm::Module &M);
6764 void initializeProviderOnServer ();
6865
6966 bool LoadDependenceAnalysisInfo (Function &F);
7067 void SwapLoops (const std::vector<std::vector<clang::SourceRange>> &mRangePairs ,
7168 const std::vector<std::vector<Loop *>> &mLoopPairs );
72- bool IsNoLoopID (llvm::MDNode *LoopID);
73- std::vector< tsar::DIAliasNode *> GetLoopNodes (llvm:: MDNode *LoopID);
69+ std::vector< const tsar::DIAliasTrait *> GetLoopTraits (llvm::MDNode *LoopID);
70+ tsar::DIDependenceSet & GetLoopDepSet ( MDNode *LoopID);
7471 bool IsSwappingAvailable (std::vector<Loop *> loops);
7572
73+ bool HasSameReductionKind (std::vector<const tsar::DIAliasTrait *> &traits0,
74+ std::vector<const tsar::DIAliasTrait *> &traits1,
75+ tsar::SpanningTreeRelation<tsar::DIAliasTree *> &STR);
76+ bool HasTrueOrAntiDependence (std::vector<const tsar::DIAliasTrait *> &traits0,
77+ std::vector<const tsar::DIAliasTrait *> &traits1,
78+ tsar::SpanningTreeRelation<tsar::DIAliasTree *> &STR);
79+
80+ llvm::Function *mFunction = nullptr ;
7681 tsar::TransformationContext *mTfmCtx = nullptr ;
7782 tsar::DIDependencInfo *DIDepInfo = nullptr ;
7883 tsar::DIAliasTree *DIAT = nullptr ;
7984 const tsar::GlobalOptions *mGlobalOpts = nullptr ;
80- GlobalsAAResult * mGlobalsAA = nullptr ;
8185 tsar::AnalysisSocket *mSocket = nullptr ;
82- tsar::MemoryMatchInfo *mMemoryMatcher = nullptr ;
8386 std::function<tsar::ObjectID(tsar::ObjectID)> getLoopID;
8487};
8588
0 commit comments