compnerd created this revision.
compnerd added reviewers: aprantl, JDevlieghere, labath, clayborg, xiaobai, 
davide.
Herald added a project: LLDB.

The Windows CG model cannot generate code with the PIC relocation model as all 
code is implicitly PIC.  Invert the condition and inline the single use.  This 
improves expression handling on Windows.


Repository:
  rLLDB LLDB

https://reviews.llvm.org/D62273

Files:
  source/Expression/IRExecutionUnit.cpp


Index: source/Expression/IRExecutionUnit.cpp
===================================================================
--- source/Expression/IRExecutionUnit.cpp
+++ source/Expression/IRExecutionUnit.cpp
@@ -258,23 +258,17 @@
     log->Printf("Module being sent to JIT: \n%s", s.c_str());
   }

-  llvm::Triple triple(m_module->getTargetTriple());
-  llvm::Reloc::Model relocModel;
-
-  if (triple.isOSBinFormatELF()) {
-    relocModel = llvm::Reloc::Static;
-  } else {
-    relocModel = llvm::Reloc::PIC_;
-  }
-
   m_module_up->getContext().setInlineAsmDiagnosticHandler(ReportInlineAsmError,
                                                           &error);

   llvm::EngineBuilder builder(std::move(m_module_up));
+  llvm::Triple triple(m_module->getTargetTriple());

   builder.setEngineKind(llvm::EngineKind::JIT)
       .setErrorStr(&error_string)
-      .setRelocationModel(relocModel)
+      .setRelocationModel(triple.isOSBinFormatMacho()
+                              ? llvm::Reloc::PIC_
+                              : llvm::Reloc::Static)
       .setMCJITMemoryManager(
           std::unique_ptr<MemoryManager>(new MemoryManager(*this)))
       .setOptLevel(llvm::CodeGenOpt::Less);


Index: source/Expression/IRExecutionUnit.cpp
===================================================================
--- source/Expression/IRExecutionUnit.cpp
+++ source/Expression/IRExecutionUnit.cpp
@@ -258,23 +258,17 @@
     log->Printf("Module being sent to JIT: \n%s", s.c_str());
   }

-  llvm::Triple triple(m_module->getTargetTriple());
-  llvm::Reloc::Model relocModel;
-
-  if (triple.isOSBinFormatELF()) {
-    relocModel = llvm::Reloc::Static;
-  } else {
-    relocModel = llvm::Reloc::PIC_;
-  }
-
   m_module_up->getContext().setInlineAsmDiagnosticHandler(ReportInlineAsmError,
                                                           &error);

   llvm::EngineBuilder builder(std::move(m_module_up));
+  llvm::Triple triple(m_module->getTargetTriple());

   builder.setEngineKind(llvm::EngineKind::JIT)
       .setErrorStr(&error_string)
-      .setRelocationModel(relocModel)
+      .setRelocationModel(triple.isOSBinFormatMacho()
+                              ? llvm::Reloc::PIC_
+                              : llvm::Reloc::Static)
       .setMCJITMemoryManager(
           std::unique_ptr<MemoryManager>(new MemoryManager(*this)))
       .setOptLevel(llvm::CodeGenOpt::Less);
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
  • [Lldb-commits] [PATCH]... Saleem Abdulrasool via Phabricator via lldb-commits

Reply via email to