Skip to content
  1. Sep 11, 2016
  2. Sep 04, 2016
  3. Aug 29, 2016
    • Lang Hames's avatar
      [Orc] Simplify LogicalDylib and move it back inside CompileOnDemandLayer. Also · 6b21751b
      Lang Hames authored
      switch to using one indirect stub manager per logical dylib rather than one per
      input module.
      
      LogicalDylib is a helper class used by the CompileOnDemandLayer to manage
      symbol resolution between modules during lazy compilation. In particular, it
      ensures that internal symbols resolve correctly even in the case where multiple
      input modules contain the same internal symbol name (which must to be promoted
      to external hidden linkage so that functions in any given module can be split
      out by lazy compilation). LogicalDylib's resolution scheme (before this commit)
      required one stub-manager per input module. This made recompilation of functions
      (by adding a module containing a new definition) difficult, as the stub manager
      for any given symbol was bound to the module that supplied the original
      definition. By using one stubs manager for the whole logical dylib symbols can
      be more easily replaced, although support for doing this is not included in this
      patch (it will be implemented in a follow up).
      
      llvm-svn: 279952
      6b21751b
  4. Aug 07, 2016
  5. Aug 06, 2016
    • Nico Weber's avatar
      Revert r277896. · c893e603
      Nico Weber authored
      It breaks ExecutionEngine/OrcLazy/weak-function.ll on most bots.
      
      Script:
      --
      ...
      --
      Exit Code: 1
      
      Command Output (stderr):
      --
      Could not find main function.
      
      llvm-svn: 277907
      c893e603
    • Lang Hames's avatar
      [ORC] Add (partial) weak symbol support to the CompileOnDemand layer. · 62a45960
      Lang Hames authored
      This adds partial support for weak functions to the CompileOnDemandLayer by
      modifying the addLogicalModule method to check for existing stub definitions
      before building a new stub for a weak function. This scheme is sufficient to
      support ODR definitions, but fails for general weak definitions if strong
      definition is encountered after the first weak definition. (A more extensive
      refactor will be required to fully support weak symbols).
      
      This patch does *not* add weak symbol support to RuntimeDyld: I hope to add
      that in the near future.
      
      llvm-svn: 277896
      62a45960
  6. Aug 02, 2016
  7. Aug 01, 2016
    • Lang Hames's avatar
      [ExecutionEngine][MCJIT][Orc] Replace RuntimeDyld::SymbolInfo with JITSymbol. · ad4a911f
      Lang Hames authored
      This patch replaces RuntimeDyld::SymbolInfo with JITSymbol: A symbol class
      that is capable of lazy materialization (i.e. the symbol definition needn't be
      emitted until the address is requested). This can be used to support common
      and weak symbols in the JIT (though this is not implemented in this patch).
      
      For consistency, RuntimeDyld::SymbolResolver is renamed to JITSymbolResolver.
      
      For space efficiency a new class, JITEvaluatedSymbol, is introduced that
      behaves like the old RuntimeDyld::SymbolInfo - i.e. it is just a pair of an
      address and symbol flags. Instances of JITEvaluatedSymbol can be used in
      symbol-tables to avoid paying the space cost of the materializer.
      
      llvm-svn: 277386
      ad4a911f
  8. Jul 10, 2016
    • Michael Gottesman's avatar
      [cmake] Change lli-child-target to use add_llvm_utility instead of add_llvm_executable. · daaf9f13
      Michael Gottesman authored
      We are currently using add_llvm_utility for executable targets that:
      
      1. Are built by default.
      2. Used for testing.
      3. Are not installed by default.
      
      Originally, lli-child-target used add_llvm_tool instead of add_llvm_executable
      directly. This was changed so that lli-child-target would not be installed. This
      was good since this is only used for testing and should never be installed for
      users. This also had the unfortunate side effect that one can never turn off the
      building of lli-child-target by default, a regression for projects that by
      default do not want to compile any LLVM tools beyond tablegen/llvm-config.
      
      This patch changes lli-child-target to use add_llvm_utility. This makes sense
      since:
      
      1. lli-child-target matches the semantics of executables created with
      add_llvm_utility.
      2. We fix the regression since now one can use the flag LLVM_BUILD_UTILS to
      eliminate default compilation.
      
      llvm-svn: 275008
      daaf9f13
  9. Jun 29, 2016
  10. Jun 09, 2016
  11. Jun 08, 2016
  12. Jun 01, 2016
    • Lang Hames's avatar
      [Orc] Add conversion to/from RuntimeDyld::SymbolInfo for JITSymbol. · 65653207
      Lang Hames authored
      This tidies up some code that was manually constructing RuntimeDyld::SymbolInfo
      instances from JITSymbols. It will save more mess in the future when
      JITSymbol::getAddress is extended to return an Expected<TargetAddress> rather
      than just a TargetAddress, since we'll be able to embed the error checking in
      the conversion.
      
      llvm-svn: 271350
      65653207
  13. May 26, 2016
  14. May 25, 2016
    • Lang Hames's avatar
      [RuntimeDyld] Call the SymbolResolver::findSymbolInLogicalDylib method when · bf9d1aa9
      Lang Hames authored
      searching for external symbols, and fall back to the SymbolResolver::findSymbol
      method if the former returns null.
      
      This makes RuntimeDyld behave more like a static linker: Symbol definitions
      from within the current module's "logical dylib" will be preferred to
      external definitions. We can build on this behavior in the future to properly
      support weak symbol handling.
      
      Custom symbol resolvers that override the findSymbolInLogicalDylib method may
      notice changes due to this patch. Clients who have not overridden this method
      should generally be unaffected, however users of the OrcMCJITReplacement class
      may notice changes.
      
      llvm-svn: 270716
      bf9d1aa9
  15. May 19, 2016
    • Rafael Espindola's avatar
      Delete Reloc::Default. · 8c34dd82
      Rafael Espindola authored
      Having an enum member named Default is quite confusing: Is it distinct
      from the others?
      
      This patch removes that member and instead uses Optional<Reloc> in
      places where we have a user input that still hasn't been maped to the
      default value, which is now clear has no be one of the remaining 3
      options.
      
      llvm-svn: 269988
      8c34dd82
  16. May 07, 2016
  17. Apr 26, 2016
  18. Apr 25, 2016
    • Lang Hames's avatar
      [ORC] Thread Error/Expected through the RPC library. · ef5a0ee2
      Lang Hames authored
      This replaces use of std::error_code and ErrorOr in the ORC RPC support library
      with Error and Expected. This required updating the OrcRemoteTarget API, Client,
      and server code, as well as updating the Orc C API.
      
      This patch also fixes several instances where Errors were dropped.
      
      llvm-svn: 267457
      ef5a0ee2
  19. Apr 18, 2016
    • Lang Hames's avatar
      [Orc] Re-commit r266581 with fixes for MSVC, and format cleanups. · 3fde652e
      Lang Hames authored
      Fixes:
      
      (1) Removes constexpr (unsupported in MSVC)
      (2) Move constructors (remove explicitly defaulted ones)
      (3) <future> - Add warning suppression for MSVC.
      
      llvm-svn: 266663
      3fde652e
    • Mehdi Amini's avatar
      lli: avoid global variables, use a local unique_ptr instead · a7de820a
      Mehdi Amini authored
      There was issue with order of destruction in some cases.
      
      From: Mehdi Amini <mehdi.amini@apple.com>
      llvm-svn: 266652
      a7de820a
    • Nico Weber's avatar
      Revert 266581 (and follow-up 266588), it doesn't build on Windows. · ca94d0ec
      Nico Weber authored
      Three problems:
      1. <future> can't be easily used.  If you must use it, see
         include/Support/ThreadPool.h for how.
      2. constexpr problems, even after 266588.
      3. Move assignment operators can't be defaulted in MSVC2013.
      
      llvm-svn: 266615
      ca94d0ec
    • Lang Hames's avatar
      [ORC] Generalize the ORC RPC utils to support RPC function return values and · 236cea74
      Lang Hames authored
      asynchronous call/handle. Also updates the ORC remote JIT API to use the new
      scheme.
      
      The previous version of the RPC tools only supported void functions, and
      required the user to manually call a paired function to return results. This
      patch replaces the Procedure typedef (which only supported void functions) with
      the Function typedef which supports return values, e.g.:
      
        Function<FooId, int32_t(std::string)> Foo;
      
      The RPC primitives and channel operations are also expanded. RPC channels must
      support four new operations: startSendMessage, endSendMessage,
      startRecieveMessage and endRecieveMessage, to handle channel locking. In
      addition, serialization support for tuples to RPCChannels is added to enable
      multiple return values.
      
      The RPC primitives are expanded from callAppend, call, expect and handle, to:
      
      appendCallAsync - Make an asynchronous call to the given function.
      
      callAsync - The same as appendCallAsync, but calls send on the channel when
                  done.
      
      callSTHandling - Blocking call for single-threaded code. Wraps a call to
                       callAsync then waits on the result, using a user-supplied
                       handler to handle any callbacks from the remote.
      
      callST - The same as callSTHandling, except that it doesn't handle
               callbacks - it expects the result to be the first return.
      
      expect and handle - as before.
      
      handleResponse - Handle a response from the remote.
      
      waitForResult - Wait for the response with the given sequence number to arrive.
      
      llvm-svn: 266581
      236cea74
  20. Apr 15, 2016
  21. Apr 14, 2016
  22. Apr 07, 2016
    • Kevin Enderby's avatar
      Thread Expected<...> up from createMachOObjectFile() to allow llvm-objdump to... · 3fcdf6ae
      Kevin Enderby authored
      Thread Expected<...> up from createMachOObjectFile() to allow llvm-objdump to produce a real error message
      
      Produce the first specific error message for a malformed Mach-O file describing
      the problem instead of the generic message for object_error::parse_failed of
      "Invalid data was encountered while parsing the file”.  Many more good error
      messages will follow after this first one.
      
      This is built on Lang Hames’ great work of adding the ’Error' class for
      structured error handling and threading Error through MachOObjectFile
      construction.  And making createMachOObjectFile return Expected<...> .
      
      So to to get the error to the llvm-obdump tool, I changed the stack of
      these methods to also return Expected<...> :
      
        object::ObjectFile::createObjectFile()
        object::SymbolicFile::createSymbolicFile()
        object::createBinary()
      
      Then finally in ParseInputMachO() in MachODump.cpp the error can
      be reported and the specific error message can be printed in llvm-objdump
      and can be seen in the existing test case for the existing malformed binary
      but with the updated error message.
      
      Converting these interfaces to Expected<> from ErrorOr<> does involve
      touching a number of places. To contain the changes for now use of
      errorToErrorCode() and errorOrToExpected() are used where the callers
      are yet to be converted.
      
      Also there some were bugs in the existing code that did not deal with the
      old ErrorOr<> return values.  So now with Expected<> since they must be
      checked and the error handled, I added a TODO and a comment:
      “// TODO: Actually report errors helpfully” and a call something like
      consumeError(ObjOrErr.takeError()) so the buggy code will not crash
      since needed to deal with the Error.
      
      Note there is one fix also needed to lld/COFF/InputFiles.cpp that goes along
      with this that I will commit right after this.  So expect lld not to built
      after this commit and before the next one.
      
      llvm-svn: 265606
      3fcdf6ae
  23. Feb 10, 2016
    • Lang Hames's avatar
      [Orc] Add lazy-JITting support for i386. · 4f8194e8
      Lang Hames authored
      This patch adds a new class, OrcI386, which contains the hooks needed to
      support lazy-JITing on i386 (currently only for Pentium 2 or above, as the JIT
      re-entry code uses the FXSAVE/FXRSTOR instructions).
      
      Support for i386 is enabled in the LLI lazy JIT and the Orc C API, and
      regression and unit tests are enabled for this architecture.
      
      llvm-svn: 260338
      4f8194e8
  24. Jan 26, 2016
    • Chris Bieneman's avatar
      Remove autoconf support · e49730d4
      Chris Bieneman authored
      Summary:
      This patch is provided in preparation for removing autoconf on 1/26. The proposal to remove autoconf on 1/26 was discussed on the llvm-dev thread here: http://lists.llvm.org/pipermail/llvm-dev/2016-January/093875.html
      
      "I felt a great disturbance in the [build system], as if millions of [makefiles] suddenly cried out in terror and were suddenly silenced. I fear something [amazing] has happened."
      - Obi Wan Kenobi
      
      Reviewers: chandlerc, grosbach, bob.wilson, tstellarAMD, echristo, whitequark
      
      Subscribers: chfast, simoncook, emaste, jholewinski, tberghammer, jfb, danalbert, srhines, arsenm, dschuff, jyknight, dsanders, joker.eph, llvm-commits
      
      Differential Revision: http://reviews.llvm.org/D16471
      
      llvm-svn: 258861
      e49730d4
  25. Jan 17, 2016
  26. Jan 15, 2016
  27. Jan 14, 2016
  28. Jan 12, 2016
  29. Jan 11, 2016
Loading