mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
[PM] As Dave noticed in review, I had erroneously copied the move
constructors from the classes which only have a single reference member to many other places. This resulted in them copying their single member instead of moving. =/ Fix this. There's really not a useful test to add sadly because these move constructors are only called when something deep inside some standard library implementation *needs* to move them. Many of the types aren't even user-impacting types. Or, the objects are copyable anyways and so the result was merely a performance problem rather than a correctness problem. Anyways, thanks for the review. And this is a great example of why I wish I colud have the compiler write these for me. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@203431 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
4cd770ff3f
commit
209ae573e0
@ -70,7 +70,7 @@ public:
|
||||
PreservedAnalyses(const PreservedAnalyses &Arg)
|
||||
: PreservedPassIDs(Arg.PreservedPassIDs) {}
|
||||
PreservedAnalyses(PreservedAnalyses &&Arg)
|
||||
: PreservedPassIDs(Arg.PreservedPassIDs) {}
|
||||
: PreservedPassIDs(std::move(Arg.PreservedPassIDs)) {}
|
||||
PreservedAnalyses &operator=(PreservedAnalyses RHS) {
|
||||
std::swap(*this, RHS);
|
||||
return *this;
|
||||
@ -207,7 +207,7 @@ struct PassModel<IRUnitT, AnalysisManagerT, PassT,
|
||||
// We have to explicitly define all the special member functions because MSVC
|
||||
// refuses to generate them.
|
||||
PassModel(const PassModel &Arg) : Pass(Arg.Pass) {}
|
||||
PassModel(PassModel &&Arg) : Pass(Arg.Pass) {}
|
||||
PassModel(PassModel &&Arg) : Pass(std::move(Arg.Pass)) {}
|
||||
PassModel &operator=(PassModel RHS) {
|
||||
std::swap(*this, RHS);
|
||||
return *this;
|
||||
@ -229,7 +229,7 @@ struct PassModel<IRUnitT, AnalysisManagerT, PassT,
|
||||
// We have to explicitly define all the special member functions because MSVC
|
||||
// refuses to generate them.
|
||||
PassModel(const PassModel &Arg) : Pass(Arg.Pass) {}
|
||||
PassModel(PassModel &&Arg) : Pass(Arg.Pass) {}
|
||||
PassModel(PassModel &&Arg) : Pass(std::move(Arg.Pass)) {}
|
||||
PassModel &operator=(PassModel RHS) {
|
||||
std::swap(*this, RHS);
|
||||
return *this;
|
||||
@ -298,7 +298,8 @@ struct AnalysisResultModel<IRUnitT, PassT, ResultT,
|
||||
// We have to explicitly define all the special member functions because MSVC
|
||||
// refuses to generate them.
|
||||
AnalysisResultModel(const AnalysisResultModel &Arg) : Result(Arg.Result) {}
|
||||
AnalysisResultModel(AnalysisResultModel &&Arg) : Result(Arg.Result) {}
|
||||
AnalysisResultModel(AnalysisResultModel &&Arg)
|
||||
: Result(std::move(Arg.Result)) {}
|
||||
AnalysisResultModel &operator=(AnalysisResultModel RHS) {
|
||||
std::swap(*this, RHS);
|
||||
return *this;
|
||||
@ -325,7 +326,8 @@ struct AnalysisResultModel<IRUnitT, PassT, ResultT,
|
||||
// We have to explicitly define all the special member functions because MSVC
|
||||
// refuses to generate them.
|
||||
AnalysisResultModel(const AnalysisResultModel &Arg) : Result(Arg.Result) {}
|
||||
AnalysisResultModel(AnalysisResultModel &&Arg) : Result(Arg.Result) {}
|
||||
AnalysisResultModel(AnalysisResultModel &&Arg)
|
||||
: Result(std::move(Arg.Result)) {}
|
||||
AnalysisResultModel &operator=(AnalysisResultModel RHS) {
|
||||
std::swap(*this, RHS);
|
||||
return *this;
|
||||
@ -374,7 +376,7 @@ struct AnalysisPassModel<IRUnitT, AnalysisManagerT, PassT,
|
||||
// We have to explicitly define all the special member functions because MSVC
|
||||
// refuses to generate them.
|
||||
AnalysisPassModel(const AnalysisPassModel &Arg) : Pass(Arg.Pass) {}
|
||||
AnalysisPassModel(AnalysisPassModel &&Arg) : Pass(Arg.Pass) {}
|
||||
AnalysisPassModel(AnalysisPassModel &&Arg) : Pass(std::move(Arg.Pass)) {}
|
||||
AnalysisPassModel &operator=(AnalysisPassModel RHS) {
|
||||
std::swap(*this, RHS);
|
||||
return *this;
|
||||
@ -405,7 +407,7 @@ struct AnalysisPassModel<IRUnitT, AnalysisManagerT, PassT,
|
||||
// We have to explicitly define all the special member functions because MSVC
|
||||
// refuses to generate them.
|
||||
AnalysisPassModel(const AnalysisPassModel &Arg) : Pass(Arg.Pass) {}
|
||||
AnalysisPassModel(AnalysisPassModel &&Arg) : Pass(Arg.Pass) {}
|
||||
AnalysisPassModel(AnalysisPassModel &&Arg) : Pass(std::move(Arg.Pass)) {}
|
||||
AnalysisPassModel &operator=(AnalysisPassModel RHS) {
|
||||
std::swap(*this, RHS);
|
||||
return *this;
|
||||
|
Loading…
Reference in New Issue
Block a user