From 6f66545ae61572d47576060cae77cdf5545c4529 Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Fri, 20 Feb 2015 14:00:58 +0000 Subject: [PATCH] RewriteStatepointsForGC: Move details into anonymous namespaces. NFC. While there reduce the number of duplicated std::map lookups. llvm-svn: 230012 --- .../Scalar/RewriteStatepointsForGC.cpp | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/llvm/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp b/llvm/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp index 0b5e297c9ee7..052a149ae26a 100644 --- a/llvm/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp +++ b/llvm/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp @@ -55,6 +55,7 @@ static cl::opt PrintLiveSetSize("spp-print-liveset-size", static cl::opt PrintBasePointers("spp-print-base-pointers", cl::Hidden, cl::init(false)); +namespace { struct RewriteStatepointsForGC : public FunctionPass { static char ID; // Pass identification, replacement for typeid @@ -69,6 +70,7 @@ struct RewriteStatepointsForGC : public FunctionPass { AU.addRequired(); } }; +} // namespace char RewriteStatepointsForGC::ID = 0; @@ -94,9 +96,7 @@ namespace { // base relation will remain. Internally, we add a mixture of the two // types, then update all the second type to the first type typedef std::map DefiningValueMapTy; -} -namespace { struct PartiallyConstructedSafepointRecord { /// The set of values known to be live accross this safepoint std::set liveset; @@ -503,26 +503,28 @@ static Value *findBaseDefiningValue(Value *I) { } /// Returns the base defining value for this value. -Value *findBaseDefiningValueCached(Value *I, DefiningValueMapTy &cache) { - if (cache.find(I) == cache.end()) { - cache[I] = findBaseDefiningValue(I); +static Value *findBaseDefiningValueCached(Value *I, DefiningValueMapTy &cache) { + Value *&Cached = cache[I]; + if (!Cached) { + Cached = findBaseDefiningValue(I); } - assert(cache.find(I) != cache.end()); + assert(cache[I] != nullptr); if (TraceLSP) { - errs() << "fBDV-cached: " << I->getName() << " -> " << cache[I]->getName() + errs() << "fBDV-cached: " << I->getName() << " -> " << Cached->getName() << "\n"; } - return cache[I]; + return Cached; } /// Return a base pointer for this value if known. Otherwise, return it's /// base defining value. static Value *findBaseOrBDV(Value *I, DefiningValueMapTy &cache) { Value *def = findBaseDefiningValueCached(I, cache); - if (cache.count(def)) { + auto Found = cache.find(def); + if (Found != cache.end()) { // Either a base-of relation, or a self reference. Caller must check. - return cache[def]; + return Found->second; } // Only a BDV available return def;