Skip to content

Commit f4ceb77

Browse files
author
Serguei Katkov
committedDec 12, 2017
[NFC][SafepointIRVerifier] Add alias for set of available values
Introduces usage of AvailableValueSet alias name instead of DenseSet<const Value *> for better reading. Patch Author: Daniil Suchkov Reviewers: mkazantsev, anna, apilipenko Reviewed By: anna Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D41002 llvm-svn: 320465
1 parent 3695183 commit f4ceb77

File tree

1 file changed

+15
-13
lines changed

1 file changed

+15
-13
lines changed
 

‎llvm/lib/IR/SafepointIRVerifier.cpp

+15-13
Original file line numberDiff line numberDiff line change
@@ -137,17 +137,19 @@ static void PrintValueSet(raw_ostream &OS, IteratorTy Begin, IteratorTy End) {
137137
/// correctly relocated value at that point, and is a subset of the set of
138138
/// definitions dominating that point.
139139

140+
using AvailableValueSet = DenseSet<const Value *>;
141+
140142
/// State we compute and track per basic block.
141143
struct BasicBlockState {
142144
// Set of values available coming in, before the phi nodes
143-
DenseSet<const Value *> AvailableIn;
145+
AvailableValueSet AvailableIn;
144146

145147
// Set of values available going out
146-
DenseSet<const Value *> AvailableOut;
148+
AvailableValueSet AvailableOut;
147149

148150
// AvailableOut minus AvailableIn.
149151
// All elements are Instructions
150-
DenseSet<const Value *> Contribution;
152+
AvailableValueSet Contribution;
151153

152154
// True if this block contains a safepoint and thus AvailableIn does not
153155
// contribute to AvailableOut.
@@ -159,7 +161,7 @@ struct BasicBlockState {
159161
/// simply the Defs introduced by every dominating basic block and the function
160162
/// arguments.
161163
static void GatherDominatingDefs(const BasicBlock *BB,
162-
DenseSet<const Value *> &Result,
164+
AvailableValueSet &Result,
163165
const DominatorTree &DT,
164166
DenseMap<const BasicBlock *, BasicBlockState *> &BlockMap) {
165167
DomTreeNode *DTN = DT[const_cast<BasicBlock *>(BB)];
@@ -183,7 +185,7 @@ static void GatherDominatingDefs(const BasicBlock *BB,
183185

184186
/// Model the effect of an instruction on the set of available values.
185187
static void TransferInstruction(const Instruction &I, bool &Cleared,
186-
DenseSet<const Value *> &Available) {
188+
AvailableValueSet &Available) {
187189
if (isStatepoint(I)) {
188190
Cleared = true;
189191
Available.clear();
@@ -199,8 +201,8 @@ static void TransferInstruction(const Instruction &I, bool &Cleared,
199201
static void TransferBlock(const BasicBlock *BB, BasicBlockState &BBS,
200202
bool ContributionChanged) {
201203

202-
const DenseSet<const Value *> &AvailableIn = BBS.AvailableIn;
203-
DenseSet<const Value *> &AvailableOut = BBS.AvailableOut;
204+
const AvailableValueSet &AvailableIn = BBS.AvailableIn;
205+
AvailableValueSet &AvailableOut = BBS.AvailableOut;
204206

205207
if (BBS.Cleared) {
206208
// AvailableOut will change only when Contribution changed.
@@ -209,7 +211,7 @@ static void TransferBlock(const BasicBlock *BB, BasicBlockState &BBS,
209211
} else {
210212
// Otherwise, we need to reduce the AvailableOut set by things which are no
211213
// longer in our AvailableIn
212-
DenseSet<const Value *> Temp = BBS.Contribution;
214+
AvailableValueSet Temp = BBS.Contribution;
213215
set_union(Temp, AvailableIn);
214216
AvailableOut = std::move(Temp);
215217
}
@@ -306,7 +308,7 @@ using BlockStateMap = DenseMap<const BasicBlock *, BasicBlockState *>;
306308
///
307309
/// BBContributionUpdater is expected to have following signature:
308310
/// (const BasicBlock *BB, const BasicBlockState *BBS,
309-
/// DenseSet<const Value *> &Contribution) -> bool
311+
/// AvailableValueSet &Contribution) -> bool
310312
/// FIXME: type of BBContributionUpdater is a template parameter because it
311313
/// might be a lambda with arbitrary non-empty capture list. It's a bit ugly and
312314
/// unclear, but other options causes us to spread the logic of
@@ -372,7 +374,7 @@ static void Verify(const Function &F, const DominatorTree &DT) {
372374

373375
RecalculateBBsStates(BlockMap, [] (const BasicBlock *,
374376
const BasicBlockState *,
375-
DenseSet<const Value *> &) {
377+
AvailableValueSet &) {
376378
return false;
377379
});
378380

@@ -398,8 +400,8 @@ static void Verify(const Function &F, const DominatorTree &DT) {
398400
RecalculateBBsStates(BlockMap, [&ValidUnrelocatedDefs](
399401
const BasicBlock *BB,
400402
const BasicBlockState *BBS,
401-
DenseSet<const Value *> &Contribution) {
402-
DenseSet<const Value *> AvailableSet = BBS->AvailableIn;
403+
AvailableValueSet &Contribution) {
404+
AvailableValueSet AvailableSet = BBS->AvailableIn;
403405
bool ContributionChanged = false;
404406
for (const Instruction &I : *BB) {
405407
bool ProducesUnrelocatedPointer = false;
@@ -438,7 +440,7 @@ static void Verify(const Function &F, const DominatorTree &DT) {
438440
BasicBlockState *BBS = BlockMap[BB];
439441
// We destructively modify AvailableIn as we traverse the block instruction
440442
// by instruction.
441-
DenseSet<const Value *> &AvailableSet = BBS->AvailableIn;
443+
AvailableValueSet &AvailableSet = BBS->AvailableIn;
442444
for (const Instruction &I : *BB) {
443445
if (ValidUnrelocatedDefs.count(&I)) {
444446
continue; // This instruction shouldn't be added to AvailableSet.

0 commit comments

Comments
 (0)
Please sign in to comment.