mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
[SCEV] Use move semantics in ScalarEvolution::setRange
Summary: This makes setRange take ConstantRange by rvalue reference since most callers were passing an unnamed temporary ConstantRange. We can then move that ConstantRange into the DenseMap caches. For the callers that weren't passing a temporary, I've added std::move to to the local variable being passed. Reviewers: sanjoy, mzolotukhin, efriedma Reviewed By: sanjoy Subscribers: takuto.ikuta, llvm-commits Differential Revision: https://reviews.llvm.org/D32943 llvm-svn: 302371
This commit is contained in:
parent
41b5979dcf
commit
d2d0986b7c
@ -782,13 +782,13 @@ private:
|
||||
|
||||
/// Set the memoized range for the given SCEV.
|
||||
const ConstantRange &setRange(const SCEV *S, RangeSignHint Hint,
|
||||
const ConstantRange &CR) {
|
||||
ConstantRange &&CR) {
|
||||
DenseMap<const SCEV *, ConstantRange> &Cache =
|
||||
Hint == HINT_RANGE_UNSIGNED ? UnsignedRanges : SignedRanges;
|
||||
|
||||
auto Pair = Cache.insert({S, CR});
|
||||
auto Pair = Cache.try_emplace(S, std::move(CR));
|
||||
if (!Pair.second)
|
||||
Pair.first->second = CR;
|
||||
Pair.first->second = std::move(CR);
|
||||
return Pair.first->second;
|
||||
}
|
||||
|
||||
|
@ -4800,7 +4800,7 @@ ScalarEvolution::getRange(const SCEV *S,
|
||||
}
|
||||
}
|
||||
|
||||
return setRange(AddRec, SignHint, ConservativeResult);
|
||||
return setRange(AddRec, SignHint, std::move(ConservativeResult));
|
||||
}
|
||||
|
||||
if (const SCEVUnknown *U = dyn_cast<SCEVUnknown>(S)) {
|
||||
@ -4831,10 +4831,10 @@ ScalarEvolution::getRange(const SCEV *S,
|
||||
APInt::getSignedMaxValue(BitWidth).ashr(NS - 1) + 1));
|
||||
}
|
||||
|
||||
return setRange(U, SignHint, ConservativeResult);
|
||||
return setRange(U, SignHint, std::move(ConservativeResult));
|
||||
}
|
||||
|
||||
return setRange(S, SignHint, ConservativeResult);
|
||||
return setRange(S, SignHint, std::move(ConservativeResult));
|
||||
}
|
||||
|
||||
// Given a StartRange, Step and MaxBECount for an expression compute a range of
|
||||
|
Loading…
x
Reference in New Issue
Block a user