diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2009-11-05 14:33:27 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2009-11-05 14:33:27 +0000 |
commit | bcaa2157ddc22cb1098289943e8dd147a854698b (patch) | |
tree | 7941d1fc9a07675f3547af4e778fb87de2ce44b9 /lib/Transforms/Scalar/SCCP.cpp | |
parent | e9684c682aab1b6bfd4da547d9ad395b2f831f4e (diff) | |
download | llvm-bcaa2157ddc22cb1098289943e8dd147a854698b.tar.gz llvm-bcaa2157ddc22cb1098289943e8dd147a854698b.tar.bz2 llvm-bcaa2157ddc22cb1098289943e8dd147a854698b.tar.xz |
Do map insert+find in one step. TODO -= 2.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86133 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Scalar/SCCP.cpp')
-rw-r--r-- | lib/Transforms/Scalar/SCCP.cpp | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/lib/Transforms/Scalar/SCCP.cpp b/lib/Transforms/Scalar/SCCP.cpp index d515c130e9..509a6dbc12 100644 --- a/lib/Transforms/Scalar/SCCP.cpp +++ b/lib/Transforms/Scalar/SCCP.cpp @@ -370,13 +370,13 @@ private: /// by properly seeding constants etc. LatticeVal &getValueState(Value *V) { assert(!isa<StructType>(V->getType()) && "Should use getStructValueState"); - - // TODO: Change to do insert+find in one operation. - DenseMap<Value*, LatticeVal>::iterator I = ValueState.find(V); - if (I != ValueState.end()) - return I->second; // Common case, already in the map. - LatticeVal &LV = ValueState[V]; + std::pair<DenseMap<Value*, LatticeVal>::iterator, bool> I = + ValueState.insert(std::make_pair(V, LatticeVal())); + LatticeVal &LV = I.first->second; + + if (!I.second) + return LV; // Common case, already in the map. if (Constant *C = dyn_cast<Constant>(V)) { // Undef values remain undefined. @@ -395,15 +395,15 @@ private: assert(isa<StructType>(V->getType()) && "Should use getValueState"); assert(i < cast<StructType>(V->getType())->getNumElements() && "Invalid element #"); - - // TODO: Change to do insert+find in one operation. - DenseMap<std::pair<Value*, unsigned>, LatticeVal>::iterator - I = StructValueState.find(std::make_pair(V, i)); - if (I != StructValueState.end()) - return I->second; // Common case, already in the map. - - LatticeVal &LV = StructValueState[std::make_pair(V, i)]; - + + std::pair<DenseMap<std::pair<Value*, unsigned>, LatticeVal>::iterator, + bool> I = StructValueState.insert( + std::make_pair(std::make_pair(V, i), LatticeVal())); + LatticeVal &LV = I.first->second; + + if (!I.second) + return LV; // Common case, already in the map. + if (Constant *C = dyn_cast<Constant>(V)) { if (isa<UndefValue>(C)) ; // Undef values remain undefined. |