Skip to content

Commit ab207a2

Browse files
committed
[TSAR, Analysis] Perform attributes modifications.
1 parent 6e1d238 commit ab207a2

File tree

11 files changed

+366
-245
lines changed

11 files changed

+366
-245
lines changed

include/tsar/Analysis/Memory/RestrictionArgumentsPass.h

Lines changed: 66 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -10,85 +10,79 @@
1010

1111
namespace llvm {
1212

13-
class RestrictionArgumentsPass : public ModulePass, private bcl::Uncopyable {
14-
public:
15-
static char ID;
13+
class RestrictionArgumentsPass : public ModulePass, private bcl::Uncopyable {
14+
public:
15+
static char ID;
1616

17-
RestrictionArgumentsPass() : ModulePass(ID) {
18-
initializeRestrictionArgumentsPassPass(*PassRegistry::getPassRegistry());
19-
}
17+
RestrictionArgumentsPass() : ModulePass(ID) {
18+
initializeRestrictionArgumentsPassPass(*PassRegistry::getPassRegistry());
19+
}
2020

21-
bool runOnModule(llvm::Module& M) override;
22-
23-
void getAnalysisUsage(AnalysisUsage& AU) const override;
24-
};
21+
bool runOnModule(llvm::Module& M) override;
2522

23+
void getAnalysisUsage(AnalysisUsage& AU) const override;
24+
};
2625
}
2726

28-
namespace tsar {
29-
30-
// llvm::DenseSet<llvm::Value*> showed unstable behaviour in sets intersection
31-
typedef std::set<llvm::Value*> MemorySources;
32-
33-
struct FunctionCallWithMemorySources {
34-
llvm::CallInst* mCallI;
35-
llvm::DenseMap<int, MemorySources> mArgumentMemorySources;
36-
37-
FunctionCallWithMemorySources() :
38-
mCallI(nullptr),
39-
mArgumentMemorySources(llvm::DenseMap<int, MemorySources>()) {}
40-
41-
explicit FunctionCallWithMemorySources(llvm::CallInst* CallI) :
42-
mCallI(CallI),
43-
mArgumentMemorySources(llvm::DenseMap<int, MemorySources>()) {}
44-
};
45-
46-
struct ValueWithMemorySources {
47-
llvm::Value* mV;
48-
MemorySources mMemorySources;
49-
50-
explicit ValueWithMemorySources(llvm::Value* V) :
51-
mV(V) {}
52-
53-
ValueWithMemorySources(llvm::Value* V, llvm::Value* MemorySource) :
54-
mV(V) {
55-
mMemorySources.insert(MemorySource);
56-
}
5727

58-
ValueWithMemorySources(llvm::Value* V, MemorySources Sources) :
59-
mV(V) {
60-
mMemorySources.insert(Sources.begin(), Sources.end());
61-
}
62-
};
63-
64-
struct FunctionResultArgumentsMemoryDependencies {
65-
llvm::DenseSet<int> mInfluencingArgumentsIndexes;
66-
// Indicates is returned value always points to the unique memory
67-
bool mIsRestrict;
68-
69-
FunctionResultArgumentsMemoryDependencies() :
70-
mIsRestrict(false) {}
71-
};
72-
73-
struct FunctionArgumentRestrictCalls {
74-
int mArgumentIndex;
75-
llvm::DenseSet<llvm::CallInst*> mRestrictCalls;
76-
bool mAllFunctionCallsRestrict;
77-
78-
FunctionArgumentRestrictCalls(int index) :
79-
mArgumentIndex(index),
80-
mAllFunctionCallsRestrict(false) {}
81-
};
82-
83-
struct FunctionCallsInfo {
84-
llvm::Function* mFunction;
85-
llvm::DenseMap<int, FunctionArgumentRestrictCalls> mRestrictCallsByArguments;
86-
};
87-
88-
//typedef llvm::DenseSet<int> FunctionResultArgumentsMemoryDependencies;
28+
namespace tsar {
8929

30+
typedef std::set<llvm::Value*> MemorySources;
31+
32+
struct FunctionCallWithMemorySources {
33+
llvm::CallInst* mCallI;
34+
llvm::DenseMap<int, MemorySources> mArgumentMemorySources;
35+
36+
FunctionCallWithMemorySources() :
37+
mCallI(nullptr),
38+
mArgumentMemorySources(llvm::DenseMap<int, MemorySources>()) {}
39+
40+
explicit FunctionCallWithMemorySources(llvm::CallInst* CallI) :
41+
mCallI(CallI),
42+
mArgumentMemorySources(llvm::DenseMap<int, MemorySources>()) {}
43+
};
44+
45+
struct ValueWithMemorySources {
46+
llvm::Value* mV;
47+
MemorySources mMemorySources;
48+
49+
explicit ValueWithMemorySources(llvm::Value* V) :
50+
mV(V) {}
51+
52+
ValueWithMemorySources(llvm::Value* V, llvm::Value* MemorySource) :
53+
mV(V) {
54+
mMemorySources.insert(MemorySource);
55+
}
56+
57+
ValueWithMemorySources(llvm::Value* V, MemorySources Sources) :
58+
mV(V) {
59+
mMemorySources.insert(Sources.begin(), Sources.end());
60+
}
61+
};
62+
63+
struct FunctionResultArgumentsMemoryDependencies {
64+
llvm::DenseSet<int> mInfluencingArgumentsIndexes;
65+
// Indicates is returned value always points to the unique memory
66+
bool mIsRestrict;
67+
68+
FunctionResultArgumentsMemoryDependencies() :
69+
mIsRestrict(false) {}
70+
};
71+
72+
struct FunctionArgumentRestrictCalls {
73+
int mArgumentIndex;
74+
llvm::DenseSet<llvm::CallInst*> mRestrictCalls;
75+
bool mAllFunctionCallsRestrict;
76+
77+
FunctionArgumentRestrictCalls(int index) :
78+
mArgumentIndex(index),
79+
mAllFunctionCallsRestrict(false) {}
80+
};
81+
82+
struct FunctionCallsInfo {
83+
llvm::Function* mFunction;
84+
llvm::DenseMap<int, FunctionArgumentRestrictCalls> mRestrictCallsByArguments;
85+
};
9086
}
9187

92-
93-
9488
#endif //SAPFOR_RESTRICTIONARGUMENTSPASS_H

0 commit comments

Comments
 (0)