diff --git a/llvm/include/llvm/Analysis/AliasAnalysis.h b/llvm/include/llvm/Analysis/AliasAnalysis.h index 3e105bb89cd8..f75c9c95463d 100644 --- a/llvm/include/llvm/Analysis/AliasAnalysis.h +++ b/llvm/include/llvm/Analysis/AliasAnalysis.h @@ -854,20 +854,6 @@ class AAManager : public AnalysisInfoMixin { public: typedef AAResults Result; - // This type has value semantics. We have to spell these out because MSVC - // won't synthesize them. - AAManager() {} - AAManager(AAManager &&Arg) : ResultGetters(std::move(Arg.ResultGetters)) {} - AAManager(const AAManager &Arg) : ResultGetters(Arg.ResultGetters) {} - AAManager &operator=(AAManager &&RHS) { - ResultGetters = std::move(RHS.ResultGetters); - return *this; - } - AAManager &operator=(const AAManager &RHS) { - ResultGetters = RHS.ResultGetters; - return *this; - } - /// Register a specific AA result. template void registerFunctionAnalysis() { ResultGetters.push_back(&getFunctionAAResultImpl); diff --git a/llvm/include/llvm/Analysis/AssumptionCache.h b/llvm/include/llvm/Analysis/AssumptionCache.h index 895b85448ca9..b05cb3329e87 100644 --- a/llvm/include/llvm/Analysis/AssumptionCache.h +++ b/llvm/include/llvm/Analysis/AssumptionCache.h @@ -100,12 +100,6 @@ class AssumptionAnalysis : public AnalysisInfoMixin { public: typedef AssumptionCache Result; - AssumptionAnalysis() {} - AssumptionAnalysis(const AssumptionAnalysis &Arg) {} - AssumptionAnalysis(AssumptionAnalysis &&Arg) {} - AssumptionAnalysis &operator=(const AssumptionAnalysis &RHS) { return *this; } - AssumptionAnalysis &operator=(AssumptionAnalysis &&RHS) { return *this; } - AssumptionCache run(Function &F, FunctionAnalysisManager &) { return AssumptionCache(F); } diff --git a/llvm/include/llvm/Analysis/DependenceAnalysis.h b/llvm/include/llvm/Analysis/DependenceAnalysis.h index 32dd367a9c0a..e8662173a5e2 100644 --- a/llvm/include/llvm/Analysis/DependenceAnalysis.h +++ b/llvm/include/llvm/Analysis/DependenceAnalysis.h @@ -70,13 +70,8 @@ template class ArrayRef; /// itelf. class Dependence { protected: - Dependence(const Dependence &) = default; - - // FIXME: When we move to MSVC 2015 as the base compiler for Visual Studio - // support, uncomment this line to allow a defaulted move constructor for - // Dependence. Currently, FullDependence relies on the copy constructor, but - // that is acceptable given the triviality of the class. - // Dependence(Dependence &&) = default; + Dependence(Dependence &&) = default; + Dependence &operator=(Dependence &&) = default; public: Dependence(Instruction *Source, @@ -222,11 +217,6 @@ template class ArrayRef; FullDependence(Instruction *Src, Instruction *Dst, bool LoopIndependent, unsigned Levels); - FullDependence(FullDependence &&RHS) - : Dependence(std::move(RHS)), Levels(RHS.Levels), - LoopIndependent(RHS.LoopIndependent), Consistent(RHS.Consistent), - DV(std::move(RHS.DV)) {} - /// isLoopIndependent - Returns true if this is a loop-independent /// dependence. bool isLoopIndependent() const override { return LoopIndependent; } diff --git a/llvm/include/llvm/Analysis/LoopAccessAnalysis.h b/llvm/include/llvm/Analysis/LoopAccessAnalysis.h index 815153377112..7fc88e4359be 100644 --- a/llvm/include/llvm/Analysis/LoopAccessAnalysis.h +++ b/llvm/include/llvm/Analysis/LoopAccessAnalysis.h @@ -518,38 +518,6 @@ public: LoopAccessInfo(Loop *L, ScalarEvolution *SE, const TargetLibraryInfo *TLI, AliasAnalysis *AA, DominatorTree *DT, LoopInfo *LI); - // FIXME: - // Hack for MSVC 2013 which sems like it can't synthesize this even - // with default keyword: - // LoopAccessInfo(LoopAccessInfo &&LAI) = default; - LoopAccessInfo(LoopAccessInfo &&LAI) - : PSE(std::move(LAI.PSE)), PtrRtChecking(std::move(LAI.PtrRtChecking)), - DepChecker(std::move(LAI.DepChecker)), TheLoop(LAI.TheLoop), - NumLoads(LAI.NumLoads), NumStores(LAI.NumStores), - MaxSafeDepDistBytes(LAI.MaxSafeDepDistBytes), CanVecMem(LAI.CanVecMem), - StoreToLoopInvariantAddress(LAI.StoreToLoopInvariantAddress), - Report(std::move(LAI.Report)), - SymbolicStrides(std::move(LAI.SymbolicStrides)), - StrideSet(std::move(LAI.StrideSet)) {} - // LoopAccessInfo &operator=(LoopAccessInfo &&LAI) = default; - LoopAccessInfo &operator=(LoopAccessInfo &&LAI) { - assert(this != &LAI); - - PSE = std::move(LAI.PSE); - PtrRtChecking = std::move(LAI.PtrRtChecking); - DepChecker = std::move(LAI.DepChecker); - TheLoop = LAI.TheLoop; - NumLoads = LAI.NumLoads; - NumStores = LAI.NumStores; - MaxSafeDepDistBytes = LAI.MaxSafeDepDistBytes; - CanVecMem = LAI.CanVecMem; - StoreToLoopInvariantAddress = LAI.StoreToLoopInvariantAddress; - Report = std::move(LAI.Report); - SymbolicStrides = std::move(LAI.SymbolicStrides); - StrideSet = std::move(LAI.StrideSet); - return *this; - } - /// Return true we can analyze the memory accesses in the loop and there are /// no memory dependence cycles. bool canVectorizeMemory() const { return CanVecMem; } diff --git a/llvm/include/llvm/Analysis/LoopPassManager.h b/llvm/include/llvm/Analysis/LoopPassManager.h index a89551851259..5c948b989ff3 100644 --- a/llvm/include/llvm/Analysis/LoopPassManager.h +++ b/llvm/include/llvm/Analysis/LoopPassManager.h @@ -64,21 +64,6 @@ class FunctionToLoopPassAdaptor public: explicit FunctionToLoopPassAdaptor(LoopPassT Pass) : Pass(std::move(Pass)) {} - // We have to explicitly define all the special member functions because MSVC - // refuses to generate them. - FunctionToLoopPassAdaptor(const FunctionToLoopPassAdaptor &Arg) - : Pass(Arg.Pass) {} - FunctionToLoopPassAdaptor(FunctionToLoopPassAdaptor &&Arg) - : Pass(std::move(Arg.Pass)) {} - friend void swap(FunctionToLoopPassAdaptor &LHS, - FunctionToLoopPassAdaptor &RHS) { - using std::swap; - swap(LHS.Pass, RHS.Pass); - } - FunctionToLoopPassAdaptor &operator=(FunctionToLoopPassAdaptor RHS) { - swap(*this, RHS); - return *this; - } /// \brief Runs the loop passes across every loop in the function. PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM) { diff --git a/llvm/include/llvm/Analysis/PostDominators.h b/llvm/include/llvm/Analysis/PostDominators.h index f4bef126e610..59064d0d80e5 100644 --- a/llvm/include/llvm/Analysis/PostDominators.h +++ b/llvm/include/llvm/Analysis/PostDominators.h @@ -26,14 +26,6 @@ struct PostDominatorTree : public DominatorTreeBase { typedef DominatorTreeBase Base; PostDominatorTree() : DominatorTreeBase(true) {} - - PostDominatorTree(PostDominatorTree &&Arg) - : Base(std::move(static_cast(Arg))) {} - - PostDominatorTree &operator=(PostDominatorTree &&RHS) { - Base::operator=(std::move(static_cast(RHS))); - return *this; - } }; /// \brief Analysis pass which computes a \c PostDominatorTree. diff --git a/llvm/include/llvm/Analysis/ProfileSummaryInfo.h b/llvm/include/llvm/Analysis/ProfileSummaryInfo.h index 7f8cc596bea3..ce5583cbb70e 100644 --- a/llvm/include/llvm/Analysis/ProfileSummaryInfo.h +++ b/llvm/include/llvm/Analysis/ProfileSummaryInfo.h @@ -86,16 +86,6 @@ class ProfileSummaryAnalysis public: typedef ProfileSummaryInfo Result; - ProfileSummaryAnalysis() {} - ProfileSummaryAnalysis(const ProfileSummaryAnalysis &Arg) {} - ProfileSummaryAnalysis(ProfileSummaryAnalysis &&Arg) {} - ProfileSummaryAnalysis &operator=(const ProfileSummaryAnalysis &RHS) { - return *this; - } - ProfileSummaryAnalysis &operator=(ProfileSummaryAnalysis &&RHS) { - return *this; - } - Result run(Module &M, ModuleAnalysisManager &); private: diff --git a/llvm/include/llvm/Analysis/ScalarEvolution.h b/llvm/include/llvm/Analysis/ScalarEvolution.h index 23c2c9995de0..7a66d95d6399 100644 --- a/llvm/include/llvm/Analysis/ScalarEvolution.h +++ b/llvm/include/llvm/Analysis/ScalarEvolution.h @@ -609,22 +609,6 @@ private: std::unique_ptr Predicate) : ExitingBlock(ExitingBlock), ExactNotTaken(ExactNotTaken), Predicate(std::move(Predicate)) {} - - // Clang builds fine without this, but MSVC does not. - ExitNotTakenInfo(const ExitNotTakenInfo &) = delete; - - ExitNotTakenInfo(ExitNotTakenInfo &&Other) { - ExitingBlock = std::move(Other.ExitingBlock); - ExactNotTaken = std::move(Other.ExactNotTaken); - Predicate = std::move(Other.Predicate); - } - - ExitNotTakenInfo &operator=(ExitNotTakenInfo &&Other) { - ExitingBlock = std::move(Other.ExitingBlock); - ExactNotTaken = std::move(Other.ExactNotTaken); - Predicate = std::move(Other.Predicate); - return *this; - } }; /// Information about the backedge-taken count of a loop. This currently @@ -653,18 +637,8 @@ private: public: BackedgeTakenInfo() : MaxAndComplete(nullptr, 0) {} - BackedgeTakenInfo(const BackedgeTakenInfo &) = delete; - - BackedgeTakenInfo(BackedgeTakenInfo &&Other) { - ExitNotTaken = std::move(Other.ExitNotTaken); - MaxAndComplete = std::move(Other.MaxAndComplete); - } - - BackedgeTakenInfo &operator=(BackedgeTakenInfo &&Other) { - ExitNotTaken = std::move(Other.ExitNotTaken); - MaxAndComplete = std::move(Other.MaxAndComplete); - return *this; - } + BackedgeTakenInfo(BackedgeTakenInfo &&) = default; + BackedgeTakenInfo &operator=(BackedgeTakenInfo &&) = default; typedef std::pair EdgeExitInfo; diff --git a/llvm/include/llvm/Analysis/ScopedNoAliasAA.h b/llvm/include/llvm/Analysis/ScopedNoAliasAA.h index d0514d11094e..b435398be6a8 100644 --- a/llvm/include/llvm/Analysis/ScopedNoAliasAA.h +++ b/llvm/include/llvm/Analysis/ScopedNoAliasAA.h @@ -27,10 +27,6 @@ class ScopedNoAliasAAResult : public AAResultBase { friend AAResultBase; public: - explicit ScopedNoAliasAAResult() : AAResultBase() {} - ScopedNoAliasAAResult(ScopedNoAliasAAResult &&Arg) - : AAResultBase(std::move(Arg)) {} - /// Handle invalidation events from the new pass manager. /// /// By definition, this result is stateless and so remains valid. diff --git a/llvm/include/llvm/Analysis/TargetLibraryInfo.h b/llvm/include/llvm/Analysis/TargetLibraryInfo.h index b555343b35ac..9f1623563af6 100644 --- a/llvm/include/llvm/Analysis/TargetLibraryInfo.h +++ b/llvm/include/llvm/Analysis/TargetLibraryInfo.h @@ -297,15 +297,6 @@ public: TargetLibraryAnalysis(TargetLibraryInfoImpl PresetInfoImpl) : PresetInfoImpl(std::move(PresetInfoImpl)) {} - // Move semantics. We spell out the constructors for MSVC. - TargetLibraryAnalysis(TargetLibraryAnalysis &&Arg) - : PresetInfoImpl(std::move(Arg.PresetInfoImpl)), Impls(std::move(Arg.Impls)) {} - TargetLibraryAnalysis &operator=(TargetLibraryAnalysis &&RHS) { - PresetInfoImpl = std::move(RHS.PresetInfoImpl); - Impls = std::move(RHS.Impls); - return *this; - } - TargetLibraryInfo run(Module &M, ModuleAnalysisManager &); TargetLibraryInfo run(Function &F, FunctionAnalysisManager &); diff --git a/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h b/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h index 5b037245c292..4948bbda2ef3 100644 --- a/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h +++ b/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h @@ -435,12 +435,6 @@ protected: explicit TargetTransformInfoImplCRTPBase(const DataLayout &DL) : BaseT(DL) {} public: - // Provide value semantics. MSVC requires that we spell all of these out. - TargetTransformInfoImplCRTPBase(const TargetTransformInfoImplCRTPBase &Arg) - : BaseT(static_cast(Arg)) {} - TargetTransformInfoImplCRTPBase(TargetTransformInfoImplCRTPBase &&Arg) - : BaseT(std::move(static_cast(Arg))) {} - using BaseT::getCallCost; unsigned getCallCost(const Function *F, int NumArgs) { diff --git a/llvm/include/llvm/Analysis/TypeBasedAliasAnalysis.h b/llvm/include/llvm/Analysis/TypeBasedAliasAnalysis.h index f278ff420b14..87f5e30e5088 100644 --- a/llvm/include/llvm/Analysis/TypeBasedAliasAnalysis.h +++ b/llvm/include/llvm/Analysis/TypeBasedAliasAnalysis.h @@ -27,9 +27,6 @@ class TypeBasedAAResult : public AAResultBase { friend AAResultBase; public: - explicit TypeBasedAAResult() {} - TypeBasedAAResult(TypeBasedAAResult &&Arg) : AAResultBase(std::move(Arg)) {} - /// Handle invalidation events from the new pass manager. /// /// By definition, this result is stateless and so remains valid. diff --git a/llvm/include/llvm/Bitcode/BitstreamReader.h b/llvm/include/llvm/Bitcode/BitstreamReader.h index 56833f1aac2a..a3adb7bba284 100644 --- a/llvm/include/llvm/Bitcode/BitstreamReader.h +++ b/llvm/include/llvm/Bitcode/BitstreamReader.h @@ -58,9 +58,6 @@ private: /// information in the BlockInfo block. Only llvm-bcanalyzer uses this. bool IgnoreBlockInfoNames; - BitstreamReader(const BitstreamReader&) = delete; - void operator=(const BitstreamReader&) = delete; - public: BitstreamReader() : IgnoreBlockInfoNames(true) { } @@ -73,18 +70,6 @@ public: BitstreamReader(std::unique_ptr BitcodeBytes) : BitcodeBytes(std::move(BitcodeBytes)), IgnoreBlockInfoNames(true) {} - BitstreamReader(BitstreamReader &&Other) { - *this = std::move(Other); - } - - BitstreamReader &operator=(BitstreamReader &&Other) { - BitcodeBytes = std::move(Other.BitcodeBytes); - // Explicitly swap block info, so that nothing gets destroyed twice. - std::swap(BlockInfoRecords, Other.BlockInfoRecords); - IgnoreBlockInfoNames = Other.IgnoreBlockInfoNames; - return *this; - } - void init(const unsigned char *Start, const unsigned char *End) { assert(((End-Start) & 3) == 0 &&"Bitcode stream not a multiple of 4 bytes"); BitcodeBytes.reset(getNonStreamedMemoryObject(Start, End)); diff --git a/llvm/include/llvm/CodeGen/BasicTTIImpl.h b/llvm/include/llvm/CodeGen/BasicTTIImpl.h index 53b1c4d7bdf0..d219c2f2b54f 100644 --- a/llvm/include/llvm/CodeGen/BasicTTIImpl.h +++ b/llvm/include/llvm/CodeGen/BasicTTIImpl.h @@ -97,12 +97,6 @@ protected: using TargetTransformInfoImplBase::DL; public: - // Provide value semantics. MSVC requires that we spell all of these out. - BasicTTIImplBase(const BasicTTIImplBase &Arg) - : BaseT(static_cast(Arg)) {} - BasicTTIImplBase(BasicTTIImplBase &&Arg) - : BaseT(std::move(static_cast(Arg))) {} - /// \name Scalar TTI Implementations /// @{ bool allowsMisalignedMemoryAccesses(LLVMContext &Context, @@ -961,13 +955,6 @@ class BasicTTIImpl : public BasicTTIImplBase { public: explicit BasicTTIImpl(const TargetMachine *ST, const Function &F); - - // Provide value semantics. MSVC requires that we spell all of these out. - BasicTTIImpl(const BasicTTIImpl &Arg) - : BaseT(static_cast(Arg)), ST(Arg.ST), TLI(Arg.TLI) {} - BasicTTIImpl(BasicTTIImpl &&Arg) - : BaseT(std::move(static_cast(Arg))), ST(std::move(Arg.ST)), - TLI(std::move(Arg.TLI)) {} }; } diff --git a/llvm/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h b/llvm/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h index c670ad635ea1..148b1150dca5 100644 --- a/llvm/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h +++ b/llvm/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h @@ -89,15 +89,9 @@ private: class StaticGlobalRenamer { public: - StaticGlobalRenamer() {} - - StaticGlobalRenamer(StaticGlobalRenamer &&Other) - : NextId(Other.NextId) {} - - StaticGlobalRenamer& operator=(StaticGlobalRenamer &&Other) { - NextId = Other.NextId; - return *this; - } + StaticGlobalRenamer() = default; + StaticGlobalRenamer(StaticGlobalRenamer &&) = default; + StaticGlobalRenamer &operator=(StaticGlobalRenamer &&) = default; void rename(Module &M) { for (auto &F : M) @@ -124,45 +118,11 @@ private: struct SourceModuleEntry { std::unique_ptr> SourceMod; std::set StubsToClone; - - SourceModuleEntry() = default; - SourceModuleEntry(SourceModuleEntry &&Other) - : SourceMod(std::move(Other.SourceMod)), - StubsToClone(std::move(Other.StubsToClone)) {} - SourceModuleEntry& operator=(SourceModuleEntry &&Other) { - SourceMod = std::move(Other.SourceMod); - StubsToClone = std::move(Other.StubsToClone); - return *this; - } }; typedef std::vector SourceModulesList; typedef typename SourceModulesList::size_type SourceModuleHandle; - LogicalDylib() = default; - - // Explicit move constructor to make MSVC happy. - LogicalDylib(LogicalDylib &&Other) - : ExternalSymbolResolver(std::move(Other.ExternalSymbolResolver)), - MemMgr(std::move(Other.MemMgr)), - StubsMgr(std::move(Other.StubsMgr)), - StaticRenamer(std::move(Other.StaticRenamer)), - ModuleAdder(std::move(Other.ModuleAdder)), - SourceModules(std::move(Other.SourceModules)), - BaseLayerHandles(std::move(Other.BaseLayerHandles)) {} - - // Explicit move assignment operator to make MSVC happy. - LogicalDylib& operator=(LogicalDylib &&Other) { - ExternalSymbolResolver = std::move(Other.ExternalSymbolResolver); - MemMgr = std::move(Other.MemMgr); - StubsMgr = std::move(Other.StubsMgr); - StaticRenamer = std::move(Other.StaticRenamer); - ModuleAdder = std::move(Other.ModuleAdder); - SourceModules = std::move(Other.SourceModules); - BaseLayerHandles = std::move(Other.BaseLayerHandles); - return *this; - } - SourceModuleHandle addSourceModule(std::unique_ptr> M) { SourceModuleHandle H = SourceModules.size(); diff --git a/llvm/include/llvm/ExecutionEngine/Orc/RPCUtils.h b/llvm/include/llvm/ExecutionEngine/Orc/RPCUtils.h index e766a7f47f20..b6c7b2e7bbc3 100644 --- a/llvm/include/llvm/ExecutionEngine/Orc/RPCUtils.h +++ b/llvm/include/llvm/ExecutionEngine/Orc/RPCUtils.h @@ -409,24 +409,8 @@ public: RPC() = default; /// RPC instances cannot be copied. - RPC(const RPC &) = delete; - - /// RPC instances cannot be copied. - RPC &operator=(const RPC &) = delete; - - /// RPC move constructor. - // FIXME: Remove once MSVC can synthesize move ops. - RPC(RPC &&Other) - : SequenceNumberMgr(std::move(Other.SequenceNumberMgr)), - OutstandingResults(std::move(Other.OutstandingResults)) {} - - /// RPC move assignment. - // FIXME: Remove once MSVC can synthesize move ops. - RPC &operator=(RPC &&Other) { - SequenceNumberMgr = std::move(Other.SequenceNumberMgr); - OutstandingResults = std::move(Other.OutstandingResults); - return *this; - } + RPC(RPC &&) = default; + RPC &operator=(RPC &&) = default; /// Utility class for defining/referring to RPC procedures. /// diff --git a/llvm/include/llvm/IR/DebugLoc.h b/llvm/include/llvm/IR/DebugLoc.h index 8ea5875e1f85..202be3da14da 100644 --- a/llvm/include/llvm/IR/DebugLoc.h +++ b/llvm/include/llvm/IR/DebugLoc.h @@ -35,17 +35,7 @@ namespace llvm { TrackingMDNodeRef Loc; public: - DebugLoc() {} - DebugLoc(DebugLoc &&X) : Loc(std::move(X.Loc)) {} - DebugLoc(const DebugLoc &X) : Loc(X.Loc) {} - DebugLoc &operator=(DebugLoc &&X) { - Loc = std::move(X.Loc); - return *this; - } - DebugLoc &operator=(const DebugLoc &X) { - Loc = X.Loc; - return *this; - } + DebugLoc() = default; /// \brief Construct from an \a DILocation. DebugLoc(const DILocation *L); diff --git a/llvm/include/llvm/IR/Dominators.h b/llvm/include/llvm/IR/Dominators.h index 37c8091e63c0..fed708ac7252 100644 --- a/llvm/include/llvm/IR/Dominators.h +++ b/llvm/include/llvm/IR/Dominators.h @@ -102,13 +102,6 @@ public: recalculate(F); } - DominatorTree(DominatorTree &&Arg) - : Base(std::move(static_cast(Arg))) {} - DominatorTree &operator=(DominatorTree &&RHS) { - Base::operator=(std::move(static_cast(RHS))); - return *this; - } - /// \brief Returns *false* if the other dominator tree matches this dominator /// tree. inline bool compare(const DominatorTree &Other) const { diff --git a/llvm/include/llvm/IR/ModuleSummaryIndex.h b/llvm/include/llvm/IR/ModuleSummaryIndex.h index f907267a0385..14608d42a1d6 100644 --- a/llvm/include/llvm/IR/ModuleSummaryIndex.h +++ b/llvm/include/llvm/IR/ModuleSummaryIndex.h @@ -358,16 +358,6 @@ private: ModulePathStringTableTy ModulePathStringTable; public: - ModuleSummaryIndex() = default; - ModuleSummaryIndex(ModuleSummaryIndex &&Arg) - : GlobalValueMap(std::move(Arg.GlobalValueMap)), - ModulePathStringTable(std::move(Arg.ModulePathStringTable)) {} - ModuleSummaryIndex &operator=(ModuleSummaryIndex &&RHS) { - GlobalValueMap = std::move(RHS.GlobalValueMap); - ModulePathStringTable = std::move(RHS.ModulePathStringTable); - return *this; - } - gvsummary_iterator begin() { return GlobalValueMap.begin(); } const_gvsummary_iterator begin() const { return GlobalValueMap.begin(); } gvsummary_iterator end() { return GlobalValueMap.end(); } diff --git a/llvm/include/llvm/IR/PassManager.h b/llvm/include/llvm/IR/PassManager.h index 88616eda898f..07b30fe0fc63 100644 --- a/llvm/include/llvm/IR/PassManager.h +++ b/llvm/include/llvm/IR/PassManager.h @@ -65,22 +65,6 @@ namespace llvm { /// the IR is not mutated at all. class PreservedAnalyses { public: - // We have to explicitly define all the special member functions because MSVC - // refuses to generate them. - PreservedAnalyses() {} - PreservedAnalyses(const PreservedAnalyses &Arg) - : PreservedPassIDs(Arg.PreservedPassIDs) {} - PreservedAnalyses(PreservedAnalyses &&Arg) - : PreservedPassIDs(std::move(Arg.PreservedPassIDs)) {} - friend void swap(PreservedAnalyses &LHS, PreservedAnalyses &RHS) { - using std::swap; - swap(LHS.PreservedPassIDs, RHS.PreservedPassIDs); - } - PreservedAnalyses &operator=(PreservedAnalyses RHS) { - swap(*this, RHS); - return *this; - } - /// \brief Convenience factory function for the empty preserved set. static PreservedAnalyses none() { return PreservedAnalyses(); } @@ -257,16 +241,8 @@ public: /// /// It can be passed a flag to get debug logging as the passes are run. PassManager(bool DebugLogging = false) : DebugLogging(DebugLogging) {} - // 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; - } + PassManager(PassManager &&) = default; + PassManager &operator=(PassManager &&) = default; /// \brief Run all of the passes in this manager over the IR. PreservedAnalyses run(IRUnitT &IR, AnalysisManagerT &AM, @@ -323,9 +299,6 @@ private: typedef detail::PassConcept PassConceptT; - PassManager(const PassManager &) = delete; - PassManager &operator=(const PassManager &) = delete; - std::vector> Passes; /// \brief Flag indicating whether we should do debug logging. @@ -358,19 +331,8 @@ public: /// A flag can be passed to indicate that the manager should perform debug /// logging. AnalysisManager(bool DebugLogging = false) : DebugLogging(DebugLogging) {} - - // We have to explicitly define all the special member functions because MSVC - // refuses to generate them. - AnalysisManager(AnalysisManager &&Arg) - : AnalysisPasses(std::move(Arg.AnalysisPasses)), - AnalysisResults(std::move(Arg.AnalysisResults)), - DebugLogging(std::move(Arg.DebugLogging)) {} - AnalysisManager &operator=(AnalysisManager &&RHS) { - AnalysisPasses = std::move(RHS.AnalysisPasses); - AnalysisResults = std::move(RHS.AnalysisResults); - DebugLogging = std::move(RHS.DebugLogging); - return *this; - } + AnalysisManager(AnalysisManager &&) = default; + AnalysisManager &operator=(AnalysisManager &&) = default; /// \brief Returns true if the analysis manager has an empty results cache. bool empty() const { @@ -543,9 +505,6 @@ public: } private: - AnalysisManager(const AnalysisManager &) = delete; - AnalysisManager &operator=(const AnalysisManager &) = delete; - /// \brief Lookup a registered analysis pass. PassConceptT &lookupPass(void *PassID) { typename AnalysisPassMapT::iterator PI = AnalysisPasses.find(PassID); @@ -731,16 +690,6 @@ public: }; explicit InnerAnalysisManagerProxy(AnalysisManagerT &AM) : AM(&AM) {} - // We have to explicitly define all the special member functions because MSVC - // refuses to generate them. - InnerAnalysisManagerProxy(const InnerAnalysisManagerProxy &Arg) - : AM(Arg.AM) {} - InnerAnalysisManagerProxy(InnerAnalysisManagerProxy &&Arg) - : AM(std::move(Arg.AM)) {} - InnerAnalysisManagerProxy &operator=(InnerAnalysisManagerProxy RHS) { - std::swap(AM, RHS.AM); - return *this; - } /// \brief Run the analysis pass and create our proxy result object. /// @@ -795,14 +744,6 @@ public: class Result { public: explicit Result(const AnalysisManagerT &AM) : AM(&AM) {} - // We have to explicitly define all the special member functions because - // MSVC refuses to generate them. - Result(const Result &Arg) : AM(Arg.AM) {} - Result(Result &&Arg) : AM(std::move(Arg.AM)) {} - Result &operator=(Result RHS) { - std::swap(AM, RHS.AM); - return *this; - } const AnalysisManagerT &getManager() const { return *AM; } @@ -814,16 +755,6 @@ public: }; OuterAnalysisManagerProxy(const AnalysisManagerT &AM) : AM(&AM) {} - // We have to explicitly define all the special member functions because MSVC - // refuses to generate them. - OuterAnalysisManagerProxy(const OuterAnalysisManagerProxy &Arg) - : AM(Arg.AM) {} - OuterAnalysisManagerProxy(OuterAnalysisManagerProxy &&Arg) - : AM(std::move(Arg.AM)) {} - OuterAnalysisManagerProxy &operator=(OuterAnalysisManagerProxy RHS) { - std::swap(AM, RHS.AM); - return *this; - } /// \brief Run the analysis pass and create our proxy result object. /// Nothing to see here, it just forwards the \c AM reference into the @@ -879,21 +810,6 @@ class ModuleToFunctionPassAdaptor public: explicit ModuleToFunctionPassAdaptor(FunctionPassT Pass) : Pass(std::move(Pass)) {} - // We have to explicitly define all the special member functions because MSVC - // refuses to generate them. - ModuleToFunctionPassAdaptor(const ModuleToFunctionPassAdaptor &Arg) - : Pass(Arg.Pass) {} - ModuleToFunctionPassAdaptor(ModuleToFunctionPassAdaptor &&Arg) - : Pass(std::move(Arg.Pass)) {} - friend void swap(ModuleToFunctionPassAdaptor &LHS, - ModuleToFunctionPassAdaptor &RHS) { - using std::swap; - swap(LHS.Pass, RHS.Pass); - } - ModuleToFunctionPassAdaptor &operator=(ModuleToFunctionPassAdaptor RHS) { - swap(*this, RHS); - return *this; - } /// \brief Runs the function pass across every function in the module. PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM) { @@ -1014,19 +930,6 @@ template class RepeatedPass : public PassInfoMixin> { public: RepeatedPass(int Count, PassT P) : Count(Count), P(std::move(P)) {} - // We have to explicitly define all the special member functions because MSVC - // refuses to generate them. - RepeatedPass(const RepeatedPass &Arg) : Count(Arg.Count), P(Arg.P) {} - RepeatedPass(RepeatedPass &&Arg) : Count(Arg.Count), P(std::move(Arg.P)) {} - friend void swap(RepeatedPass &LHS, RepeatedPass &RHS) { - using std::swap; - swap(LHS.Count, RHS.Count); - swap(LHS.P, RHS.P); - } - RepeatedPass &operator=(RepeatedPass RHS) { - swap(*this, RHS); - return *this; - } template PreservedAnalyses run(IRUnitT &Arg, AnalysisManagerT &AM, Ts &&... Args) { diff --git a/llvm/include/llvm/IR/UseListOrder.h b/llvm/include/llvm/IR/UseListOrder.h index b86425b6a697..efff208295b6 100644 --- a/llvm/include/llvm/IR/UseListOrder.h +++ b/llvm/include/llvm/IR/UseListOrder.h @@ -34,18 +34,8 @@ struct UseListOrder { : V(V), F(F), Shuffle(ShuffleSize) {} UseListOrder() : V(nullptr), F(nullptr) {} - UseListOrder(UseListOrder &&X) - : V(X.V), F(X.F), Shuffle(std::move(X.Shuffle)) {} - UseListOrder &operator=(UseListOrder &&X) { - V = X.V; - F = X.F; - Shuffle = std::move(X.Shuffle); - return *this; - } - -private: - UseListOrder(const UseListOrder &X) = delete; - UseListOrder &operator=(const UseListOrder &X) = delete; + UseListOrder(UseListOrder &&) = default; + UseListOrder &operator=(UseListOrder &&) = default; }; typedef std::vector UseListOrderStack; diff --git a/llvm/include/llvm/LTO/Config.h b/llvm/include/llvm/LTO/Config.h index b2e7e99801d6..239ea878e98d 100644 --- a/llvm/include/llvm/LTO/Config.h +++ b/llvm/include/llvm/LTO/Config.h @@ -134,56 +134,6 @@ struct Config { CombinedIndexHookFn; CombinedIndexHookFn CombinedIndexHook; - Config() {} - // FIXME: Remove once MSVC can synthesize move ops. - Config(Config &&X) - : CPU(std::move(X.CPU)), Features(std::move(X.Features)), - Options(std::move(X.Options)), MAttrs(std::move(X.MAttrs)), - RelocModel(std::move(X.RelocModel)), CodeModel(std::move(X.CodeModel)), - CGOptLevel(std::move(X.CGOptLevel)), OptLevel(std::move(X.OptLevel)), - DisableVerify(std::move(X.DisableVerify)), - OptPipeline(std::move(X.OptPipeline)), - AAPipeline(std::move(X.AAPipeline)), - OverrideTriple(std::move(X.OverrideTriple)), - DefaultTriple(std::move(X.DefaultTriple)), - ShouldDiscardValueNames(std::move(X.ShouldDiscardValueNames)), - DiagHandler(std::move(X.DiagHandler)), - ResolutionFile(std::move(X.ResolutionFile)), - PreOptModuleHook(std::move(X.PreOptModuleHook)), - PostPromoteModuleHook(std::move(X.PostPromoteModuleHook)), - PostInternalizeModuleHook(std::move(X.PostInternalizeModuleHook)), - PostImportModuleHook(std::move(X.PostImportModuleHook)), - PostOptModuleHook(std::move(X.PostOptModuleHook)), - PreCodeGenModuleHook(std::move(X.PreCodeGenModuleHook)), - CombinedIndexHook(std::move(X.CombinedIndexHook)) {} - // FIXME: Remove once MSVC can synthesize move ops. - Config &operator=(Config &&X) { - CPU = std::move(X.CPU); - Features = std::move(X.Features); - Options = std::move(X.Options); - MAttrs = std::move(X.MAttrs); - RelocModel = std::move(X.RelocModel); - CodeModel = std::move(X.CodeModel); - CGOptLevel = std::move(X.CGOptLevel); - OptLevel = std::move(X.OptLevel); - DisableVerify = std::move(X.DisableVerify); - OptPipeline = std::move(X.OptPipeline); - AAPipeline = std::move(X.AAPipeline); - OverrideTriple = std::move(X.OverrideTriple); - DefaultTriple = std::move(X.DefaultTriple); - ShouldDiscardValueNames = std::move(X.ShouldDiscardValueNames); - DiagHandler = std::move(X.DiagHandler); - ResolutionFile = std::move(X.ResolutionFile); - PreOptModuleHook = std::move(X.PreOptModuleHook); - PostPromoteModuleHook = std::move(X.PostPromoteModuleHook); - PostInternalizeModuleHook = std::move(X.PostInternalizeModuleHook); - PostImportModuleHook = std::move(X.PostImportModuleHook); - PostOptModuleHook = std::move(X.PostOptModuleHook); - PreCodeGenModuleHook = std::move(X.PreCodeGenModuleHook); - CombinedIndexHook = std::move(X.CombinedIndexHook); - return *this; - } - /// This is a convenience function that configures this Config object to write /// temporary files named after the given OutputFileName for each of the LTO /// phases to disk. A client can use this function to implement -save-temps. diff --git a/llvm/include/llvm/Object/ArchiveWriter.h b/llvm/include/llvm/Object/ArchiveWriter.h index 55b58fac4f66..cabccc89685b 100644 --- a/llvm/include/llvm/Object/ArchiveWriter.h +++ b/llvm/include/llvm/Object/ArchiveWriter.h @@ -26,17 +26,6 @@ struct NewArchiveMember { unsigned UID = 0, GID = 0, Perms = 0644; NewArchiveMember() = default; - NewArchiveMember(NewArchiveMember &&Other) - : Buf(std::move(Other.Buf)), ModTime(Other.ModTime), UID(Other.UID), - GID(Other.GID), Perms(Other.Perms) {} - NewArchiveMember &operator=(NewArchiveMember &&Other) { - Buf = std::move(Other.Buf); - ModTime = Other.ModTime; - UID = Other.UID; - GID = Other.GID; - Perms = Other.Perms; - return *this; - } NewArchiveMember(MemoryBufferRef BufRef); static Expected diff --git a/llvm/include/llvm/ProfileData/Coverage/CoverageMapping.h b/llvm/include/llvm/ProfileData/Coverage/CoverageMapping.h index 0ec5ff67c0f0..d6051ffb3f8d 100644 --- a/llvm/include/llvm/ProfileData/Coverage/CoverageMapping.h +++ b/llvm/include/llvm/ProfileData/Coverage/CoverageMapping.h @@ -291,13 +291,8 @@ struct FunctionRecord { FunctionRecord(StringRef Name, ArrayRef Filenames) : Name(Name), Filenames(Filenames.begin(), Filenames.end()) {} - FunctionRecord(FunctionRecord &&FR) - : Name(FR.Name), Filenames(std::move(FR.Filenames)), - CountedRegions(std::move(FR.CountedRegions)), - ExecutionCount(FR.ExecutionCount) {} - - FunctionRecord(const FunctionRecord &) = delete; - const FunctionRecord &operator=(const FunctionRecord &) = delete; + FunctionRecord(FunctionRecord &&FR) = default; + FunctionRecord &operator=(FunctionRecord &&) = default; void pushRegion(CounterMappingRegion Region, uint64_t Count) { if (CountedRegions.empty()) @@ -405,10 +400,6 @@ public: CoverageData(StringRef Filename) : Filename(Filename) {} - CoverageData(CoverageData &&RHS) - : Filename(std::move(RHS.Filename)), Segments(std::move(RHS.Segments)), - Expansions(std::move(RHS.Expansions)) {} - /// \brief Get the name of the file this data covers. StringRef getFilename() const { return Filename; } diff --git a/llvm/include/llvm/Support/SourceMgr.h b/llvm/include/llvm/Support/SourceMgr.h index 1f8b1a01865f..bc7478e0d703 100644 --- a/llvm/include/llvm/Support/SourceMgr.h +++ b/llvm/include/llvm/Support/SourceMgr.h @@ -51,11 +51,6 @@ private: /// This is the location of the parent include, or null if at the top level. SMLoc IncludeLoc; - - SrcBuffer() {} - - SrcBuffer(SrcBuffer &&O) - : Buffer(std::move(O.Buffer)), IncludeLoc(O.IncludeLoc) {} }; /// This is all of the buffers that we are reading from. diff --git a/llvm/include/llvm/Transforms/InstCombine/InstCombine.h b/llvm/include/llvm/Transforms/InstCombine/InstCombine.h index b89c1bdaf10c..6bd22dc46255 100644 --- a/llvm/include/llvm/Transforms/InstCombine/InstCombine.h +++ b/llvm/include/llvm/Transforms/InstCombine/InstCombine.h @@ -31,17 +31,8 @@ class InstCombinePass : public PassInfoMixin { public: static StringRef name() { return "InstCombinePass"; } - // Explicitly define constructors for MSVC. - InstCombinePass(bool ExpensiveCombines = true) + explicit InstCombinePass(bool ExpensiveCombines = true) : ExpensiveCombines(ExpensiveCombines) {} - InstCombinePass(InstCombinePass &&Arg) - : Worklist(std::move(Arg.Worklist)), - ExpensiveCombines(Arg.ExpensiveCombines) {} - InstCombinePass &operator=(InstCombinePass &&RHS) { - Worklist = std::move(RHS.Worklist); - ExpensiveCombines = RHS.ExpensiveCombines; - return *this; - } PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM); }; diff --git a/llvm/include/llvm/Transforms/InstCombine/InstCombineWorklist.h b/llvm/include/llvm/Transforms/InstCombine/InstCombineWorklist.h index 32af035d07d4..271e891bb45e 100644 --- a/llvm/include/llvm/Transforms/InstCombine/InstCombineWorklist.h +++ b/llvm/include/llvm/Transforms/InstCombine/InstCombineWorklist.h @@ -28,19 +28,11 @@ class InstCombineWorklist { SmallVector Worklist; DenseMap WorklistMap; - void operator=(const InstCombineWorklist&RHS) = delete; - InstCombineWorklist(const InstCombineWorklist&) = delete; public: - InstCombineWorklist() {} + InstCombineWorklist() = default; - InstCombineWorklist(InstCombineWorklist &&Arg) - : Worklist(std::move(Arg.Worklist)), - WorklistMap(std::move(Arg.WorklistMap)) {} - InstCombineWorklist &operator=(InstCombineWorklist &&RHS) { - Worklist = std::move(RHS.Worklist); - WorklistMap = std::move(RHS.WorklistMap); - return *this; - } + InstCombineWorklist(InstCombineWorklist &&) = default; + InstCombineWorklist &operator=(InstCombineWorklist &&) = default; bool isEmpty() const { return Worklist.empty(); } diff --git a/llvm/include/llvm/Transforms/Scalar/JumpThreading.h b/llvm/include/llvm/Transforms/Scalar/JumpThreading.h index 6fcb2f17b0e0..f96741c0127d 100644 --- a/llvm/include/llvm/Transforms/Scalar/JumpThreading.h +++ b/llvm/include/llvm/Transforms/Scalar/JumpThreading.h @@ -85,13 +85,6 @@ class JumpThreadingPass : public PassInfoMixin { public: JumpThreadingPass(int T = -1); - // Hack for MSVC 2013 which seems like it can't synthesize this. - JumpThreadingPass(JumpThreadingPass &&Other) - : TLI(Other.TLI), LVI(Other.LVI), BFI(std::move(Other.BFI)), - BPI(std::move(Other.BPI)), HasProfileData(Other.HasProfileData), - LoopHeaders(std::move(Other.LoopHeaders)), - RecursionSet(std::move(Other.RecursionSet)), - BBDupThreshold(Other.BBDupThreshold) {} // Glue for old PM. bool runImpl(Function &F, TargetLibraryInfo *TLI_, LazyValueInfo *LVI_, diff --git a/llvm/include/llvm/Transforms/Utils/ImportedFunctionsInliningStatistics.h b/llvm/include/llvm/Transforms/Utils/ImportedFunctionsInliningStatistics.h index 1c488ae7f6f5..bb7fa523cb19 100644 --- a/llvm/include/llvm/Transforms/Utils/ImportedFunctionsInliningStatistics.h +++ b/llvm/include/llvm/Transforms/Utils/ImportedFunctionsInliningStatistics.h @@ -48,26 +48,8 @@ private: struct InlineGraphNode { // Default-constructible and movable. InlineGraphNode() = default; - // FIXME: make them default ctors when we won't support ancient compilers - // like MSVS-2013. - InlineGraphNode(InlineGraphNode &&Other) - : InlinedCallees(std::move(Other.InlinedCallees)), - NumberOfInlines(Other.NumberOfInlines), - NumberOfRealInlines(Other.NumberOfRealInlines), - Imported(Other.Imported), - Visited(Other.Visited) {} - - InlineGraphNode &operator=(InlineGraphNode &&Other) { - InlinedCallees = std::move(Other.InlinedCallees); - NumberOfInlines = Other.NumberOfInlines; - NumberOfRealInlines = Other.NumberOfRealInlines; - Imported = Other.Imported; - Visited = Other.Visited; - return *this; - } - - InlineGraphNode(const InlineGraphNode &) = delete; - InlineGraphNode &operator=(const InlineGraphNode &) = delete; + InlineGraphNode(InlineGraphNode &&) = default; + InlineGraphNode &operator=(InlineGraphNode &&) = default; llvm::SmallVector InlinedCallees; /// Incremented every direct inline. diff --git a/llvm/include/llvm/Transforms/Utils/MemorySSA.h b/llvm/include/llvm/Transforms/Utils/MemorySSA.h index e9979c006fd2..9ee44a07d527 100644 --- a/llvm/include/llvm/Transforms/Utils/MemorySSA.h +++ b/llvm/include/llvm/Transforms/Utils/MemorySSA.h @@ -662,12 +662,8 @@ public: // unique_ptr to avoid build breakage on MSVC. struct Result { Result(std::unique_ptr &&MSSA) : MSSA(std::move(MSSA)) {} - Result(Result &&R) : MSSA(std::move(R.MSSA)) {} MemorySSA &getMSSA() { return *MSSA.get(); } - Result(const Result &) = delete; - void operator=(const Result &) = delete; - std::unique_ptr MSSA; }; diff --git a/llvm/include/llvm/Transforms/Utils/SymbolRewriter.h b/llvm/include/llvm/Transforms/Utils/SymbolRewriter.h index 918ed3d930b5..ff995173e126 100644 --- a/llvm/include/llvm/Transforms/Utils/SymbolRewriter.h +++ b/llvm/include/llvm/Transforms/Utils/SymbolRewriter.h @@ -120,9 +120,6 @@ public: Descriptors.splice(Descriptors.begin(), DL); } - RewriteSymbolPass(RewriteSymbolPass &&Other) - : Descriptors(std::move(Other.Descriptors)) {} - PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM); // Glue for old PM diff --git a/llvm/lib/Analysis/StratifiedSets.h b/llvm/lib/Analysis/StratifiedSets.h index fd3a241d79c1..772df175b384 100644 --- a/llvm/lib/Analysis/StratifiedSets.h +++ b/llvm/lib/Analysis/StratifiedSets.h @@ -85,17 +85,8 @@ struct StratifiedLink { template class StratifiedSets { public: StratifiedSets() = default; - - // TODO: Figure out how to make MSVC not call the copy ctor here, and delete - // it. - - // Can't default these due to compile errors in MSVC2013 - StratifiedSets(StratifiedSets &&Other) { *this = std::move(Other); } - StratifiedSets &operator=(StratifiedSets &&Other) { - Values = std::move(Other.Values); - Links = std::move(Other.Links); - return *this; - } + StratifiedSets(StratifiedSets &&) = default; + StratifiedSets &operator=(StratifiedSets &&) = default; StratifiedSets(DenseMap Map, std::vector Links) diff --git a/llvm/lib/ExecutionEngine/GDBRegistrationListener.cpp b/llvm/lib/ExecutionEngine/GDBRegistrationListener.cpp index 1ab6203dd6da..dad099d73c96 100644 --- a/llvm/lib/ExecutionEngine/GDBRegistrationListener.cpp +++ b/llvm/lib/ExecutionEngine/GDBRegistrationListener.cpp @@ -69,16 +69,6 @@ struct RegisteredObjectInfo { OwningBinary Obj) : Size(Size), Entry(Entry), Obj(std::move(Obj)) {} - RegisteredObjectInfo(RegisteredObjectInfo &&Other) - : Size(Other.Size), Entry(Other.Entry), Obj(std::move(Other.Obj)) {} - - RegisteredObjectInfo& operator=(RegisteredObjectInfo &&Other) { - Size = Other.Size; - Entry = Other.Entry; - Obj = std::move(Other.Obj); - return *this; - } - std::size_t Size; jit_code_entry *Entry; OwningBinary Obj; diff --git a/llvm/lib/ExecutionEngine/Interpreter/Interpreter.h b/llvm/lib/ExecutionEngine/Interpreter/Interpreter.h index 2e5a867a200f..5c16448404bb 100644 --- a/llvm/lib/ExecutionEngine/Interpreter/Interpreter.h +++ b/llvm/lib/ExecutionEngine/Interpreter/Interpreter.h @@ -41,12 +41,9 @@ class AllocaHolder { public: AllocaHolder() {} - // Make this type move-only. Define explicit move special members for MSVC. - AllocaHolder(AllocaHolder &&RHS) : Allocations(std::move(RHS.Allocations)) {} - AllocaHolder &operator=(AllocaHolder &&RHS) { - Allocations = std::move(RHS.Allocations); - return *this; - } + // Make this type move-only. + AllocaHolder(AllocaHolder &&) = default; + AllocaHolder &operator=(AllocaHolder &&RHS) = default; ~AllocaHolder() { for (void *Allocation : Allocations) @@ -72,22 +69,6 @@ struct ExecutionContext { AllocaHolder Allocas; // Track memory allocated by alloca ExecutionContext() : CurFunction(nullptr), CurBB(nullptr), CurInst(nullptr) {} - - ExecutionContext(ExecutionContext &&O) - : CurFunction(O.CurFunction), CurBB(O.CurBB), CurInst(O.CurInst), - Caller(O.Caller), Values(std::move(O.Values)), - VarArgs(std::move(O.VarArgs)), Allocas(std::move(O.Allocas)) {} - - ExecutionContext &operator=(ExecutionContext &&O) { - CurFunction = O.CurFunction; - CurBB = O.CurBB; - CurInst = O.CurInst; - Caller = O.Caller; - Values = std::move(O.Values); - VarArgs = std::move(O.VarArgs); - Allocas = std::move(O.Allocas); - return *this; - } }; // Interpreter - This class represents the entirety of the interpreter. diff --git a/llvm/lib/Support/SpecialCaseList.cpp b/llvm/lib/Support/SpecialCaseList.cpp index 0ffe4444a179..6feda9de83f5 100644 --- a/llvm/lib/Support/SpecialCaseList.cpp +++ b/llvm/lib/Support/SpecialCaseList.cpp @@ -32,10 +32,6 @@ namespace llvm { /// reason for doing so is efficiency; StringSet is much faster at matching /// literal strings than Regex. struct SpecialCaseList::Entry { - Entry() {} - Entry(Entry &&Other) - : Strings(std::move(Other.Strings)), RegEx(std::move(Other.RegEx)) {} - StringSet<> Strings; std::unique_ptr RegEx; diff --git a/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.h b/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.h index 4f2e8310d769..24642cb1698e 100644 --- a/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.h +++ b/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.h @@ -52,13 +52,6 @@ public: : BaseT(TM, F.getParent()->getDataLayout()), ST(TM->getSubtargetImpl(F)), TLI(ST->getTargetLowering()) {} - // Provide value semantics. MSVC requires that we spell all of these out. - AArch64TTIImpl(const AArch64TTIImpl &Arg) - : BaseT(static_cast(Arg)), ST(Arg.ST), TLI(Arg.TLI) {} - AArch64TTIImpl(AArch64TTIImpl &&Arg) - : BaseT(std::move(static_cast(Arg))), ST(std::move(Arg.ST)), - TLI(std::move(Arg.TLI)) {} - /// \name Scalar TTI Implementations /// @{ diff --git a/llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.h b/llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.h index 8c8be63b53ba..1177007644ff 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.h +++ b/llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.h @@ -64,13 +64,6 @@ public: ST(TM->getSubtargetImpl(F)), TLI(ST->getTargetLowering()) {} - // Provide value semantics. MSVC requires that we spell all of these out. - AMDGPUTTIImpl(const AMDGPUTTIImpl &Arg) - : BaseT(static_cast(Arg)), ST(Arg.ST), TLI(Arg.TLI) {} - AMDGPUTTIImpl(AMDGPUTTIImpl &&Arg) - : BaseT(std::move(static_cast(Arg))), ST(std::move(Arg.ST)), - TLI(std::move(Arg.TLI)) {} - bool hasBranchDivergence() { return true; } void getUnrollingPreferences(Loop *L, TTI::UnrollingPreferences &UP); diff --git a/llvm/lib/Target/ARM/ARMTargetTransformInfo.h b/llvm/lib/Target/ARM/ARMTargetTransformInfo.h index c8b057b6aaf7..d83228afb0ab 100644 --- a/llvm/lib/Target/ARM/ARMTargetTransformInfo.h +++ b/llvm/lib/Target/ARM/ARMTargetTransformInfo.h @@ -45,13 +45,6 @@ public: : BaseT(TM, F.getParent()->getDataLayout()), ST(TM->getSubtargetImpl(F)), TLI(ST->getTargetLowering()) {} - // Provide value semantics. MSVC requires that we spell all of these out. - ARMTTIImpl(const ARMTTIImpl &Arg) - : BaseT(static_cast(Arg)), ST(Arg.ST), TLI(Arg.TLI) {} - ARMTTIImpl(ARMTTIImpl &&Arg) - : BaseT(std::move(static_cast(Arg))), ST(std::move(Arg.ST)), - TLI(std::move(Arg.TLI)) {} - bool enableInterleavedAccessVectorization() { return true; } /// Floating-point computation using ARMv8 AArch32 Advanced diff --git a/llvm/lib/Target/Hexagon/HexagonTargetTransformInfo.h b/llvm/lib/Target/Hexagon/HexagonTargetTransformInfo.h index f927663005dc..8414bfc4e197 100644 --- a/llvm/lib/Target/Hexagon/HexagonTargetTransformInfo.h +++ b/llvm/lib/Target/Hexagon/HexagonTargetTransformInfo.h @@ -40,13 +40,6 @@ public: : BaseT(TM, F.getParent()->getDataLayout()), ST(TM->getSubtargetImpl(F)), TLI(ST->getTargetLowering()) {} - // Provide value semantics. MSVC requires that we spell all of these out. - HexagonTTIImpl(const HexagonTTIImpl &Arg) - : BaseT(static_cast(Arg)), ST(Arg.ST), TLI(Arg.TLI) {} - HexagonTTIImpl(HexagonTTIImpl &&Arg) - : BaseT(std::move(static_cast(Arg))), ST(std::move(Arg.ST)), - TLI(std::move(Arg.TLI)) {} - /// \name Scalar TTI Implementations /// @{ diff --git a/llvm/lib/Target/Lanai/LanaiTargetTransformInfo.h b/llvm/lib/Target/Lanai/LanaiTargetTransformInfo.h index 6300d2502d67..7fcb3ce45bbb 100644 --- a/llvm/lib/Target/Lanai/LanaiTargetTransformInfo.h +++ b/llvm/lib/Target/Lanai/LanaiTargetTransformInfo.h @@ -41,11 +41,6 @@ public: : BaseT(TM, F.getParent()->getDataLayout()), ST(TM->getSubtargetImpl(F)), TLI(ST->getTargetLowering()) {} - LanaiTTIImpl(const LanaiTTIImpl &Arg) - : BaseT(static_cast(Arg)), ST(Arg.ST), TLI(Arg.TLI) {} - LanaiTTIImpl(LanaiTTIImpl &&Arg) - : BaseT(std::move(static_cast(Arg))), ST(Arg.ST), TLI(Arg.TLI) {} - bool shouldBuildLookupTables() const { return false; } TargetTransformInfo::PopcntSupportKind getPopcntSupport(unsigned TyWidth) { diff --git a/llvm/lib/Target/NVPTX/NVPTXTargetTransformInfo.h b/llvm/lib/Target/NVPTX/NVPTXTargetTransformInfo.h index 08ffdf191151..d953aa8a7199 100644 --- a/llvm/lib/Target/NVPTX/NVPTXTargetTransformInfo.h +++ b/llvm/lib/Target/NVPTX/NVPTXTargetTransformInfo.h @@ -41,13 +41,6 @@ public: : BaseT(TM, F.getParent()->getDataLayout()), ST(TM->getSubtargetImpl()), TLI(ST->getTargetLowering()) {} - // Provide value semantics. MSVC requires that we spell all of these out. - NVPTXTTIImpl(const NVPTXTTIImpl &Arg) - : BaseT(static_cast(Arg)), ST(Arg.ST), TLI(Arg.TLI) {} - NVPTXTTIImpl(NVPTXTTIImpl &&Arg) - : BaseT(std::move(static_cast(Arg))), ST(std::move(Arg.ST)), - TLI(std::move(Arg.TLI)) {} - bool hasBranchDivergence() { return true; } bool isSourceOfDivergence(const Value *V); diff --git a/llvm/lib/Target/PowerPC/PPCTargetTransformInfo.h b/llvm/lib/Target/PowerPC/PPCTargetTransformInfo.h index 5ea9a543cdb1..8308086ccfaa 100644 --- a/llvm/lib/Target/PowerPC/PPCTargetTransformInfo.h +++ b/llvm/lib/Target/PowerPC/PPCTargetTransformInfo.h @@ -41,13 +41,6 @@ public: : BaseT(TM, F.getParent()->getDataLayout()), ST(TM->getSubtargetImpl(F)), TLI(ST->getTargetLowering()) {} - // Provide value semantics. MSVC requires that we spell all of these out. - PPCTTIImpl(const PPCTTIImpl &Arg) - : BaseT(static_cast(Arg)), ST(Arg.ST), TLI(Arg.TLI) {} - PPCTTIImpl(PPCTTIImpl &&Arg) - : BaseT(std::move(static_cast(Arg))), ST(std::move(Arg.ST)), - TLI(std::move(Arg.TLI)) {} - /// \name Scalar TTI Implementations /// @{ diff --git a/llvm/lib/Target/SystemZ/SystemZTargetTransformInfo.h b/llvm/lib/Target/SystemZ/SystemZTargetTransformInfo.h index a870dd9ea015..f7d2d827f11b 100644 --- a/llvm/lib/Target/SystemZ/SystemZTargetTransformInfo.h +++ b/llvm/lib/Target/SystemZ/SystemZTargetTransformInfo.h @@ -32,13 +32,6 @@ public: : BaseT(TM, F.getParent()->getDataLayout()), ST(TM->getSubtargetImpl(F)), TLI(ST->getTargetLowering()) {} - // Provide value semantics. MSVC requires that we spell all of these out. - SystemZTTIImpl(const SystemZTTIImpl &Arg) - : BaseT(static_cast(Arg)), ST(Arg.ST), TLI(Arg.TLI) {} - SystemZTTIImpl(SystemZTTIImpl &&Arg) - : BaseT(std::move(static_cast(Arg))), ST(std::move(Arg.ST)), - TLI(std::move(Arg.TLI)) {} - /// \name Scalar TTI Implementations /// @{ diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.h b/llvm/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.h index fe99e96eb3b8..2a2e3941f82d 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.h +++ b/llvm/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.h @@ -42,13 +42,6 @@ public: : BaseT(TM, F.getParent()->getDataLayout()), ST(TM->getSubtargetImpl(F)), TLI(ST->getTargetLowering()) {} - // Provide value semantics. MSVC requires that we spell all of these out. - WebAssemblyTTIImpl(const WebAssemblyTTIImpl &Arg) - : BaseT(static_cast(Arg)), ST(Arg.ST), TLI(Arg.TLI) {} - WebAssemblyTTIImpl(WebAssemblyTTIImpl &&Arg) - : BaseT(std::move(static_cast(Arg))), ST(std::move(Arg.ST)), - TLI(std::move(Arg.TLI)) {} - /// \name Scalar TTI Implementations /// @{ diff --git a/llvm/lib/Target/X86/X86TargetTransformInfo.h b/llvm/lib/Target/X86/X86TargetTransformInfo.h index ab8046bb9fd4..1985e42c9b21 100644 --- a/llvm/lib/Target/X86/X86TargetTransformInfo.h +++ b/llvm/lib/Target/X86/X86TargetTransformInfo.h @@ -43,13 +43,6 @@ public: : BaseT(TM, F.getParent()->getDataLayout()), ST(TM->getSubtargetImpl(F)), TLI(ST->getTargetLowering()) {} - // Provide value semantics. MSVC requires that we spell all of these out. - X86TTIImpl(const X86TTIImpl &Arg) - : BaseT(static_cast(Arg)), ST(Arg.ST), TLI(Arg.TLI) {} - X86TTIImpl(X86TTIImpl &&Arg) - : BaseT(std::move(static_cast(Arg))), ST(std::move(Arg.ST)), - TLI(std::move(Arg.TLI)) {} - /// \name Scalar TTI Implementations /// @{ TTI::PopcntSupportKind getPopcntSupport(unsigned TyWidth); diff --git a/llvm/lib/Target/XCore/XCoreTargetTransformInfo.h b/llvm/lib/Target/XCore/XCoreTargetTransformInfo.h index b2cb889f1fc0..9617796f4861 100644 --- a/llvm/lib/Target/XCore/XCoreTargetTransformInfo.h +++ b/llvm/lib/Target/XCore/XCoreTargetTransformInfo.h @@ -41,13 +41,6 @@ public: : BaseT(TM, F.getParent()->getDataLayout()), ST(TM->getSubtargetImpl()), TLI(ST->getTargetLowering()) {} - // Provide value semantics. MSVC requires that we spell all of these out. - XCoreTTIImpl(const XCoreTTIImpl &Arg) - : BaseT(static_cast(Arg)), ST(Arg.ST), TLI(Arg.TLI) {} - XCoreTTIImpl(XCoreTTIImpl &&Arg) - : BaseT(std::move(static_cast(Arg))), ST(std::move(Arg.ST)), - TLI(std::move(Arg.TLI)) {} - unsigned getNumberOfRegisters(bool Vector) { if (Vector) { return 0; diff --git a/llvm/lib/Transforms/Utils/ValueMapper.cpp b/llvm/lib/Transforms/Utils/ValueMapper.cpp index 0170ab1374af..0e9baaf8649d 100644 --- a/llvm/lib/Transforms/Utils/ValueMapper.cpp +++ b/llvm/lib/Transforms/Utils/ValueMapper.cpp @@ -38,15 +38,6 @@ struct DelayedBasicBlock { BasicBlock *OldBB; std::unique_ptr TempBB; - // Explicit move for MSVC. - DelayedBasicBlock(DelayedBasicBlock &&X) - : OldBB(std::move(X.OldBB)), TempBB(std::move(X.TempBB)) {} - DelayedBasicBlock &operator=(DelayedBasicBlock &&X) { - OldBB = std::move(X.OldBB); - TempBB = std::move(X.TempBB); - return *this; - } - DelayedBasicBlock(const BlockAddress &Old) : OldBB(Old.getBasicBlock()), TempBB(BasicBlock::Create(Old.getContext())) {} @@ -184,17 +175,6 @@ class MDNodeMapper { bool HasChanged = false; unsigned ID = ~0u; TempMDNode Placeholder; - - Data() {} - Data(Data &&X) - : HasChanged(std::move(X.HasChanged)), ID(std::move(X.ID)), - Placeholder(std::move(X.Placeholder)) {} - Data &operator=(Data &&X) { - HasChanged = std::move(X.HasChanged); - ID = std::move(X.ID); - Placeholder = std::move(X.Placeholder); - return *this; - } }; /// A graph of uniqued nodes.