summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Zolotukhin <mzolotukhin@apple.com>2018-04-20 07:56:00 +0000
committerMichael Zolotukhin <mzolotukhin@apple.com>2018-04-20 07:56:00 +0000
commit79cb54b2d9b81c71667580b7e7835052796276fa (patch)
treec52c26ad1dc0ebd1de5886c85a761a6bf3aff08d
parent45571780617feb60784c7743d718970d2dfe8e5b (diff)
downloadbcm5719-llvm-79cb54b2d9b81c71667580b7e7835052796276fa.tar.gz
bcm5719-llvm-79cb54b2d9b81c71667580b7e7835052796276fa.zip
[SSAUpdaterBulk] Use SmallVector instead of SmallPtrSet for uses.
llvm-svn: 330398
-rw-r--r--llvm/include/llvm/Transforms/Utils/SSAUpdaterBulk.h2
-rw-r--r--llvm/lib/Transforms/Utils/SSAUpdaterBulk.cpp7
2 files changed, 6 insertions, 3 deletions
diff --git a/llvm/include/llvm/Transforms/Utils/SSAUpdaterBulk.h b/llvm/include/llvm/Transforms/Utils/SSAUpdaterBulk.h
index c410b33c5ea..aed370b4b59 100644
--- a/llvm/include/llvm/Transforms/Utils/SSAUpdaterBulk.h
+++ b/llvm/include/llvm/Transforms/Utils/SSAUpdaterBulk.h
@@ -41,7 +41,7 @@ class DominatorTree;
class SSAUpdaterBulk {
struct RewriteInfo {
DenseMap<BasicBlock *, Value *> Defines;
- SmallPtrSet<Use *, 4> Uses;
+ SmallVector<Use *, 4> Uses;
StringRef Name;
Type *Ty;
RewriteInfo(){};
diff --git a/llvm/lib/Transforms/Utils/SSAUpdaterBulk.cpp b/llvm/lib/Transforms/Utils/SSAUpdaterBulk.cpp
index cd264a8c63f..5321b4374cd 100644
--- a/llvm/lib/Transforms/Utils/SSAUpdaterBulk.cpp
+++ b/llvm/lib/Transforms/Utils/SSAUpdaterBulk.cpp
@@ -61,7 +61,7 @@ void SSAUpdaterBulk::AddUse(unsigned Var, Use *U) {
assert(Rewrites.find(Var) != Rewrites.end() && "Should add variable first!");
DEBUG(dbgs() << "SSAUpdater: Var=" << Var << ": added a use" << *U->get()
<< " in " << getUserBB(U)->getName() << "\n");
- Rewrites[Var].Uses.insert(U);
+ Rewrites[Var].Uses.push_back(U);
}
/// Return true if the SSAUpdater already has a value for the specified variable
@@ -171,7 +171,10 @@ void SSAUpdaterBulk::RewriteAllUses(DominatorTree *DT,
}
// Rewrite actual uses with the inserted definitions.
- for (auto U : R.Uses) {
+ SmallPtrSet<Use *, 4> ProcessedUses;
+ for (Use *U : R.Uses) {
+ if (!ProcessedUses.insert(U).second)
+ continue;
Value *V = computeValueAt(getUserBB(U), R, DT);
Value *OldVal = U->get();
// Notify that users of the existing value that it is being replaced.
OpenPOWER on IntegriCloud