Skip to content

Commit bd5ff04

Browse files
committed
minor
1 parent c6cc09b commit bd5ff04

4 files changed

Lines changed: 23 additions & 20 deletions

File tree

external/json

Submodule json updated 1562 files

include/phasar/PhasarLLVM/Pointer/PointsToSetOwner.h

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,27 +10,30 @@
1010
#ifndef PHASAR_PHASARLLVM_POINTER_POINTSTOSETOWNER_H_
1111
#define PHASAR_PHASARLLVM_POINTER_POINTSTOSETOWNER_H_
1212

13-
#include "llvm/ADT/DenseMap.h"
1413
#include <memory>
1514
#include <vector>
1615

16+
#include "llvm/ADT/DenseMap.h"
17+
1718
namespace psr {
1819
template <typename PointsToSetTy> class PointsToSetOwner {
1920
public:
20-
explicit PointsToSetOwner() = default;
21-
explicit PointsToSetOwner(size_t InitialCapacity) {
22-
OwnedPTS.reserve(InitialCapacity);
23-
}
21+
explicit PointsToSetOwner() noexcept = default;
2422

2523
PointsToSetTy *acquire() {
2624
auto Ptr = std::make_unique<PointsToSetTy>();
2725
auto Ret = Ptr.get();
2826
OwnedPTS.try_emplace(Ret, std::move(Ptr));
2927
return Ret;
3028
}
31-
void release(PointsToSetTy *PTS) { OwnedPTS.erase(PTS); }
29+
void release(PointsToSetTy *PTS) noexcept { OwnedPTS.erase(PTS); }
30+
31+
void reserve(size_t Capacity) { OwnedPTS.reserve(Capacity); }
3232

3333
private:
34+
/// Note: Cannot use a set here, because llvm::DenseSet requires the key-type
35+
/// to be copy-constructible and the STL containers do not support
36+
/// heterogenous lookup as of C++17
3437
llvm::DenseMap<PointsToSetTy *, std::unique_ptr<PointsToSetTy>> OwnedPTS;
3538
};
3639
} // namespace psr

lib/PhasarLLVM/ControlFlow/Resolver/OTFResolver.cpp

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,8 @@ auto OTFResolver::resolveFunctionPointer(const llvm::CallBase *CallSite)
145145

146146
llvm::SmallVector<const llvm::GlobalVariable *, 2> GlobalVariableWL;
147147
llvm::SmallVector<const llvm::ConstantAggregate *> ConstantAggregateWL;
148+
llvm::SmallPtrSet<const llvm::ConstantAggregate *, 4>
149+
VisitedConstantAggregates;
148150

149151
for (const auto *P : *PTS) {
150152
if (!llvm::isa<llvm::Constant>(P)) {
@@ -163,16 +165,15 @@ auto OTFResolver::resolveFunctionPointer(const llvm::CallBase *CallSite)
163165
}
164166
}
165167

166-
if (const auto *CE = llvm::dyn_cast<llvm::ConstantExpr>(P)) {
168+
if (const auto *GVP = llvm::dyn_cast<llvm::GlobalVariable>(P)) {
169+
GlobalVariableWL.push_back(GVP);
170+
} else if (const auto *CE = llvm::dyn_cast<llvm::ConstantExpr>(P)) {
167171
for (const auto &Op : CE->operands()) {
168172
if (const auto *GVOp = llvm::dyn_cast<llvm::GlobalVariable>(Op)) {
169173
GlobalVariableWL.push_back(GVOp);
170174
}
171175
}
172176
}
173-
if (const auto *GVP = llvm::dyn_cast<llvm::GlobalVariable>(P)) {
174-
GlobalVariableWL.push_back(GVP);
175-
}
176177

177178
if (GlobalVariableWL.empty()) {
178179
continue;
@@ -188,8 +189,8 @@ auto OTFResolver::resolveFunctionPointer(const llvm::CallBase *CallSite)
188189
ConstantAggregateWL.push_back(InitConstAggregate);
189190
}
190191
}
191-
llvm::SmallPtrSet<const llvm::ConstantAggregate *, 4>
192-
VisitedConstantAggregates;
192+
193+
VisitedConstantAggregates.clear();
193194

194195
while (!ConstantAggregateWL.empty()) {
195196
const auto *ConstAggregateItem = ConstantAggregateWL.pop_back_val();
@@ -213,11 +214,9 @@ auto OTFResolver::resolveFunctionPointer(const llvm::CallBase *CallSite)
213214
if (matchesSignature(F, FTy, false)) {
214215
Callees.insert(F);
215216
}
216-
}
217-
if (auto *CA = llvm::dyn_cast<llvm::ConstantAggregate>(Op)) {
217+
} else if (auto *CA = llvm::dyn_cast<llvm::ConstantAggregate>(Op)) {
218218
ConstantAggregateWL.push_back(CA);
219-
}
220-
if (auto *GV = llvm::dyn_cast<llvm::GlobalVariable>(Op)) {
219+
} else if (auto *GV = llvm::dyn_cast<llvm::GlobalVariable>(Op)) {
221220
if (!GV->hasInitializer()) {
222221
continue;
223222
}

lib/PhasarLLVM/Pointer/LLVMPointsToSet.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,16 @@
4545
#include "phasar/Utils/Logger.h"
4646

4747
using namespace std;
48-
using namespace psr;
4948

5049
namespace psr {
5150

5251
LLVMPointsToSet::LLVMPointsToSet(ProjectIRDB &IRDB, bool UseLazyEvaluation,
5352
PointerAnalysisType PATy)
54-
: PTA(IRDB, UseLazyEvaluation, PATy), Owner(IRDB.getNumGlobals()) {
53+
: PTA(IRDB, UseLazyEvaluation, PATy) {
5554

56-
PointsToSets.reserve(IRDB.getNumGlobals());
55+
auto NumGlobals = IRDB.getNumGlobals();
56+
PointsToSets.reserve(NumGlobals);
57+
Owner.reserve(NumGlobals);
5758

5859
for (llvm::Module *M : IRDB.getAllModules()) {
5960
// compute points-to information for all globals

0 commit comments

Comments
 (0)