[llvm] r284721 - Do a sweep over move ctors and remove those that are identical to the default.

Benjamin Kramer via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 20 10:00:07 PDT 2016


r284745 reverts the problematic part of the change. I have no idea
what is going on.

On Thu, Oct 20, 2016 at 6:34 PM, Sanjay Patel <spatel at rotateright.com> wrote:
> I'm getting a build failure on macOS using the system clang after this
> commit:
>
> [100%] Linking CXX executable ../../bin/opt
> Undefined symbols for architecture x86_64:
>   "llvm::PassManager<llvm::LazyCallGraph::SCC,
> llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>,
> llvm::LazyCallGraph&,
> llvm::CGSCCUpdateResult&>::PassManager(llvm::PassManager<llvm::LazyCallGraph::SCC,
> llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>,
> llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>&&)", referenced from:
>       llvm::PassBuilder::parseModulePass(llvm::PassManager<llvm::Module,
> llvm::AnalysisManager<llvm::Module> >&, llvm::PassBuilder::PipelineElement
> const&, bool, bool) in libLLVMPasses.a(PassBuilder.cpp.o)
>
> llvm::ModuleToPostOrderCGSCCPassAdaptor<llvm::PassManager<llvm::LazyCallGraph::SCC,
> llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>,
> llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&> >
> llvm::createModuleToPostOrderCGSCCPassAdaptor<llvm::PassManager<llvm::LazyCallGraph::SCC,
> llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>,
> llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>
>>(llvm::PassManager<llvm::LazyCallGraph::SCC,
> llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>,
> llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>, bool) in
> libLLVMPasses.a(PassBuilder.cpp.o)
>
> llvm::PassBuilder::parseCGSCCPass(llvm::PassManager<llvm::LazyCallGraph::SCC,
> llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>,
> llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>&,
> llvm::PassBuilder::PipelineElement const&, bool, bool) in
> libLLVMPasses.a(PassBuilder.cpp.o)
>       void llvm::PassManager<llvm::LazyCallGraph::SCC,
> llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>,
> llvm::LazyCallGraph&,
> llvm::CGSCCUpdateResult&>::addPass<llvm::PassManager<llvm::LazyCallGraph::SCC,
> llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>,
> llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>
>>(llvm::PassManager<llvm::LazyCallGraph::SCC,
> llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>,
> llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>) in
> libLLVMPasses.a(PassBuilder.cpp.o)
>       llvm::RepeatedPass<llvm::PassManager<llvm::LazyCallGraph::SCC,
> llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>,
> llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&> >
> llvm::createRepeatedPass<llvm::PassManager<llvm::LazyCallGraph::SCC,
> llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>,
> llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&> >(int,
> llvm::PassManager<llvm::LazyCallGraph::SCC,
> llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>,
> llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>) in
> libLLVMPasses.a(PassBuilder.cpp.o)
>
> llvm::ModuleToPostOrderCGSCCPassAdaptor<llvm::PassManager<llvm::LazyCallGraph::SCC,
> llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>,
> llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>
>>::ModuleToPostOrderCGSCCPassAdaptor(llvm::PassManager<llvm::LazyCallGraph::SCC,
> llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>,
> llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>, bool) in
> libLLVMPasses.a(PassBuilder.cpp.o)
>
> llvm::ModuleToPostOrderCGSCCPassAdaptor<llvm::PassManager<llvm::LazyCallGraph::SCC,
> llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>,
> llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>
>>::ModuleToPostOrderCGSCCPassAdaptor(llvm::ModuleToPostOrderCGSCCPassAdaptor<llvm::PassManager<llvm::LazyCallGraph::SCC,
> llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>,
> llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&> >&&) in
> libLLVMPasses.a(PassBuilder.cpp.o)
>       ...
>   "llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop>
>>::PassManager(llvm::PassManager<llvm::Loop,
> llvm::AnalysisManager<llvm::Loop> >&&)", referenced from:
>       llvm::PassBuilder::parseFunctionPass(llvm::PassManager<llvm::Function,
> llvm::AnalysisManager<llvm::Function> >&, llvm::PassBuilder::PipelineElement
> const&, bool, bool) in libLLVMPasses.a(PassBuilder.cpp.o)
>       llvm::FunctionToLoopPassAdaptor<llvm::PassManager<llvm::Loop,
> llvm::AnalysisManager<llvm::Loop> > >
> llvm::createFunctionToLoopPassAdaptor<llvm::PassManager<llvm::Loop,
> llvm::AnalysisManager<llvm::Loop> > >(llvm::PassManager<llvm::Loop,
> llvm::AnalysisManager<llvm::Loop> >) in libLLVMPasses.a(PassBuilder.cpp.o)
>       llvm::PassBuilder::parseLoopPass(llvm::PassManager<llvm::Loop,
> llvm::AnalysisManager<llvm::Loop> >&, llvm::PassBuilder::PipelineElement
> const&, bool, bool) in libLLVMPasses.a(PassBuilder.cpp.o)
>       void llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop>
>>::addPass<llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop> >
>>(llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop> >) in
> libLLVMPasses.a(PassBuilder.cpp.o)
>       llvm::RepeatedPass<llvm::PassManager<llvm::Loop,
> llvm::AnalysisManager<llvm::Loop> > >
> llvm::createRepeatedPass<llvm::PassManager<llvm::Loop,
> llvm::AnalysisManager<llvm::Loop> > >(int, llvm::PassManager<llvm::Loop,
> llvm::AnalysisManager<llvm::Loop> >) in libLLVMPasses.a(PassBuilder.cpp.o)
>       llvm::FunctionToLoopPassAdaptor<llvm::PassManager<llvm::Loop,
> llvm::AnalysisManager<llvm::Loop> >
>>::FunctionToLoopPassAdaptor(llvm::PassManager<llvm::Loop,
> llvm::AnalysisManager<llvm::Loop> >) in libLLVMPasses.a(PassBuilder.cpp.o)
>       llvm::FunctionToLoopPassAdaptor<llvm::PassManager<llvm::Loop,
> llvm::AnalysisManager<llvm::Loop> >
>>::FunctionToLoopPassAdaptor(llvm::FunctionToLoopPassAdaptor<llvm::PassManager<llvm::Loop,
> llvm::AnalysisManager<llvm::Loop> > >&&) in
> libLLVMPasses.a(PassBuilder.cpp.o)
>       ...
>   "llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>
>>::PassManager(llvm::PassManager<llvm::Module,
> llvm::AnalysisManager<llvm::Module> >&&)", referenced from:
>       llvm::PassBuilder::parseModulePass(llvm::PassManager<llvm::Module,
> llvm::AnalysisManager<llvm::Module> >&, llvm::PassBuilder::PipelineElement
> const&, bool, bool) in libLLVMPasses.a(PassBuilder.cpp.o)
>       void llvm::PassManager<llvm::Module,
> llvm::AnalysisManager<llvm::Module>
>>::addPass<llvm::PassManager<llvm::Module,
> llvm::AnalysisManager<llvm::Module> > >(llvm::PassManager<llvm::Module,
> llvm::AnalysisManager<llvm::Module> >) in libLLVMPasses.a(PassBuilder.cpp.o)
>       llvm::RepeatedPass<llvm::PassManager<llvm::Module,
> llvm::AnalysisManager<llvm::Module> > >
> llvm::createRepeatedPass<llvm::PassManager<llvm::Module,
> llvm::AnalysisManager<llvm::Module> > >(int, llvm::PassManager<llvm::Module,
> llvm::AnalysisManager<llvm::Module> >) in libLLVMPasses.a(PassBuilder.cpp.o)
>       llvm::detail::PassModel<llvm::Module, llvm::PassManager<llvm::Module,
> llvm::AnalysisManager<llvm::Module> >, llvm::PreservedAnalyses,
> llvm::AnalysisManager<llvm::Module>
>>::PassModel(llvm::PassManager<llvm::Module,
> llvm::AnalysisManager<llvm::Module> >) in libLLVMPasses.a(PassBuilder.cpp.o)
>       llvm::RepeatedPass<llvm::PassManager<llvm::Module,
> llvm::AnalysisManager<llvm::Module> > >::RepeatedPass(int,
> llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module> >) in
> libLLVMPasses.a(PassBuilder.cpp.o)
>       llvm::RepeatedPass<llvm::PassManager<llvm::Module,
> llvm::AnalysisManager<llvm::Module> >
>>::RepeatedPass(llvm::RepeatedPass<llvm::PassManager<llvm::Module,
> llvm::AnalysisManager<llvm::Module> > >&&) in
> libLLVMPasses.a(PassBuilder.cpp.o)
>   "llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>
>>::PassManager(llvm::PassManager<llvm::Function,
> llvm::AnalysisManager<llvm::Function> >&&)", referenced from:
>
> llvm::PassBuilder::addPerModuleDefaultPipeline(llvm::PassManager<llvm::Module,
> llvm::AnalysisManager<llvm::Module> >&,
> llvm::PassBuilder::OptimizationLevel, bool) in
> libLLVMPasses.a(PassBuilder.cpp.o)
>       llvm::ModuleToFunctionPassAdaptor<llvm::PassManager<llvm::Function,
> llvm::AnalysisManager<llvm::Function> > >
> llvm::createModuleToFunctionPassAdaptor<llvm::PassManager<llvm::Function,
> llvm::AnalysisManager<llvm::Function> > >(llvm::PassManager<llvm::Function,
> llvm::AnalysisManager<llvm::Function> >) in
> libLLVMPasses.a(PassBuilder.cpp.o)
>
> llvm::PassBuilder::addLTODefaultPipeline(llvm::PassManager<llvm::Module,
> llvm::AnalysisManager<llvm::Module> >&,
> llvm::PassBuilder::OptimizationLevel, bool) in
> libLLVMPasses.a(PassBuilder.cpp.o)
>       llvm::PassBuilder::parseModulePass(llvm::PassManager<llvm::Module,
> llvm::AnalysisManager<llvm::Module> >&, llvm::PassBuilder::PipelineElement
> const&, bool, bool) in libLLVMPasses.a(PassBuilder.cpp.o)
>
> llvm::PassBuilder::parseCGSCCPass(llvm::PassManager<llvm::LazyCallGraph::SCC,
> llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>,
> llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>&,
> llvm::PassBuilder::PipelineElement const&, bool, bool) in
> libLLVMPasses.a(PassBuilder.cpp.o)
>       llvm::CGSCCToFunctionPassAdaptor<llvm::PassManager<llvm::Function,
> llvm::AnalysisManager<llvm::Function> > >
> llvm::createCGSCCToFunctionPassAdaptor<llvm::PassManager<llvm::Function,
> llvm::AnalysisManager<llvm::Function> > >(llvm::PassManager<llvm::Function,
> llvm::AnalysisManager<llvm::Function> >, bool) in
> libLLVMPasses.a(PassBuilder.cpp.o)
>       llvm::PassBuilder::parseFunctionPass(llvm::PassManager<llvm::Function,
> llvm::AnalysisManager<llvm::Function> >&, llvm::PassBuilder::PipelineElement
> const&, bool, bool) in libLLVMPasses.a(PassBuilder.cpp.o)
>       ...
> ld: symbol(s) not found for architecture x86_64
> clang: error: linker command failed with exit code 1 (use -v to see
> invocation)
>
>
> On Thu, Oct 20, 2016 at 6:20 AM, Benjamin Kramer via llvm-commits
> <llvm-commits at lists.llvm.org> wrote:
>>
>> Author: d0k
>> Date: Thu Oct 20 07:20:28 2016
>> New Revision: 284721
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=284721&view=rev
>> Log:
>> 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.
>>
>> Modified:
>>     llvm/trunk/include/llvm/Analysis/AliasAnalysis.h
>>     llvm/trunk/include/llvm/Analysis/AssumptionCache.h
>>     llvm/trunk/include/llvm/Analysis/DependenceAnalysis.h
>>     llvm/trunk/include/llvm/Analysis/LoopAccessAnalysis.h
>>     llvm/trunk/include/llvm/Analysis/LoopPassManager.h
>>     llvm/trunk/include/llvm/Analysis/PostDominators.h
>>     llvm/trunk/include/llvm/Analysis/ProfileSummaryInfo.h
>>     llvm/trunk/include/llvm/Analysis/ScalarEvolution.h
>>     llvm/trunk/include/llvm/Analysis/ScopedNoAliasAA.h
>>     llvm/trunk/include/llvm/Analysis/TargetLibraryInfo.h
>>     llvm/trunk/include/llvm/Analysis/TargetTransformInfoImpl.h
>>     llvm/trunk/include/llvm/Analysis/TypeBasedAliasAnalysis.h
>>     llvm/trunk/include/llvm/Bitcode/BitstreamReader.h
>>     llvm/trunk/include/llvm/CodeGen/BasicTTIImpl.h
>>     llvm/trunk/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h
>>     llvm/trunk/include/llvm/ExecutionEngine/Orc/RPCUtils.h
>>     llvm/trunk/include/llvm/IR/DebugLoc.h
>>     llvm/trunk/include/llvm/IR/Dominators.h
>>     llvm/trunk/include/llvm/IR/ModuleSummaryIndex.h
>>     llvm/trunk/include/llvm/IR/PassManager.h
>>     llvm/trunk/include/llvm/IR/UseListOrder.h
>>     llvm/trunk/include/llvm/LTO/Config.h
>>     llvm/trunk/include/llvm/Object/ArchiveWriter.h
>>     llvm/trunk/include/llvm/ProfileData/Coverage/CoverageMapping.h
>>     llvm/trunk/include/llvm/Support/SourceMgr.h
>>     llvm/trunk/include/llvm/Transforms/InstCombine/InstCombine.h
>>     llvm/trunk/include/llvm/Transforms/InstCombine/InstCombineWorklist.h
>>     llvm/trunk/include/llvm/Transforms/Scalar/JumpThreading.h
>>
>> llvm/trunk/include/llvm/Transforms/Utils/ImportedFunctionsInliningStatistics.h
>>     llvm/trunk/include/llvm/Transforms/Utils/MemorySSA.h
>>     llvm/trunk/include/llvm/Transforms/Utils/SymbolRewriter.h
>>     llvm/trunk/lib/Analysis/StratifiedSets.h
>>     llvm/trunk/lib/ExecutionEngine/GDBRegistrationListener.cpp
>>     llvm/trunk/lib/ExecutionEngine/Interpreter/Interpreter.h
>>     llvm/trunk/lib/Support/SpecialCaseList.cpp
>>     llvm/trunk/lib/Target/AArch64/AArch64TargetTransformInfo.h
>>     llvm/trunk/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.h
>>     llvm/trunk/lib/Target/ARM/ARMTargetTransformInfo.h
>>     llvm/trunk/lib/Target/Hexagon/HexagonTargetTransformInfo.h
>>     llvm/trunk/lib/Target/Lanai/LanaiTargetTransformInfo.h
>>     llvm/trunk/lib/Target/NVPTX/NVPTXTargetTransformInfo.h
>>     llvm/trunk/lib/Target/PowerPC/PPCTargetTransformInfo.h
>>     llvm/trunk/lib/Target/SystemZ/SystemZTargetTransformInfo.h
>>     llvm/trunk/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.h
>>     llvm/trunk/lib/Target/X86/X86TargetTransformInfo.h
>>     llvm/trunk/lib/Target/XCore/XCoreTargetTransformInfo.h
>>     llvm/trunk/lib/Transforms/Utils/ValueMapper.cpp
>>
>> Modified: llvm/trunk/include/llvm/Analysis/AliasAnalysis.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/AliasAnalysis.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/Analysis/AliasAnalysis.h (original)
>> +++ llvm/trunk/include/llvm/Analysis/AliasAnalysis.h Thu Oct 20 07:20:28
>> 2016
>> @@ -854,20 +854,6 @@ class AAManager : public AnalysisInfoMix
>>  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 <typename AnalysisT> void registerFunctionAnalysis() {
>>      ResultGetters.push_back(&getFunctionAAResultImpl<AnalysisT>);
>>
>> Modified: llvm/trunk/include/llvm/Analysis/AssumptionCache.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/AssumptionCache.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/Analysis/AssumptionCache.h (original)
>> +++ llvm/trunk/include/llvm/Analysis/AssumptionCache.h Thu Oct 20 07:20:28
>> 2016
>> @@ -100,12 +100,6 @@ class AssumptionAnalysis : public Analys
>>  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);
>>    }
>>
>> Modified: llvm/trunk/include/llvm/Analysis/DependenceAnalysis.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/DependenceAnalysis.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/Analysis/DependenceAnalysis.h (original)
>> +++ llvm/trunk/include/llvm/Analysis/DependenceAnalysis.h Thu Oct 20
>> 07:20:28 2016
>> @@ -70,13 +70,8 @@ template <typename T> 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 <typename T> 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; }
>>
>> Modified: llvm/trunk/include/llvm/Analysis/LoopAccessAnalysis.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/LoopAccessAnalysis.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/Analysis/LoopAccessAnalysis.h (original)
>> +++ llvm/trunk/include/llvm/Analysis/LoopAccessAnalysis.h Thu Oct 20
>> 07:20:28 2016
>> @@ -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; }
>>
>> Modified: llvm/trunk/include/llvm/Analysis/LoopPassManager.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/LoopPassManager.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/Analysis/LoopPassManager.h (original)
>> +++ llvm/trunk/include/llvm/Analysis/LoopPassManager.h Thu Oct 20 07:20:28
>> 2016
>> @@ -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) {
>>
>> Modified: llvm/trunk/include/llvm/Analysis/PostDominators.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/PostDominators.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/Analysis/PostDominators.h (original)
>> +++ llvm/trunk/include/llvm/Analysis/PostDominators.h Thu Oct 20 07:20:28
>> 2016
>> @@ -26,14 +26,6 @@ struct PostDominatorTree : public Domina
>>    typedef DominatorTreeBase<BasicBlock> Base;
>>
>>    PostDominatorTree() : DominatorTreeBase<BasicBlock>(true) {}
>> -
>> -  PostDominatorTree(PostDominatorTree &&Arg)
>> -    : Base(std::move(static_cast<Base &>(Arg))) {}
>> -
>> -  PostDominatorTree &operator=(PostDominatorTree &&RHS) {
>> -    Base::operator=(std::move(static_cast<Base &>(RHS)));
>> -    return *this;
>> -  }
>>  };
>>
>>  /// \brief Analysis pass which computes a \c PostDominatorTree.
>>
>> Modified: llvm/trunk/include/llvm/Analysis/ProfileSummaryInfo.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/ProfileSummaryInfo.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/Analysis/ProfileSummaryInfo.h (original)
>> +++ llvm/trunk/include/llvm/Analysis/ProfileSummaryInfo.h Thu Oct 20
>> 07:20:28 2016
>> @@ -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:
>>
>> Modified: llvm/trunk/include/llvm/Analysis/ScalarEvolution.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/ScalarEvolution.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/Analysis/ScalarEvolution.h (original)
>> +++ llvm/trunk/include/llvm/Analysis/ScalarEvolution.h Thu Oct 20 07:20:28
>> 2016
>> @@ -609,22 +609,6 @@ private:
>>                                std::unique_ptr<SCEVUnionPredicate>
>> 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<BasicBlock *, ExitLimit> EdgeExitInfo;
>>
>>
>> Modified: llvm/trunk/include/llvm/Analysis/ScopedNoAliasAA.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/ScopedNoAliasAA.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/Analysis/ScopedNoAliasAA.h (original)
>> +++ llvm/trunk/include/llvm/Analysis/ScopedNoAliasAA.h Thu Oct 20 07:20:28
>> 2016
>> @@ -27,10 +27,6 @@ class ScopedNoAliasAAResult : public AAR
>>    friend AAResultBase<ScopedNoAliasAAResult>;
>>
>>  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.
>>
>> Modified: llvm/trunk/include/llvm/Analysis/TargetLibraryInfo.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/TargetLibraryInfo.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/Analysis/TargetLibraryInfo.h (original)
>> +++ llvm/trunk/include/llvm/Analysis/TargetLibraryInfo.h Thu Oct 20
>> 07:20:28 2016
>> @@ -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 &);
>>
>>
>> Modified: llvm/trunk/include/llvm/Analysis/TargetTransformInfoImpl.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/TargetTransformInfoImpl.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/Analysis/TargetTransformInfoImpl.h (original)
>> +++ llvm/trunk/include/llvm/Analysis/TargetTransformInfoImpl.h Thu Oct 20
>> 07:20:28 2016
>> @@ -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<const BaseT &>(Arg)) {}
>> -  TargetTransformInfoImplCRTPBase(TargetTransformInfoImplCRTPBase &&Arg)
>> -      : BaseT(std::move(static_cast<BaseT &>(Arg))) {}
>> -
>>    using BaseT::getCallCost;
>>
>>    unsigned getCallCost(const Function *F, int NumArgs) {
>>
>> Modified: llvm/trunk/include/llvm/Analysis/TypeBasedAliasAnalysis.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/TypeBasedAliasAnalysis.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/Analysis/TypeBasedAliasAnalysis.h (original)
>> +++ llvm/trunk/include/llvm/Analysis/TypeBasedAliasAnalysis.h Thu Oct 20
>> 07:20:28 2016
>> @@ -27,9 +27,6 @@ class TypeBasedAAResult : public AAResul
>>    friend AAResultBase<TypeBasedAAResult>;
>>
>>  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.
>>
>> Modified: llvm/trunk/include/llvm/Bitcode/BitstreamReader.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Bitcode/BitstreamReader.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/Bitcode/BitstreamReader.h (original)
>> +++ llvm/trunk/include/llvm/Bitcode/BitstreamReader.h Thu Oct 20 07:20:28
>> 2016
>> @@ -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<MemoryObject> 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));
>>
>> Modified: llvm/trunk/include/llvm/CodeGen/BasicTTIImpl.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/BasicTTIImpl.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/CodeGen/BasicTTIImpl.h (original)
>> +++ llvm/trunk/include/llvm/CodeGen/BasicTTIImpl.h Thu Oct 20 07:20:28
>> 2016
>> @@ -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<const BaseT &>(Arg)) {}
>> -  BasicTTIImplBase(BasicTTIImplBase &&Arg)
>> -      : BaseT(std::move(static_cast<BaseT &>(Arg))) {}
>> -
>>    /// \name Scalar TTI Implementations
>>    /// @{
>>    bool allowsMisalignedMemoryAccesses(LLVMContext &Context,
>> @@ -961,13 +955,6 @@ class BasicTTIImpl : public BasicTTIImpl
>>
>>  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<const BaseT &>(Arg)), ST(Arg.ST), TLI(Arg.TLI)
>> {}
>> -  BasicTTIImpl(BasicTTIImpl &&Arg)
>> -      : BaseT(std::move(static_cast<BaseT &>(Arg))),
>> ST(std::move(Arg.ST)),
>> -        TLI(std::move(Arg.TLI)) {}
>>  };
>>
>>  }
>>
>> Modified:
>> llvm/trunk/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h
>> (original)
>> +++ llvm/trunk/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h Thu
>> Oct 20 07:20:28 2016
>> @@ -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<ResourceOwner<Module>> SourceMod;
>>        std::set<Function*> 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<SourceModuleEntry> 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<ResourceOwner<Module>> M) {
>>        SourceModuleHandle H = SourceModules.size();
>>
>> Modified: llvm/trunk/include/llvm/ExecutionEngine/Orc/RPCUtils.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ExecutionEngine/Orc/RPCUtils.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/ExecutionEngine/Orc/RPCUtils.h (original)
>> +++ llvm/trunk/include/llvm/ExecutionEngine/Orc/RPCUtils.h Thu Oct 20
>> 07:20:28 2016
>> @@ -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.
>>    ///
>>
>> Modified: llvm/trunk/include/llvm/IR/DebugLoc.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/DebugLoc.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/IR/DebugLoc.h (original)
>> +++ llvm/trunk/include/llvm/IR/DebugLoc.h Thu Oct 20 07:20:28 2016
>> @@ -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);
>>
>> Modified: llvm/trunk/include/llvm/IR/Dominators.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Dominators.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/IR/Dominators.h (original)
>> +++ llvm/trunk/include/llvm/IR/Dominators.h Thu Oct 20 07:20:28 2016
>> @@ -102,13 +102,6 @@ public:
>>      recalculate(F);
>>    }
>>
>> -  DominatorTree(DominatorTree &&Arg)
>> -      : Base(std::move(static_cast<Base &>(Arg))) {}
>> -  DominatorTree &operator=(DominatorTree &&RHS) {
>> -    Base::operator=(std::move(static_cast<Base &>(RHS)));
>> -    return *this;
>> -  }
>> -
>>    /// \brief Returns *false* if the other dominator tree matches this
>> dominator
>>    /// tree.
>>    inline bool compare(const DominatorTree &Other) const {
>>
>> Modified: llvm/trunk/include/llvm/IR/ModuleSummaryIndex.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/ModuleSummaryIndex.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/IR/ModuleSummaryIndex.h (original)
>> +++ llvm/trunk/include/llvm/IR/ModuleSummaryIndex.h Thu Oct 20 07:20:28
>> 2016
>> @@ -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(); }
>>
>> Modified: llvm/trunk/include/llvm/IR/PassManager.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/PassManager.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/IR/PassManager.h (original)
>> +++ llvm/trunk/include/llvm/IR/PassManager.h Thu Oct 20 07:20:28 2016
>> @@ -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<IRUnitT, AnalysisManagerT, ExtraArgTs...>
>>        PassConceptT;
>>
>> -  PassManager(const PassManager &) = delete;
>> -  PassManager &operator=(const PassManager &) = delete;
>> -
>>    std::vector<std::unique_ptr<PassConceptT>> 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 <typename PassT>
>>  class RepeatedPass : public PassInfoMixin<RepeatedPass<PassT>> {
>>  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 <typename IRUnitT, typename AnalysisManagerT, typename... Ts>
>>    PreservedAnalyses run(IRUnitT &Arg, AnalysisManagerT &AM, Ts &&...
>> Args) {
>>
>> Modified: llvm/trunk/include/llvm/IR/UseListOrder.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/UseListOrder.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/IR/UseListOrder.h (original)
>> +++ llvm/trunk/include/llvm/IR/UseListOrder.h Thu Oct 20 07:20:28 2016
>> @@ -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<UseListOrder> UseListOrderStack;
>>
>> Modified: llvm/trunk/include/llvm/LTO/Config.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/LTO/Config.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/LTO/Config.h (original)
>> +++ llvm/trunk/include/llvm/LTO/Config.h Thu Oct 20 07:20:28 2016
>> @@ -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.
>>
>> Modified: llvm/trunk/include/llvm/Object/ArchiveWriter.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/ArchiveWriter.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/Object/ArchiveWriter.h (original)
>> +++ llvm/trunk/include/llvm/Object/ArchiveWriter.h Thu Oct 20 07:20:28
>> 2016
>> @@ -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<NewArchiveMember>
>>
>> Modified: llvm/trunk/include/llvm/ProfileData/Coverage/CoverageMapping.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ProfileData/Coverage/CoverageMapping.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/ProfileData/Coverage/CoverageMapping.h
>> (original)
>> +++ llvm/trunk/include/llvm/ProfileData/Coverage/CoverageMapping.h Thu Oct
>> 20 07:20:28 2016
>> @@ -291,13 +291,8 @@ struct FunctionRecord {
>>    FunctionRecord(StringRef Name, ArrayRef<StringRef> 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; }
>>
>>
>> Modified: llvm/trunk/include/llvm/Support/SourceMgr.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/SourceMgr.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/Support/SourceMgr.h (original)
>> +++ llvm/trunk/include/llvm/Support/SourceMgr.h Thu Oct 20 07:20:28 2016
>> @@ -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.
>>
>> Modified: llvm/trunk/include/llvm/Transforms/InstCombine/InstCombine.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/InstCombine/InstCombine.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/Transforms/InstCombine/InstCombine.h
>> (original)
>> +++ llvm/trunk/include/llvm/Transforms/InstCombine/InstCombine.h Thu Oct
>> 20 07:20:28 2016
>> @@ -31,17 +31,8 @@ class InstCombinePass : public PassInfoM
>>  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);
>>  };
>>
>> Modified:
>> llvm/trunk/include/llvm/Transforms/InstCombine/InstCombineWorklist.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/InstCombine/InstCombineWorklist.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/Transforms/InstCombine/InstCombineWorklist.h
>> (original)
>> +++ llvm/trunk/include/llvm/Transforms/InstCombine/InstCombineWorklist.h
>> Thu Oct 20 07:20:28 2016
>> @@ -28,19 +28,11 @@ class InstCombineWorklist {
>>    SmallVector<Instruction*, 256> Worklist;
>>    DenseMap<Instruction*, unsigned> 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(); }
>>
>>
>> Modified: llvm/trunk/include/llvm/Transforms/Scalar/JumpThreading.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/Scalar/JumpThreading.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/Transforms/Scalar/JumpThreading.h (original)
>> +++ llvm/trunk/include/llvm/Transforms/Scalar/JumpThreading.h Thu Oct 20
>> 07:20:28 2016
>> @@ -85,13 +85,6 @@ class JumpThreadingPass : public PassInf
>>
>>  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_,
>>
>> Modified:
>> llvm/trunk/include/llvm/Transforms/Utils/ImportedFunctionsInliningStatistics.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/Utils/ImportedFunctionsInliningStatistics.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> ---
>> llvm/trunk/include/llvm/Transforms/Utils/ImportedFunctionsInliningStatistics.h
>> (original)
>> +++
>> llvm/trunk/include/llvm/Transforms/Utils/ImportedFunctionsInliningStatistics.h
>> Thu Oct 20 07:20:28 2016
>> @@ -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<InlineGraphNode *, 8> InlinedCallees;
>>      /// Incremented every direct inline.
>>
>> Modified: llvm/trunk/include/llvm/Transforms/Utils/MemorySSA.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/Utils/MemorySSA.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/Transforms/Utils/MemorySSA.h (original)
>> +++ llvm/trunk/include/llvm/Transforms/Utils/MemorySSA.h Thu Oct 20
>> 07:20:28 2016
>> @@ -662,12 +662,8 @@ public:
>>    // unique_ptr<MemorySSA> to avoid build breakage on MSVC.
>>    struct Result {
>>      Result(std::unique_ptr<MemorySSA> &&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<MemorySSA> MSSA;
>>    };
>>
>>
>> Modified: llvm/trunk/include/llvm/Transforms/Utils/SymbolRewriter.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/Utils/SymbolRewriter.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/Transforms/Utils/SymbolRewriter.h (original)
>> +++ llvm/trunk/include/llvm/Transforms/Utils/SymbolRewriter.h Thu Oct 20
>> 07:20:28 2016
>> @@ -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
>>
>> Modified: llvm/trunk/lib/Analysis/StratifiedSets.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/StratifiedSets.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Analysis/StratifiedSets.h (original)
>> +++ llvm/trunk/lib/Analysis/StratifiedSets.h Thu Oct 20 07:20:28 2016
>> @@ -85,17 +85,8 @@ struct StratifiedLink {
>>  template <typename T> 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<T, StratifiedInfo> Map,
>>                   std::vector<StratifiedLink> Links)
>>
>> Modified: llvm/trunk/lib/ExecutionEngine/GDBRegistrationListener.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/GDBRegistrationListener.cpp?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/ExecutionEngine/GDBRegistrationListener.cpp (original)
>> +++ llvm/trunk/lib/ExecutionEngine/GDBRegistrationListener.cpp Thu Oct 20
>> 07:20:28 2016
>> @@ -69,16 +69,6 @@ struct RegisteredObjectInfo {
>>                         OwningBinary<ObjectFile> 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<ObjectFile> Obj;
>>
>> Modified: llvm/trunk/lib/ExecutionEngine/Interpreter/Interpreter.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/Interpreter/Interpreter.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/ExecutionEngine/Interpreter/Interpreter.h (original)
>> +++ llvm/trunk/lib/ExecutionEngine/Interpreter/Interpreter.h Thu Oct 20
>> 07:20:28 2016
>> @@ -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.
>>
>> Modified: llvm/trunk/lib/Support/SpecialCaseList.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/SpecialCaseList.cpp?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Support/SpecialCaseList.cpp (original)
>> +++ llvm/trunk/lib/Support/SpecialCaseList.cpp Thu Oct 20 07:20:28 2016
>> @@ -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> RegEx;
>>
>>
>> Modified: llvm/trunk/lib/Target/AArch64/AArch64TargetTransformInfo.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64TargetTransformInfo.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/AArch64/AArch64TargetTransformInfo.h (original)
>> +++ llvm/trunk/lib/Target/AArch64/AArch64TargetTransformInfo.h Thu Oct 20
>> 07:20:28 2016
>> @@ -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<const BaseT &>(Arg)), ST(Arg.ST), TLI(Arg.TLI)
>> {}
>> -  AArch64TTIImpl(AArch64TTIImpl &&Arg)
>> -      : BaseT(std::move(static_cast<BaseT &>(Arg))),
>> ST(std::move(Arg.ST)),
>> -        TLI(std::move(Arg.TLI)) {}
>> -
>>    /// \name Scalar TTI Implementations
>>    /// @{
>>
>>
>> Modified: llvm/trunk/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.h (original)
>> +++ llvm/trunk/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.h Thu Oct 20
>> 07:20:28 2016
>> @@ -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<const BaseT &>(Arg)), ST(Arg.ST), TLI(Arg.TLI)
>> {}
>> -  AMDGPUTTIImpl(AMDGPUTTIImpl &&Arg)
>> -      : BaseT(std::move(static_cast<BaseT &>(Arg))),
>> ST(std::move(Arg.ST)),
>> -        TLI(std::move(Arg.TLI)) {}
>> -
>>    bool hasBranchDivergence() { return true; }
>>
>>    void getUnrollingPreferences(Loop *L, TTI::UnrollingPreferences &UP);
>>
>> Modified: llvm/trunk/lib/Target/ARM/ARMTargetTransformInfo.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMTargetTransformInfo.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/ARM/ARMTargetTransformInfo.h (original)
>> +++ llvm/trunk/lib/Target/ARM/ARMTargetTransformInfo.h Thu Oct 20 07:20:28
>> 2016
>> @@ -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<const BaseT &>(Arg)), ST(Arg.ST), TLI(Arg.TLI)
>> {}
>> -  ARMTTIImpl(ARMTTIImpl &&Arg)
>> -      : BaseT(std::move(static_cast<BaseT &>(Arg))),
>> ST(std::move(Arg.ST)),
>> -        TLI(std::move(Arg.TLI)) {}
>> -
>>    bool enableInterleavedAccessVectorization() { return true; }
>>
>>    /// Floating-point computation using ARMv8 AArch32 Advanced
>>
>> Modified: llvm/trunk/lib/Target/Hexagon/HexagonTargetTransformInfo.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/HexagonTargetTransformInfo.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/Hexagon/HexagonTargetTransformInfo.h (original)
>> +++ llvm/trunk/lib/Target/Hexagon/HexagonTargetTransformInfo.h Thu Oct 20
>> 07:20:28 2016
>> @@ -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<const BaseT &>(Arg)), ST(Arg.ST), TLI(Arg.TLI)
>> {}
>> -  HexagonTTIImpl(HexagonTTIImpl &&Arg)
>> -      : BaseT(std::move(static_cast<BaseT &>(Arg))),
>> ST(std::move(Arg.ST)),
>> -        TLI(std::move(Arg.TLI)) {}
>> -
>>    /// \name Scalar TTI Implementations
>>    /// @{
>>
>>
>> Modified: llvm/trunk/lib/Target/Lanai/LanaiTargetTransformInfo.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Lanai/LanaiTargetTransformInfo.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/Lanai/LanaiTargetTransformInfo.h (original)
>> +++ llvm/trunk/lib/Target/Lanai/LanaiTargetTransformInfo.h Thu Oct 20
>> 07:20:28 2016
>> @@ -41,11 +41,6 @@ public:
>>        : BaseT(TM, F.getParent()->getDataLayout()),
>> ST(TM->getSubtargetImpl(F)),
>>          TLI(ST->getTargetLowering()) {}
>>
>> -  LanaiTTIImpl(const LanaiTTIImpl &Arg)
>> -      : BaseT(static_cast<const BaseT &>(Arg)), ST(Arg.ST), TLI(Arg.TLI)
>> {}
>> -  LanaiTTIImpl(LanaiTTIImpl &&Arg)
>> -      : BaseT(std::move(static_cast<BaseT &>(Arg))), ST(Arg.ST),
>> TLI(Arg.TLI) {}
>> -
>>    bool shouldBuildLookupTables() const { return false; }
>>
>>    TargetTransformInfo::PopcntSupportKind getPopcntSupport(unsigned
>> TyWidth) {
>>
>> Modified: llvm/trunk/lib/Target/NVPTX/NVPTXTargetTransformInfo.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/NVPTX/NVPTXTargetTransformInfo.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/NVPTX/NVPTXTargetTransformInfo.h (original)
>> +++ llvm/trunk/lib/Target/NVPTX/NVPTXTargetTransformInfo.h Thu Oct 20
>> 07:20:28 2016
>> @@ -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<const BaseT &>(Arg)), ST(Arg.ST), TLI(Arg.TLI)
>> {}
>> -  NVPTXTTIImpl(NVPTXTTIImpl &&Arg)
>> -      : BaseT(std::move(static_cast<BaseT &>(Arg))),
>> ST(std::move(Arg.ST)),
>> -        TLI(std::move(Arg.TLI)) {}
>> -
>>    bool hasBranchDivergence() { return true; }
>>
>>    bool isSourceOfDivergence(const Value *V);
>>
>> Modified: llvm/trunk/lib/Target/PowerPC/PPCTargetTransformInfo.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCTargetTransformInfo.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/PowerPC/PPCTargetTransformInfo.h (original)
>> +++ llvm/trunk/lib/Target/PowerPC/PPCTargetTransformInfo.h Thu Oct 20
>> 07:20:28 2016
>> @@ -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<const BaseT &>(Arg)), ST(Arg.ST), TLI(Arg.TLI)
>> {}
>> -  PPCTTIImpl(PPCTTIImpl &&Arg)
>> -      : BaseT(std::move(static_cast<BaseT &>(Arg))),
>> ST(std::move(Arg.ST)),
>> -        TLI(std::move(Arg.TLI)) {}
>> -
>>    /// \name Scalar TTI Implementations
>>    /// @{
>>
>>
>> Modified: llvm/trunk/lib/Target/SystemZ/SystemZTargetTransformInfo.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/SystemZ/SystemZTargetTransformInfo.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/SystemZ/SystemZTargetTransformInfo.h (original)
>> +++ llvm/trunk/lib/Target/SystemZ/SystemZTargetTransformInfo.h Thu Oct 20
>> 07:20:28 2016
>> @@ -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<const BaseT &>(Arg)), ST(Arg.ST), TLI(Arg.TLI)
>> {}
>> -  SystemZTTIImpl(SystemZTTIImpl &&Arg)
>> -      : BaseT(std::move(static_cast<BaseT &>(Arg))),
>> ST(std::move(Arg.ST)),
>> -        TLI(std::move(Arg.TLI)) {}
>> -
>>    /// \name Scalar TTI Implementations
>>    /// @{
>>
>>
>> Modified:
>> llvm/trunk/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.h
>> (original)
>> +++ llvm/trunk/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.h Thu
>> Oct 20 07:20:28 2016
>> @@ -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<const BaseT &>(Arg)), ST(Arg.ST), TLI(Arg.TLI)
>> {}
>> -  WebAssemblyTTIImpl(WebAssemblyTTIImpl &&Arg)
>> -      : BaseT(std::move(static_cast<BaseT &>(Arg))),
>> ST(std::move(Arg.ST)),
>> -        TLI(std::move(Arg.TLI)) {}
>> -
>>    /// \name Scalar TTI Implementations
>>    /// @{
>>
>>
>> Modified: llvm/trunk/lib/Target/X86/X86TargetTransformInfo.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86TargetTransformInfo.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/X86/X86TargetTransformInfo.h (original)
>> +++ llvm/trunk/lib/Target/X86/X86TargetTransformInfo.h Thu Oct 20 07:20:28
>> 2016
>> @@ -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<const BaseT &>(Arg)), ST(Arg.ST), TLI(Arg.TLI)
>> {}
>> -  X86TTIImpl(X86TTIImpl &&Arg)
>> -      : BaseT(std::move(static_cast<BaseT &>(Arg))),
>> ST(std::move(Arg.ST)),
>> -        TLI(std::move(Arg.TLI)) {}
>> -
>>    /// \name Scalar TTI Implementations
>>    /// @{
>>    TTI::PopcntSupportKind getPopcntSupport(unsigned TyWidth);
>>
>> Modified: llvm/trunk/lib/Target/XCore/XCoreTargetTransformInfo.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/XCore/XCoreTargetTransformInfo.h?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/XCore/XCoreTargetTransformInfo.h (original)
>> +++ llvm/trunk/lib/Target/XCore/XCoreTargetTransformInfo.h Thu Oct 20
>> 07:20:28 2016
>> @@ -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<const BaseT &>(Arg)), ST(Arg.ST), TLI(Arg.TLI)
>> {}
>> -  XCoreTTIImpl(XCoreTTIImpl &&Arg)
>> -      : BaseT(std::move(static_cast<BaseT &>(Arg))),
>> ST(std::move(Arg.ST)),
>> -        TLI(std::move(Arg.TLI)) {}
>> -
>>    unsigned getNumberOfRegisters(bool Vector) {
>>      if (Vector) {
>>        return 0;
>>
>> Modified: llvm/trunk/lib/Transforms/Utils/ValueMapper.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/ValueMapper.cpp?rev=284721&r1=284720&r2=284721&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/Utils/ValueMapper.cpp (original)
>> +++ llvm/trunk/lib/Transforms/Utils/ValueMapper.cpp Thu Oct 20 07:20:28
>> 2016
>> @@ -38,15 +38,6 @@ struct DelayedBasicBlock {
>>    BasicBlock *OldBB;
>>    std::unique_ptr<BasicBlock> 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.
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
>


More information about the llvm-commits mailing list