From 2a8bef8769ebe355e76060ad964ae95bfaf5eafb Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Thu, 20 Oct 2016 12:20:28 +0000 Subject: [PATCH] Do a sweep over move ctors and remove those that are identical to the default. All of these existed because MSVC 2013 was unable to synthesize default move ctors. We recently dropped support for it so all that error-prone boilerplate can go. No functionality change intended. llvm-svn: 284721 --- llvm/include/llvm/Analysis/AliasAnalysis.h | 14 --- llvm/include/llvm/Analysis/AssumptionCache.h | 6 -- llvm/include/llvm/Analysis/DependenceAnalysis.h | 14 +-- llvm/include/llvm/Analysis/LoopAccessAnalysis.h | 32 ------- llvm/include/llvm/Analysis/LoopPassManager.h | 15 --- llvm/include/llvm/Analysis/PostDominators.h | 8 -- llvm/include/llvm/Analysis/ProfileSummaryInfo.h | 10 -- llvm/include/llvm/Analysis/ScalarEvolution.h | 30 +----- llvm/include/llvm/Analysis/ScopedNoAliasAA.h | 4 - llvm/include/llvm/Analysis/TargetLibraryInfo.h | 9 -- .../llvm/Analysis/TargetTransformInfoImpl.h | 6 -- .../include/llvm/Analysis/TypeBasedAliasAnalysis.h | 3 - llvm/include/llvm/Bitcode/BitstreamReader.h | 15 --- llvm/include/llvm/CodeGen/BasicTTIImpl.h | 13 --- .../ExecutionEngine/Orc/CompileOnDemandLayer.h | 46 +-------- llvm/include/llvm/ExecutionEngine/Orc/RPCUtils.h | 20 +--- llvm/include/llvm/IR/DebugLoc.h | 12 +-- llvm/include/llvm/IR/Dominators.h | 7 -- llvm/include/llvm/IR/ModuleSummaryIndex.h | 10 -- llvm/include/llvm/IR/PassManager.h | 105 +-------------------- llvm/include/llvm/IR/UseListOrder.h | 14 +-- llvm/include/llvm/LTO/Config.h | 50 ---------- llvm/include/llvm/Object/ArchiveWriter.h | 11 --- .../llvm/ProfileData/Coverage/CoverageMapping.h | 13 +-- llvm/include/llvm/Support/SourceMgr.h | 5 - .../llvm/Transforms/InstCombine/InstCombine.h | 11 +-- .../Transforms/InstCombine/InstCombineWorklist.h | 16 +--- .../include/llvm/Transforms/Scalar/JumpThreading.h | 7 -- .../Utils/ImportedFunctionsInliningStatistics.h | 22 +---- llvm/include/llvm/Transforms/Utils/MemorySSA.h | 4 - .../include/llvm/Transforms/Utils/SymbolRewriter.h | 3 - llvm/lib/Analysis/StratifiedSets.h | 13 +-- .../ExecutionEngine/GDBRegistrationListener.cpp | 10 -- llvm/lib/ExecutionEngine/Interpreter/Interpreter.h | 25 +---- llvm/lib/Support/SpecialCaseList.cpp | 4 - .../Target/AArch64/AArch64TargetTransformInfo.h | 7 -- llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.h | 7 -- llvm/lib/Target/ARM/ARMTargetTransformInfo.h | 7 -- .../Target/Hexagon/HexagonTargetTransformInfo.h | 7 -- llvm/lib/Target/Lanai/LanaiTargetTransformInfo.h | 5 - llvm/lib/Target/NVPTX/NVPTXTargetTransformInfo.h | 7 -- llvm/lib/Target/PowerPC/PPCTargetTransformInfo.h | 7 -- .../Target/SystemZ/SystemZTargetTransformInfo.h | 7 -- .../WebAssembly/WebAssemblyTargetTransformInfo.h | 7 -- llvm/lib/Target/X86/X86TargetTransformInfo.h | 7 -- llvm/lib/Target/XCore/XCoreTargetTransformInfo.h | 7 -- llvm/lib/Transforms/Utils/ValueMapper.cpp | 20 ---- 47 files changed, 30 insertions(+), 652 deletions(-) diff --git a/llvm/include/llvm/Analysis/AliasAnalysis.h b/llvm/include/llvm/Analysis/AliasAnalysis.h index 3e105bb..f75c9c9 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 895b854..b05cb33 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 32dd367..e866217 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 8151533..7fc88e4 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 a895518..5c948b9 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 f4bef12..59064d0 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 7f8cc59..ce5583c 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 23c2c99..7a66d95 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 d0514d1..b435398 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 b555343..9f16235 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 5b03724..4948bbd 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 f278ff4..87f5e30 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 56833f1..a3adb7b 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 53b1c4d..d219c2f 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 c670ad6..148b115 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 e766a7f..b6c7b2e 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 8ea5875..202be3d 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 37c8091..fed708a 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 f907267..14608d4 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 88616ed..07b30fe 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 b86425b..efff208 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 b2e7e99..239ea87 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 55b58fa..cabccc8 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 0ec5ff6..d6051ff 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 1f8b1a0..bc7478e 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 b89c1bd..6bd22dc 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 32af035..271e891 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(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() = default; + + 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 6fcb2f1..f96741c 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 1c488ae7..bb7fa52 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 e9979c0..9ee44a0 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 918ed3d..ff99517 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 fd3a241..772df17 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 1ab6203..dad099d 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 2e5a867..5c16448 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 0ffe444..6feda9d 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 4f2e831..24642cb 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 8c8be63..1177007 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 c8b057b..d83228a 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 f927663..8414bfc 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 6300d25..7fcb3ce 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 08ffdf1..d953aa8 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 5ea9a54..8308086 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 a870dd9..f7d2d82 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 fe99e96..2a2e394 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 ab8046b..1985e42 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 b2cb889..9617796 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 0170ab1..0e9baaf 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. -- 2.7.4