Skip to content

Commit 47ac3f4

Browse files
committed
[TSAR, Transform] Add checks of loop for the possibility of swapping.
1 parent 4ec125b commit 47ac3f4

File tree

2 files changed

+104
-136
lines changed

2 files changed

+104
-136
lines changed

include/tsar/Transform/Clang/LoopSwapping.h

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ namespace tsar {
3737
class TransformationContext;
3838
class DIAliasNode;
3939
class DIAliasTree;
40-
class MemoryMatchInfo;
4140
}
4241

4342
namespace clang {
@@ -49,7 +48,6 @@ namespace llvm {
4948

5049
class Loop;
5150
class MDNode;
52-
class GlobalsAAResult;
5351

5452
class ClangLoopSwapping : public FunctionPass, private bcl::Uncopyable {
5553
public:
@@ -63,23 +61,28 @@ class ClangLoopSwapping : public FunctionPass, private bcl::Uncopyable {
6361
void releaseMemory() override;
6462

6563
private:
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

Comments
 (0)