[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