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