[llvm] r361366 - Re-land r361257 "[MergeICmps][NFC] Make BCEAtom move-only.""
Clement Courbet via llvm-commits
llvm-commits at lists.llvm.org
Wed May 22 02:45:40 PDT 2019
Author: courbet
Date: Wed May 22 02:45:40 2019
New Revision: 361366
URL: http://llvm.org/viewvc/llvm-project?rev=361366&view=rev
Log:
Re-land r361257 "[MergeICmps][NFC] Make BCEAtom move-only.""
Modified:
llvm/trunk/lib/Transforms/Scalar/MergeICmps.cpp
Modified: llvm/trunk/lib/Transforms/Scalar/MergeICmps.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/MergeICmps.cpp?rev=361366&r1=361365&r2=361366&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/MergeICmps.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/MergeICmps.cpp Wed May 22 02:45:40 2019
@@ -81,6 +81,20 @@ struct BCEAtom {
BCEAtom(GetElementPtrInst *GEP, LoadInst *LoadI, int BaseId, APInt Offset)
: GEP(GEP), LoadI(LoadI), BaseId(BaseId), Offset(Offset) {}
+ BCEAtom(const BCEAtom &) = delete;
+ BCEAtom &operator=(const BCEAtom &) = delete;
+
+ BCEAtom(BCEAtom &&that) = default;
+ BCEAtom &operator=(BCEAtom &&that) {
+ if (this == &that)
+ return *this;
+ GEP = that.GEP;
+ LoadI = that.LoadI;
+ BaseId = that.BaseId;
+ Offset = std::move(that.Offset);
+ return *this;
+ }
+
// We want to order BCEAtoms by (Base, Offset). However we cannot use
// the pointer values for Base because these are non-deterministic.
// To make sure that the sort order is stable, we first assign to each atom
@@ -175,7 +189,7 @@ class BCECmpBlock {
BCECmpBlock() {}
BCECmpBlock(BCEAtom L, BCEAtom R, int SizeBits)
- : Lhs_(L), Rhs_(R), SizeBits_(SizeBits) {
+ : Lhs_(std::move(L)), Rhs_(std::move(R)), SizeBits_(SizeBits) {
if (Rhs_ < Lhs_) std::swap(Rhs_, Lhs_);
}
@@ -376,7 +390,7 @@ BCECmpBlock visitCmpBlock(Value *const V
}
static inline void enqueueBlock(std::vector<BCECmpBlock> &Comparisons,
- BCECmpBlock &Comparison) {
+ BCECmpBlock &&Comparison) {
LLVM_DEBUG(dbgs() << "Block '" << Comparison.BB->getName()
<< "': Found cmp of " << Comparison.SizeBits()
<< " bits between " << Comparison.Lhs().BaseId << " + "
@@ -384,7 +398,7 @@ static inline void enqueueBlock(std::vec
<< Comparison.Rhs().BaseId << " + "
<< Comparison.Rhs().Offset << "\n");
LLVM_DEBUG(dbgs() << "\n");
- Comparisons.push_back(Comparison);
+ Comparisons.push_back(std::move(Comparison));
}
// A chain of comparisons.
@@ -456,7 +470,7 @@ BCECmpChain::BCECmpChain(const std::vect
<< "Split initial block '" << Comparison.BB->getName()
<< "' that does extra work besides compare\n");
Comparison.RequireSplit = true;
- enqueueBlock(Comparisons, Comparison);
+ enqueueBlock(Comparisons, std::move(Comparison));
} else {
LLVM_DEBUG(dbgs()
<< "ignoring initial block '" << Comparison.BB->getName()
@@ -489,7 +503,7 @@ BCECmpChain::BCECmpChain(const std::vect
// We could still merge bb1 and bb2 though.
return;
}
- enqueueBlock(Comparisons, Comparison);
+ enqueueBlock(Comparisons, std::move(Comparison));
}
// It is possible we have no suitable comparison to merge.
More information about the llvm-commits
mailing list