Put the move ctor for PassManager back for now, it breaks some builds.
authorBenjamin Kramer <benny.kra@googlemail.com>
Thu, 20 Oct 2016 16:50:07 +0000 (16:50 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Thu, 20 Oct 2016 16:50:07 +0000 (16:50 +0000)
For some reason using the default move ctor creates undefined references
to it.

llvm-svn: 284745

llvm/include/llvm/IR/PassManager.h

index 07b30fe..4715777 100644 (file)
@@ -241,8 +241,16 @@ public:
   ///
   /// It can be passed a flag to get debug logging as the passes are run.
   PassManager(bool DebugLogging = false) : DebugLogging(DebugLogging) {}
-  PassManager(PassManager &&) = default;
-  PassManager &operator=(PassManager &&) = default;
+  // We have to explicitly define all the special member functions because MSVC
+  // refuses to generate them.
+  PassManager(PassManager &&Arg)
+      : Passes(std::move(Arg.Passes)),
+        DebugLogging(std::move(Arg.DebugLogging)) {}
+  PassManager &operator=(PassManager &&RHS) {
+    Passes = std::move(RHS.Passes);
+    DebugLogging = std::move(RHS.DebugLogging);
+    return *this;
+  }
 
   /// \brief Run all of the passes in this manager over the IR.
   PreservedAnalyses run(IRUnitT &IR, AnalysisManagerT &AM,