[llvm] r243114 - Remove access to the DataLayout in the TargetMachine

Chandler Carruth chandlerc at google.com
Fri Jul 24 10:25:25 PDT 2015


I don't know why you can't contribute. It's part of LLVM.

Anyways, I fixed it in r243121.

On Fri, Jul 24, 2015 at 10:20 AM Mehdi Amini <mehdi.amini at apple.com> wrote:

> Hi,
>
> Is it this project: http://llvm.org/docs/GoldPlugin.html
> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_docs_GoldPlugin.html&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=I-So1rjtg_8W3YfQynlIN1FllkA8iuWfR6jGy55u-Vo&s=Aq6wyEcLWSg-fgBMdGCXfgE40wiE5MSHj1NTnamNLVw&e=>
>  ?
> I probably can’t contribute, but I can hint you about how to do it, the
> lines you are quoting should be replaced by:
>
>   M.setDataLayout(TM.createDataLayout());
>
>> Mehdi
>
>
>
> On Jul 24, 2015, at 10:05 AM, Reid Kleckner <rnk at google.com> wrote:
>
> Can you fix gold plugin? It does this currently:
>
>   if (const DataLayout *DL = TM.getDataLayout())
>     M.setDataLayout(*DL);
>
> I'm not 100% sure what the fix is from your change.
>
> On Fri, Jul 24, 2015 at 9:04 AM, Mehdi Amini <mehdi.amini at apple.com>
> wrote:
>
> Author: mehdi_amini
>> Date: Fri Jul 24 11:04:22 2015
>> New Revision: 243114
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=243114&view=rev
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D243114-26view-3Drev&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=I-So1rjtg_8W3YfQynlIN1FllkA8iuWfR6jGy55u-Vo&s=mIajbtYywcgQbg9moWiK8KNR87cnt7OD5tToP7lhiAU&e=>
>
>
>> Log:
>> Remove access to the DataLayout in the TargetMachine
>>
>> Summary:
>> Replace getDataLayout() with a createDataLayout() method to make
>> explicit that it is intended to create a DataLayout only and not
>> accessing it for other purpose.
>>
>> This change is the last of a series of commits dedicated to have a
>> single DataLayout during compilation by using always the one owned
>> by the module.
>>
>> Reviewers: echristo
>>
>> Subscribers: jholewinski, llvm-commits, rafael, yaron.keren
>>
>> Differential Revision: http://reviews.llvm.org/D11103
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__reviews.llvm.org_D11103&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=I-So1rjtg_8W3YfQynlIN1FllkA8iuWfR6jGy55u-Vo&s=WT_A-wT9bmhFK6WYeSIyz1IHSyHYVso52-hRhmB-knQ&e=>
>
>
>>
>> (cherry picked from commit 5609fc56bca971e5a7efeaa6ca4676638eaec5ea)
>>
>> From: Mehdi Amini <mehdi.amini at apple.com>
>>
>> Modified:
>>     llvm/trunk/examples/Kaleidoscope/Orc/fully_lazy/toy.cpp
>>     llvm/trunk/examples/Kaleidoscope/Orc/initial/toy.cpp
>>     llvm/trunk/examples/Kaleidoscope/Orc/lazy_codegen/toy.cpp
>>     llvm/trunk/examples/Kaleidoscope/Orc/lazy_irgen/toy.cpp
>>     llvm/trunk/include/llvm/Target/TargetMachine.h
>>     llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
>>     llvm/trunk/lib/ExecutionEngine/MCJIT/MCJIT.cpp
>>     llvm/trunk/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h
>>     llvm/trunk/lib/LTO/LTOCodeGenerator.cpp
>>     llvm/trunk/lib/LTO/LTOModule.cpp
>>     llvm/trunk/lib/Target/Sparc/SparcISelLowering.cpp
>>     llvm/trunk/lib/Target/SystemZ/SystemZISelLowering.cpp
>>     llvm/trunk/lib/Target/TargetMachineC.cpp
>>     llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
>>     llvm/trunk/tools/llc/llc.cpp
>>     llvm/trunk/tools/lli/OrcLazyJIT.cpp
>>     llvm/trunk/tools/lli/OrcLazyJIT.h
>>
>> Modified: llvm/trunk/examples/Kaleidoscope/Orc/fully_lazy/toy.cpp
>>
> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/examples/Kaleidoscope/Orc/fully_lazy/toy.cpp?rev=243114&r1=243113&r2=243114&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_examples_Kaleidoscope_Orc_fully-5Flazy_toy.cpp-3Frev-3D243114-26r1-3D243113-26r2-3D243114-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=I-So1rjtg_8W3YfQynlIN1FllkA8iuWfR6jGy55u-Vo&s=S4qI3VXXQnChdbd92mr8dLHjhwZngooCaO23KOtV-ko&e=>
>
>
>>
>> ==============================================================================
>> --- llvm/trunk/examples/Kaleidoscope/Orc/fully_lazy/toy.cpp (original)
>> +++ llvm/trunk/examples/Kaleidoscope/Orc/fully_lazy/toy.cpp Fri Jul 24
>> 11:04:22 2015
>> @@ -717,7 +717,7 @@ public:
>>        M(new Module(GenerateUniqueName("jit_module_"),
>>                     Session.getLLVMContext())),
>>        Builder(Session.getLLVMContext()) {
>> -    M->setDataLayout(*Session.getTarget().getDataLayout());
>> +    M->setDataLayout(Session.getTarget().createDataLayout());
>>    }
>>
>>    SessionContext& getSession() { return Session; }
>> @@ -1179,7 +1179,7 @@ public:
>>      {
>>        raw_string_ostream MangledNameStream(MangledName);
>>        Mangler::getNameWithPrefix(MangledNameStream, Name,
>> -                                 *Session.getTarget().getDataLayout());
>> +                                 Session.getTarget().createDataLayout());
>>      }
>>      return MangledName;
>>    }
>>
>> Modified: llvm/trunk/examples/Kaleidoscope/Orc/initial/toy.cpp
>>
> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/examples/Kaleidoscope/Orc/initial/toy.cpp?rev=243114&r1=243113&r2=243114&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_examples_Kaleidoscope_Orc_initial_toy.cpp-3Frev-3D243114-26r1-3D243113-26r2-3D243114-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=I-So1rjtg_8W3YfQynlIN1FllkA8iuWfR6jGy55u-Vo&s=lhOPApsD63UDQ9vJSwFC_ML7LTmmggrRngyksjMz8JM&e=>
>
>
>>
>> ==============================================================================
>> --- llvm/trunk/examples/Kaleidoscope/Orc/initial/toy.cpp (original)
>> +++ llvm/trunk/examples/Kaleidoscope/Orc/initial/toy.cpp Fri Jul 24
>> 11:04:22 2015
>> @@ -716,7 +716,7 @@ public:
>>        M(new Module(GenerateUniqueName("jit_module_"),
>>                     Session.getLLVMContext())),
>>        Builder(Session.getLLVMContext()) {
>> -    M->setDataLayout(*Session.getTarget().getDataLayout());
>> +    M->setDataLayout(Session.getTarget().createDataLayout());
>>    }
>>
>>    SessionContext& getSession() { return Session; }
>> @@ -1160,7 +1160,7 @@ public:
>>    typedef CompileLayerT::ModuleSetHandleT ModuleHandleT;
>>
>>    KaleidoscopeJIT(SessionContext &Session)
>> -      : DL(*Session.getTarget().getDataLayout()),
>> +      : DL(Session.getTarget().createDataLayout()),
>>          CompileLayer(ObjectLayer, SimpleCompiler(Session.getTarget())) {}
>>
>>    std::string mangle(const std::string &Name) {
>> @@ -1201,7 +1201,7 @@ public:
>>    }
>>
>>  private:
>> -  const DataLayout &DL;
>> +  const DataLayout DL;
>>    ObjLayerT ObjectLayer;
>>    CompileLayerT CompileLayer;
>>  };
>>
>> Modified: llvm/trunk/examples/Kaleidoscope/Orc/lazy_codegen/toy.cpp
>>
> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/examples/Kaleidoscope/Orc/lazy_codegen/toy.cpp?rev=243114&r1=243113&r2=243114&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_examples_Kaleidoscope_Orc_lazy-5Fcodegen_toy.cpp-3Frev-3D243114-26r1-3D243113-26r2-3D243114-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=I-So1rjtg_8W3YfQynlIN1FllkA8iuWfR6jGy55u-Vo&s=AilRyBeK0XpK41jf3wZ2RDzcDdtv_EUYU4BhditsAAg&e=>
>
>
>>
>> ==============================================================================
>> --- llvm/trunk/examples/Kaleidoscope/Orc/lazy_codegen/toy.cpp (original)
>> +++ llvm/trunk/examples/Kaleidoscope/Orc/lazy_codegen/toy.cpp Fri Jul 24
>> 11:04:22 2015
>> @@ -716,7 +716,7 @@ public:
>>        M(new Module(GenerateUniqueName("jit_module_"),
>>                     Session.getLLVMContext())),
>>        Builder(Session.getLLVMContext()) {
>> -    M->setDataLayout(*Session.getTarget().getDataLayout());
>> +    M->setDataLayout(Session.getTarget().createDataLayout());
>>    }
>>
>>    SessionContext& getSession() { return Session; }
>> @@ -1162,7 +1162,7 @@ public:
>>    typedef LazyEmitLayerT::ModuleSetHandleT ModuleHandleT;
>>
>>    KaleidoscopeJIT(SessionContext &Session)
>> -      : DL(*Session.getTarget().getDataLayout()),
>> +      : DL(Session.getTarget().createDataLayout()),
>>          CompileLayer(ObjectLayer, SimpleCompiler(Session.getTarget())),
>>          LazyEmitLayer(CompileLayer) {}
>>
>> @@ -1204,7 +1204,7 @@ public:
>>    }
>>
>>  private:
>> -  const DataLayout &DL;
>> +  const DataLayout DL;
>>    ObjLayerT ObjectLayer;
>>    CompileLayerT CompileLayer;
>>    LazyEmitLayerT LazyEmitLayer;
>>
>> Modified: llvm/trunk/examples/Kaleidoscope/Orc/lazy_irgen/toy.cpp
>>
> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/examples/Kaleidoscope/Orc/lazy_irgen/toy.cpp?rev=243114&r1=243113&r2=243114&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_examples_Kaleidoscope_Orc_lazy-5Firgen_toy.cpp-3Frev-3D243114-26r1-3D243113-26r2-3D243114-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=I-So1rjtg_8W3YfQynlIN1FllkA8iuWfR6jGy55u-Vo&s=em-MPeybjjH0HQo25CYQxPfNQLKp71GWGZplrvXKtYY&e=>
>
>
>>
>> ==============================================================================
>> --- llvm/trunk/examples/Kaleidoscope/Orc/lazy_irgen/toy.cpp (original)
>> +++ llvm/trunk/examples/Kaleidoscope/Orc/lazy_irgen/toy.cpp Fri Jul 24
>> 11:04:22 2015
>> @@ -716,7 +716,7 @@ public:
>>        M(new Module(GenerateUniqueName("jit_module_"),
>>                     Session.getLLVMContext())),
>>        Builder(Session.getLLVMContext()) {
>> -    M->setDataLayout(*Session.getTarget().getDataLayout());
>> +    M->setDataLayout(Session.getTarget().createDataLayout());
>>    }
>>
>>    SessionContext& getSession() { return Session; }
>> @@ -1170,7 +1170,7 @@ public:
>>      {
>>        raw_string_ostream MangledNameStream(MangledName);
>>        Mangler::getNameWithPrefix(MangledNameStream, Name,
>> -                                 *Session.getTarget().getDataLayout());
>> +                                 Session.getTarget().createDataLayout());
>>      }
>>      return MangledName;
>>    }
>>
>> Modified: llvm/trunk/include/llvm/Target/TargetMachine.h
>>
> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetMachine.h?rev=243114&r1=243113&r2=243114&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_include_llvm_Target_TargetMachine.h-3Frev-3D243114-26r1-3D243113-26r2-3D243114-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=I-So1rjtg_8W3YfQynlIN1FllkA8iuWfR6jGy55u-Vo&s=Tl8ysDzBeWNRf6wdjUBwLdtMWRQbvbsp_SFX2mxg2hg&e=>
>
>
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/Target/TargetMachine.h (original)
>> +++ llvm/trunk/include/llvm/Target/TargetMachine.h Fri Jul 24 11:04:22
>> 2015
>> @@ -76,7 +76,12 @@ protected: // Can only create subclasses
>>    /// The Target that this machine was created for.
>>    const Target &TheTarget;
>>
>> -  /// For ABI type size and alignment.
>> +  /// DataLayout for the target: keep ABI type size and alignment.
>> +  ///
>> +  /// The DataLayout is created based on the string representation
>> provided
>> +  /// during construction. It is kept here only to avoid reparsing the
>> string
>> +  /// but should not really be used during compilation, because it has an
>> +  /// internal cache that is context specific.
>>    const DataLayout DL;
>>
>>    /// Triple string, CPU name, and target feature strings the
>> TargetMachine
>> @@ -125,9 +130,13 @@ public:
>>      return *static_cast<const STC*>(getSubtargetImpl(F));
>>    }
>>
>> -  /// This method returns a pointer to the DataLayout for the target. It
>> should
>> -  /// be unchanging for every subtarget.
>> -  const DataLayout *getDataLayout() const { return &DL; }
>> +  /// Create a DataLayout.
>> +  const DataLayout createDataLayout() const { return DL; }
>> +
>> +  /// Get the pointer size for this target.
>> +  ///
>> +  /// This is the only time the DataLayout in the TargetMachine is used.
>> +  unsigned getPointerSize() const { return DL.getPointerSize(); }
>>
>>    /// \brief Reset the target options based on the function's attributes.
>>    // FIXME: Remove TargetOptions that affect per-function code generation
>>
>> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
>>
> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp?rev=243114&r1=243113&r2=243114&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_CodeGen_AsmPrinter_AsmPrinter.cpp-3Frev-3D243114-26r1-3D243113-26r2-3D243114-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=I-So1rjtg_8W3YfQynlIN1FllkA8iuWfR6jGy55u-Vo&s=9FSHsCt6ZVUY2BWV5JiZEzb8f1e_x434oMTlW3D9vQU&e=>
>
>
>>
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp Fri Jul 24 11:04:22
>> 2015
>> @@ -139,9 +139,9 @@ const DataLayout &AsmPrinter::getDataLay
>>    return MMI->getModule()->getDataLayout();
>>  }
>>
>> -unsigned AsmPrinter::getPointerSize() const {
>> -  return TM.getDataLayout()->getPointerSize();
>> -}
>> +// Do not use the cached DataLayout because some client use it without a
>> Module
>> +// (llmv-dsymutil, llvm-dwarfdump).
>> +unsigned AsmPrinter::getPointerSize() const { return
>> TM.getPointerSize(); }
>>
>>  const MCSubtargetInfo &AsmPrinter::getSubtargetInfo() const {
>>    assert(MF && "getSubtargetInfo requires a valid MachineFunction!");
>>
>> Modified: llvm/trunk/lib/ExecutionEngine/MCJIT/MCJIT.cpp
>>
> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/MCJIT/MCJIT.cpp?rev=243114&r1=243113&r2=243114&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_ExecutionEngine_MCJIT_MCJIT.cpp-3Frev-3D243114-26r1-3D243113-26r2-3D243114-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=I-So1rjtg_8W3YfQynlIN1FllkA8iuWfR6jGy55u-Vo&s=P7VwkqXQEIF8Oi-hgrBq622riqoQ3VBaAkzEZc6JpL0&e=>
>
>
>>
>> ==============================================================================
>> --- llvm/trunk/lib/ExecutionEngine/MCJIT/MCJIT.cpp (original)
>> +++ llvm/trunk/lib/ExecutionEngine/MCJIT/MCJIT.cpp Fri Jul 24 11:04:22
>> 2015
>> @@ -68,7 +68,7 @@ MCJIT::createJIT(std::unique_ptr<Module>
>>  MCJIT::MCJIT(std::unique_ptr<Module> M, std::unique_ptr<TargetMachine>
>> TM,
>>               std::shared_ptr<MCJITMemoryManager> MemMgr,
>>               std::shared_ptr<RuntimeDyld::SymbolResolver> Resolver)
>> -    : ExecutionEngine(*TM->getDataLayout(), std::move(M)),
>> TM(std::move(TM)),
>> +    : ExecutionEngine(TM->createDataLayout(), std::move(M)),
>> TM(std::move(TM)),
>>        Ctx(nullptr), MemMgr(std::move(MemMgr)),
>>        Resolver(*this, std::move(Resolver)), Dyld(*this->MemMgr,
>> this->Resolver),
>>        ObjCache(nullptr) {
>>
>> Modified: llvm/trunk/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h
>>
> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h?rev=243114&r1=243113&r2=243114&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_ExecutionEngine_Orc_OrcMCJITReplacement.h-3Frev-3D243114-26r1-3D243113-26r2-3D243114-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=I-So1rjtg_8W3YfQynlIN1FllkA8iuWfR6jGy55u-Vo&s=Du3dNLZ0uIJR7ixGQvwZaJt0u23-K1brptyjGozf-30&e=>
>
>
>>
>> ==============================================================================
>> --- llvm/trunk/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h (original)
>> +++ llvm/trunk/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h Fri Jul 24
>> 11:04:22 2015
>> @@ -140,7 +140,7 @@ public:
>>        std::shared_ptr<MCJITMemoryManager> MemMgr,
>>        std::shared_ptr<RuntimeDyld::SymbolResolver> ClientResolver,
>>        std::unique_ptr<TargetMachine> TM)
>> -      : ExecutionEngine(*TM->getDataLayout()), TM(std::move(TM)),
>> +      : ExecutionEngine(TM->createDataLayout()), TM(std::move(TM)),
>>          MemMgr(*this, std::move(MemMgr)), Resolver(*this),
>>          ClientResolver(std::move(ClientResolver)),
>> NotifyObjectLoaded(*this),
>>          NotifyFinalized(*this),
>>
>> Modified: llvm/trunk/lib/LTO/LTOCodeGenerator.cpp
>>
> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/LTO/LTOCodeGenerator.cpp?rev=243114&r1=243113&r2=243114&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_LTO_LTOCodeGenerator.cpp-3Frev-3D243114-26r1-3D243113-26r2-3D243114-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=I-So1rjtg_8W3YfQynlIN1FllkA8iuWfR6jGy55u-Vo&s=monqsnHLLnYD0UXVXbwGHVLuULtKGfjAV7Ran6aTOEc&e=>
>
>
>>
>> ==============================================================================
>> --- llvm/trunk/lib/LTO/LTOCodeGenerator.cpp (original)
>> +++ llvm/trunk/lib/LTO/LTOCodeGenerator.cpp Fri Jul 24 11:04:22 2015
>> @@ -521,7 +521,7 @@ bool LTOCodeGenerator::optimize(bool Dis
>>    legacy::PassManager passes;
>>
>>    // Add an appropriate DataLayout instance for this module...
>> -  mergedModule->setDataLayout(*TargetMach->getDataLayout());
>> +  mergedModule->setDataLayout(TargetMach->createDataLayout());
>>
>>    passes.add(
>>
>>  createTargetTransformInfoWrapperPass(TargetMach->getTargetIRAnalysis()));
>>
>> Modified: llvm/trunk/lib/LTO/LTOModule.cpp
>>
> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/LTO/LTOModule.cpp?rev=243114&r1=243113&r2=243114&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_LTO_LTOModule.cpp-3Frev-3D243114-26r1-3D243113-26r2-3D243114-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=I-So1rjtg_8W3YfQynlIN1FllkA8iuWfR6jGy55u-Vo&s=Ng6sa-U0tP4a0owWSk4B-P-kBn1t5xcQy893fgDGYLk&e=>
>
>
>>
>> ==============================================================================
>> --- llvm/trunk/lib/LTO/LTOModule.cpp (original)
>> +++ llvm/trunk/lib/LTO/LTOModule.cpp Fri Jul 24 11:04:22 2015
>> @@ -232,7 +232,7 @@ LTOModule *LTOModule::makeLTOModule(Memo
>>
>>    TargetMachine *target = march->createTargetMachine(TripleStr, CPU,
>> FeatureStr,
>>                                                       options);
>> -  M->setDataLayout(*target->getDataLayout());
>> +  M->setDataLayout(target->createDataLayout());
>>
>>    std::unique_ptr<object::IRObjectFile> IRObj(
>>        new object::IRObjectFile(Buffer, std::move(M)));
>>
>> Modified: llvm/trunk/lib/Target/Sparc/SparcISelLowering.cpp
>>
> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Sparc/SparcISelLowering.cpp?rev=243114&r1=243113&r2=243114&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_Target_Sparc_SparcISelLowering.cpp-3Frev-3D243114-26r1-3D243113-26r2-3D243114-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=I-So1rjtg_8W3YfQynlIN1FllkA8iuWfR6jGy55u-Vo&s=2eDt_HJmGXL4t3y8yy-AryFl-yct_jMC5juzivneCSI&e=>
>
>
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/Sparc/SparcISelLowering.cpp (original)
>> +++ llvm/trunk/lib/Target/Sparc/SparcISelLowering.cpp Fri Jul 24 11:04:22
>> 2015
>> @@ -1370,7 +1370,7 @@ static SPCC::CondCodes FPCondCCodeToFCC(
>>  SparcTargetLowering::SparcTargetLowering(TargetMachine &TM,
>>                                           const SparcSubtarget &STI)
>>      : TargetLowering(TM), Subtarget(&STI) {
>> -  auto &DL = *TM.getDataLayout();
>> +  MVT PtrVT = MVT::getIntegerVT(8 * TM.getPointerSize());
>>
>>    // Set up the register classes.
>>    addRegisterClass(MVT::i32, &SP::IntRegsRegClass);
>> @@ -1396,10 +1396,10 @@ SparcTargetLowering::SparcTargetLowering
>>    setTruncStoreAction(MVT::f128, MVT::f64, Expand);
>>
>>    // Custom legalize GlobalAddress nodes into LO/HI parts.
>> -  setOperationAction(ISD::GlobalAddress, getPointerTy(DL), Custom);
>> -  setOperationAction(ISD::GlobalTLSAddress, getPointerTy(DL), Custom);
>> -  setOperationAction(ISD::ConstantPool, getPointerTy(DL), Custom);
>> -  setOperationAction(ISD::BlockAddress, getPointerTy(DL), Custom);
>> +  setOperationAction(ISD::GlobalAddress, PtrVT, Custom);
>> +  setOperationAction(ISD::GlobalTLSAddress, PtrVT, Custom);
>> +  setOperationAction(ISD::ConstantPool, PtrVT, Custom);
>> +  setOperationAction(ISD::BlockAddress, PtrVT, Custom);
>>
>>    // Sparc doesn't have sext_inreg, replace them with shl/sra
>>    setOperationAction(ISD::SIGN_EXTEND_INREG, MVT::i16, Expand);
>>
>> Modified: llvm/trunk/lib/Target/SystemZ/SystemZISelLowering.cpp
>>
> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/SystemZ/SystemZISelLowering.cpp?rev=243114&r1=243113&r2=243114&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_Target_SystemZ_SystemZISelLowering.cpp-3Frev-3D243114-26r1-3D243113-26r2-3D243114-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=I-So1rjtg_8W3YfQynlIN1FllkA8iuWfR6jGy55u-Vo&s=dEXjEdzkcK6iFueqIJ2jvFB_1b8hILwQkOpGo2mSZjY&e=>
>
>
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/SystemZ/SystemZISelLowering.cpp (original)
>> +++ llvm/trunk/lib/Target/SystemZ/SystemZISelLowering.cpp Fri Jul 24
>> 11:04:22 2015
>> @@ -84,8 +84,7 @@ static MachineOperand earlyUseOperand(Ma
>>  SystemZTargetLowering::SystemZTargetLowering(const TargetMachine &TM,
>>                                               const SystemZSubtarget &STI)
>>      : TargetLowering(TM), Subtarget(STI) {
>> -  auto &DL = *TM.getDataLayout();
>> -  MVT PtrVT = getPointerTy(DL);
>> +  MVT PtrVT = MVT::getIntegerVT(8 * TM.getPointerSize());
>>
>>    // Set up the register classes.
>>    if (Subtarget.hasHighWord())
>>
>> Modified: llvm/trunk/lib/Target/TargetMachineC.cpp
>>
> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/TargetMachineC.cpp?rev=243114&r1=243113&r2=243114&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_Target_TargetMachineC.cpp-3Frev-3D243114-26r1-3D243113-26r2-3D243114-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=I-So1rjtg_8W3YfQynlIN1FllkA8iuWfR6jGy55u-Vo&s=j0SEF06yMeRe2P9mr9xdfHN_5QBpqdZPPUrQ2iP7-jE&e=>
>
>
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/TargetMachineC.cpp (original)
>> +++ llvm/trunk/lib/Target/TargetMachineC.cpp Fri Jul 24 11:04:22 2015
>> @@ -32,15 +32,25 @@
>>
>>  using namespace llvm;
>>
>> +
>> +// The TargetMachine uses to offer access to a DataLayout member. This
>> is reflected
>> +// in the C API. For backward compatibility reason, this structure
>> allows to keep
>> +// a DataLayout member accessible to C client that have a handle to a
>> +// LLVMTargetMachineRef.
>> +struct LLVMOpaqueTargetMachine {
>> +  std::unique_ptr<TargetMachine> Machine;
>> +  DataLayout DL;
>> +};
>> +
>> +
>>  inline TargetMachine *unwrap(LLVMTargetMachineRef P) {
>> -  return reinterpret_cast<TargetMachine*>(P);
>> +  return P->Machine.get();
>>  }
>>  inline Target *unwrap(LLVMTargetRef P) {
>>    return reinterpret_cast<Target*>(P);
>>  }
>>  inline LLVMTargetMachineRef wrap(const TargetMachine *P) {
>> -  return
>> -
>> reinterpret_cast<LLVMTargetMachineRef>(const_cast<TargetMachine*>(P));
>> +  return new LLVMOpaqueTargetMachine{
>> std::unique_ptr<TargetMachine>(const_cast<TargetMachine*>(P)),
>> P->createDataLayout() };
>>  }
>>  inline LLVMTargetRef wrap(const Target * P) {
>>    return reinterpret_cast<LLVMTargetRef>(const_cast<Target*>(P));
>> @@ -147,7 +157,7 @@ LLVMTargetMachineRef LLVMCreateTargetMac
>>
>>
>>  void LLVMDisposeTargetMachine(LLVMTargetMachineRef T) {
>> -  delete unwrap(T);
>> +  delete T;
>>  }
>>
>>  LLVMTargetRef LLVMGetTargetMachineTarget(LLVMTargetMachineRef T) {
>> @@ -170,8 +180,9 @@ char* LLVMGetTargetMachineFeatureString(
>>    return strdup(StringRep.c_str());
>>  }
>>
>> +/// @deprecated: see "struct LLVMOpaqueTargetMachine" description above
>>  LLVMTargetDataRef LLVMGetTargetMachineData(LLVMTargetMachineRef T) {
>> -  return wrap(unwrap(T)->getDataLayout());
>> +  return wrap(&T->DL);
>>  }
>>
>>  void LLVMSetTargetMachineAsmVerbosity(LLVMTargetMachineRef T,
>> @@ -190,14 +201,7 @@ static LLVMBool LLVMTargetMachineEmit(LL
>>
>>    std::string error;
>>
>> -  const DataLayout *td = TM->getDataLayout();
>> -
>> -  if (!td) {
>> -    error = "No DataLayout in TargetMachine";
>> -    *ErrorMessage = strdup(error.c_str());
>> -    return true;
>> -  }
>> -  Mod->setDataLayout(*td);
>> +  Mod->setDataLayout(TM->createDataLayout());
>>
>>    TargetMachine::CodeGenFileType ft;
>>    switch (codegen) {
>>
>> Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
>>
> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=243114&r1=243113&r2=243114&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_Target_X86_X86ISelLowering.cpp-3Frev-3D243114-26r1-3D243113-26r2-3D243114-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=I-So1rjtg_8W3YfQynlIN1FllkA8iuWfR6jGy55u-Vo&s=r57dFgUz-Ydah5m8ZHD_adW-XHlCiO_n3Dz7-sMZUJw&e=>
>
>
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)
>> +++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Fri Jul 24 11:04:22 2015
>> @@ -76,7 +76,7 @@ X86TargetLowering::X86TargetLowering(con
>>      : TargetLowering(TM), Subtarget(&STI) {
>>    X86ScalarSSEf64 = Subtarget->hasSSE2();
>>    X86ScalarSSEf32 = Subtarget->hasSSE1();
>> -  TD = TM.getDataLayout();
>> +  MVT PtrVT = MVT::getIntegerVT(8 * TM.getPointerSize());
>>
>>    // Set up the TargetLowering object.
>>    static const MVT IntVTs[] = { MVT::i8, MVT::i16, MVT::i32, MVT::i64 };
>> @@ -505,7 +505,7 @@ X86TargetLowering::X86TargetLowering(con
>>    setOperationAction(ISD::STACKSAVE,          MVT::Other, Expand);
>>    setOperationAction(ISD::STACKRESTORE,       MVT::Other, Expand);
>>
>> -  setOperationAction(ISD::DYNAMIC_STACKALLOC, getPointerTy(*TD), Custom);
>> +  setOperationAction(ISD::DYNAMIC_STACKALLOC, PtrVT, Custom);
>>
>>    // GC_TRANSITION_START and GC_TRANSITION_END need custom lowering.
>>    setOperationAction(ISD::GC_TRANSITION_START, MVT::Other, Custom);
>> @@ -16515,9 +16515,11 @@ SDValue X86TargetLowering::LowerINIT_TRA
>>
>>          for (FunctionType::param_iterator I = FTy->param_begin(),
>>               E = FTy->param_end(); I != E; ++I, ++Idx)
>> -          if (Attrs.hasAttribute(Idx, Attribute::InReg))
>> +          if (Attrs.hasAttribute(Idx, Attribute::InReg)) {
>> +            auto &DL = DAG.getDataLayout();
>>              // FIXME: should only count parameters that are lowered to
>> integers.
>> -            InRegCount += (TD->getTypeSizeInBits(*I) + 31) / 32;
>> +            InRegCount += (DL.getTypeSizeInBits(*I) + 31) / 32;
>> +          }
>>
>>          if (InRegCount > 2) {
>>            report_fatal_error("Nest register in use - reduce number of
>> inreg"
>>
>> Modified: llvm/trunk/tools/llc/llc.cpp
>>
> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llc/llc.cpp?rev=243114&r1=243113&r2=243114&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_tools_llc_llc.cpp-3Frev-3D243114-26r1-3D243113-26r2-3D243114-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=I-So1rjtg_8W3YfQynlIN1FllkA8iuWfR6jGy55u-Vo&s=v8-InLUCVA86h0Z-g_6MwcS-uKLesZSZ_y_kc2XtRCQ&e=>
>
>
>>
>> ==============================================================================
>> --- llvm/trunk/tools/llc/llc.cpp (original)
>> +++ llvm/trunk/tools/llc/llc.cpp Fri Jul 24 11:04:22 2015
>> @@ -312,8 +312,7 @@ static int compileModule(char **argv, LL
>>    PM.add(new TargetLibraryInfoWrapperPass(TLII));
>>
>>    // Add the target data from the target machine, if it exists, or the
>> module.
>> -  if (const DataLayout *DL = Target->getDataLayout())
>> -    M->setDataLayout(*DL);
>> +  M->setDataLayout(Target->createDataLayout());
>>
>>    // Override function attributes based on CPUStr, FeaturesStr, and
>> command line
>>    // flags.
>>
>> Modified: llvm/trunk/tools/lli/OrcLazyJIT.cpp
>>
> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/lli/OrcLazyJIT.cpp?rev=243114&r1=243113&r2=243114&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_tools_lli_OrcLazyJIT.cpp-3Frev-3D243114-26r1-3D243113-26r2-3D243114-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=I-So1rjtg_8W3YfQynlIN1FllkA8iuWfR6jGy55u-Vo&s=pdMi0btkbqHgecsCC7i8GDNSmcJZC-D9CuZROZn2kv4&e=>
>
>
>>
>> ==============================================================================
>> --- llvm/trunk/tools/lli/OrcLazyJIT.cpp (original)
>> +++ llvm/trunk/tools/lli/OrcLazyJIT.cpp Fri Jul 24 11:04:22 2015
>> @@ -136,7 +136,8 @@ int llvm::runOrcLazyJIT(std::unique_ptr<
>>    }
>>
>>    // Everything looks good. Build the JIT.
>> -  OrcLazyJIT J(std::move(TM), Context, CallbackMgrBuilder);
>> +  auto &DL = M->getDataLayout();
>> +  OrcLazyJIT J(std::move(TM), DL, Context, CallbackMgrBuilder);
>>
>>    // Add the module, look up main and run it.
>>    auto MainHandle = J.addModule(std::move(M));
>>
>> Modified: llvm/trunk/tools/lli/OrcLazyJIT.h
>>
> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/lli/OrcLazyJIT.h?rev=243114&r1=243113&r2=243114&view=diff
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_tools_lli_OrcLazyJIT.h-3Frev-3D243114-26r1-3D243113-26r2-3D243114-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=I-So1rjtg_8W3YfQynlIN1FllkA8iuWfR6jGy55u-Vo&s=ZJNUu3YMTunXp_QZZmyIEq4rSYP-BiOFciVo6ab-b7s&e=>
>
>
>>
>> ==============================================================================
>> --- llvm/trunk/tools/lli/OrcLazyJIT.h (original)
>> +++ llvm/trunk/tools/lli/OrcLazyJIT.h Fri Jul 24 11:04:22 2015
>> @@ -46,16 +46,17 @@ public:
>>      CallbackManagerBuilder;
>>
>>    static CallbackManagerBuilder createCallbackManagerBuilder(Triple T);
>> +  const DataLayout &DL;
>>
>> -  OrcLazyJIT(std::unique_ptr<TargetMachine> TM, LLVMContext &Context,
>> -             CallbackManagerBuilder &BuildCallbackMgr)
>> -    : TM(std::move(TM)),
>> -      ObjectLayer(),
>> -      CompileLayer(ObjectLayer, orc::SimpleCompiler(*this->TM)),
>> -      IRDumpLayer(CompileLayer, createDebugDumper()),
>> -      CCMgr(BuildCallbackMgr(IRDumpLayer, CCMgrMemMgr, Context)),
>> -      CODLayer(IRDumpLayer, *CCMgr, false),
>> -      CXXRuntimeOverrides([this](const std::string &S) { return
>> mangle(S); }) {}
>> +  OrcLazyJIT(std::unique_ptr<TargetMachine> TM, const DataLayout &DL,
>> +             LLVMContext &Context, CallbackManagerBuilder
>> &BuildCallbackMgr)
>> +      : DL(DL), TM(std::move(TM)), ObjectLayer(),
>> +        CompileLayer(ObjectLayer, orc::SimpleCompiler(*this->TM)),
>> +        IRDumpLayer(CompileLayer, createDebugDumper()),
>> +        CCMgr(BuildCallbackMgr(IRDumpLayer, CCMgrMemMgr, Context)),
>> +        CODLayer(IRDumpLayer, *CCMgr, false),
>> +        CXXRuntimeOverrides(
>> +            [this](const std::string &S) { return mangle(S); }) {}
>>
>>    ~OrcLazyJIT() {
>>      // Run any destructors registered with __cxa_atexit.
>> @@ -73,7 +74,7 @@ public:
>>    ModuleHandleT addModule(std::unique_ptr<Module> M) {
>>      // Attach a data-layout if one isn't already present.
>>      if (M->getDataLayout().isDefault())
>> -      M->setDataLayout(*TM->getDataLayout());
>> +      M->setDataLayout(DL);
>>
>>      // Record the static constructors and destructors. We have to do
>> this before
>>      // we hand over ownership of the module to the JIT.
>> @@ -131,12 +132,11 @@ public:
>>    }
>>
>>  private:
>> -
>>    std::string mangle(const std::string &Name) {
>>      std::string MangledName;
>>      {
>>        raw_string_ostream MangledNameStream(MangledName);
>> -      Mangler::getNameWithPrefix(MangledNameStream, Name,
>> *TM->getDataLayout());
>> +      Mangler::getNameWithPrefix(MangledNameStream, Name, DL);
>>      }
>>      return MangledName;
>>    }
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150724/83b8be70/attachment.html>


More information about the llvm-commits mailing list