diff options
author | Serguei Katkov <serguei.katkov@azul.com> | 2017-12-12 09:44:41 +0000 |
---|---|---|
committer | Serguei Katkov <serguei.katkov@azul.com> | 2017-12-12 09:44:41 +0000 |
commit | f4f60186a0d63ba07f49b029e21d00ff331f13e1 (patch) | |
tree | 9499047bcb67146ca90f87d91fbdf86d32ed0342 /lib/IR | |
parent | 583d0ddac60fb349bb86c6c12d81e217c98fc8b9 (diff) |
[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
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320465 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/IR')
-rw-r--r-- | lib/IR/SafepointIRVerifier.cpp | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/lib/IR/SafepointIRVerifier.cpp b/lib/IR/SafepointIRVerifier.cpp index 4aac10a27aa..23568b38c9d 100644 --- a/lib/IR/SafepointIRVerifier.cpp +++ b/lib/IR/SafepointIRVerifier.cpp @@ -137,17 +137,19 @@ static void PrintValueSet(raw_ostream &OS, IteratorTy Begin, IteratorTy End) { /// correctly relocated value at that point, and is a subset of the set of /// definitions dominating that point. +using AvailableValueSet = DenseSet<const Value *>; + /// State we compute and track per basic block. struct BasicBlockState { // Set of values available coming in, before the phi nodes - DenseSet<const Value *> AvailableIn; + AvailableValueSet AvailableIn; // Set of values available going out - DenseSet<const Value *> AvailableOut; + AvailableValueSet AvailableOut; // AvailableOut minus AvailableIn. // All elements are Instructions - DenseSet<const Value *> Contribution; + AvailableValueSet Contribution; // True if this block contains a safepoint and thus AvailableIn does not // contribute to AvailableOut. @@ -159,7 +161,7 @@ struct BasicBlockState { /// simply the Defs introduced by every dominating basic block and the function /// arguments. static void GatherDominatingDefs(const BasicBlock *BB, - DenseSet<const Value *> &Result, + AvailableValueSet &Result, const DominatorTree &DT, DenseMap<const BasicBlock *, BasicBlockState *> &BlockMap) { DomTreeNode *DTN = DT[const_cast<BasicBlock *>(BB)]; @@ -183,7 +185,7 @@ static void GatherDominatingDefs(const BasicBlock *BB, /// Model the effect of an instruction on the set of available values. static void TransferInstruction(const Instruction &I, bool &Cleared, - DenseSet<const Value *> &Available) { + AvailableValueSet &Available) { if (isStatepoint(I)) { Cleared = true; Available.clear(); @@ -199,8 +201,8 @@ static void TransferInstruction(const Instruction &I, bool &Cleared, static void TransferBlock(const BasicBlock *BB, BasicBlockState &BBS, bool ContributionChanged) { - const DenseSet<const Value *> &AvailableIn = BBS.AvailableIn; - DenseSet<const Value *> &AvailableOut = BBS.AvailableOut; + const AvailableValueSet &AvailableIn = BBS.AvailableIn; + AvailableValueSet &AvailableOut = BBS.AvailableOut; if (BBS.Cleared) { // AvailableOut will change only when Contribution changed. @@ -209,7 +211,7 @@ static void TransferBlock(const BasicBlock *BB, BasicBlockState &BBS, } else { // Otherwise, we need to reduce the AvailableOut set by things which are no // longer in our AvailableIn - DenseSet<const Value *> Temp = BBS.Contribution; + AvailableValueSet Temp = BBS.Contribution; set_union(Temp, AvailableIn); AvailableOut = std::move(Temp); } @@ -306,7 +308,7 @@ using BlockStateMap = DenseMap<const BasicBlock *, BasicBlockState *>; /// /// BBContributionUpdater is expected to have following signature: /// (const BasicBlock *BB, const BasicBlockState *BBS, -/// DenseSet<const Value *> &Contribution) -> bool +/// AvailableValueSet &Contribution) -> bool /// FIXME: type of BBContributionUpdater is a template parameter because it /// might be a lambda with arbitrary non-empty capture list. It's a bit ugly and /// unclear, but other options causes us to spread the logic of @@ -372,7 +374,7 @@ static void Verify(const Function &F, const DominatorTree &DT) { RecalculateBBsStates(BlockMap, [] (const BasicBlock *, const BasicBlockState *, - DenseSet<const Value *> &) { + AvailableValueSet &) { return false; }); @@ -398,8 +400,8 @@ static void Verify(const Function &F, const DominatorTree &DT) { RecalculateBBsStates(BlockMap, [&ValidUnrelocatedDefs]( const BasicBlock *BB, const BasicBlockState *BBS, - DenseSet<const Value *> &Contribution) { - DenseSet<const Value *> AvailableSet = BBS->AvailableIn; + AvailableValueSet &Contribution) { + AvailableValueSet AvailableSet = BBS->AvailableIn; bool ContributionChanged = false; for (const Instruction &I : *BB) { bool ProducesUnrelocatedPointer = false; @@ -438,7 +440,7 @@ static void Verify(const Function &F, const DominatorTree &DT) { BasicBlockState *BBS = BlockMap[BB]; // We destructively modify AvailableIn as we traverse the block instruction // by instruction. - DenseSet<const Value *> &AvailableSet = BBS->AvailableIn; + AvailableValueSet &AvailableSet = BBS->AvailableIn; for (const Instruction &I : *BB) { if (ValidUnrelocatedDefs.count(&I)) { continue; // This instruction shouldn't be added to AvailableSet. |