[llvm] r203431 - [PM] As Dave noticed in review, I had erroneously copied the move
David Blaikie
dblaikie at gmail.com
Sun Mar 9 18:56:14 PDT 2014
On Mar 9, 2014 6:41 PM, "Chandler Carruth" <chandlerc at gmail.com> wrote:
>
> Author: chandlerc
> Date: Sun Mar 9 20:32:25 2014
> New Revision: 203431
>
> URL: http://llvm.org/viewvc/llvm-project?rev=203431&view=rev
> Log:
> [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.
Is they any reason this type even had a move constrictor if it wasn't
actually doing any move work? Might be good to remove it so it doesn't
erroneously indoor anyone else to make the same mistake.
> 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.
>
> Modified:
> llvm/trunk/include/llvm/IR/PassManager.h
>
> Modified: llvm/trunk/include/llvm/IR/PassManager.h
> URL:
http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/PassManager.h?rev=203431&r1=203430&r2=203431&view=diff
>
==============================================================================
> --- llvm/trunk/include/llvm/IR/PassManager.h (original)
> +++ llvm/trunk/include/llvm/IR/PassManager.h Sun Mar 9 20:32:25 2014
> @@ -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, AnalysisManage
> // 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, AnalysisManage
> // 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, Pass
> // 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, Pass
> // 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, Analys
> // 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, Analys
> // 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;
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140309/3eb130c6/attachment.html>
More information about the llvm-commits
mailing list