Skip to content
  1. 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
  2. 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
  3. Jan 17, 2016
  4. Jan 15, 2016
  5. Jan 14, 2016
  6. Jan 12, 2016
  7. Jan 11, 2016
  8. Jan 09, 2016
  9. Dec 18, 2015
    • Rafael Espindola's avatar
      Drop materializeAllPermanently. · c4a03483
      Rafael Espindola authored
      This inlines materializeAll into the only caller
      (materializeAllPermanently) and renames materializeAllPermanently to
      just materializeAll.
      
      llvm-svn: 256024
      c4a03483
  10. Dec 06, 2015
  11. Dec 04, 2015
  12. Nov 04, 2015
  13. Nov 03, 2015
  14. Oct 19, 2015
    • Lang Hames's avatar
      [Orc] Add support for emitting indirect stubs directly into the JIT target's · 98c2ac13
      Lang Hames authored
      memory, rather than representing the stubs in IR. Update the CompileOnDemand
      layer to use this functionality.
      
      Directly emitting stubs is much cheaper than building them in IR and codegen'ing
      them (see below). It also plays well with remote JITing - stubs can be emitted
      directly in the target process, rather than having to send them over the wire.
      
      The downsides are:
      
      (1) Care must be taken when resolving symbols, as stub symbols are held in a
          separate symbol table. This is only a problem for layer writers and other
          people using this API directly. The CompileOnDemand layer hides this detail.
      
      (2) Aliases of function stubs can't be symbolic any more (since there's no
          symbol definition in IR), but must be converted into a constant pointer
          expression. This means that modules containing aliases of stubs cannot be
          cached. In practice this is unlikely to be a problem: There's no benefit to
          caching such a module anyway.
      
      On balance I think the extra performance is more than worth the trade-offs: In a
      simple stress test with 10000 dummy functions requiring stubs and a single
      executed "hello world" main function, directly emitting stubs reduced user time
      for JITing / executing by over 90% (1.5s for IR stubs vs 0.1s for direct
      emission).
      
      llvm-svn: 250712
      98c2ac13
  15. Oct 07, 2015
  16. Jul 30, 2015
  17. Jul 24, 2015
    • Mehdi Amini's avatar
      Remove access to the DataLayout in the TargetMachine · 26d48131
      Mehdi Amini authored
      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
      
      (cherry picked from commit 5609fc56bca971e5a7efeaa6ca4676638eaec5ea)
      
      From: Mehdi Amini <mehdi.amini@apple.com>
      llvm-svn: 243114
      26d48131
    • Mehdi Amini's avatar
      Revert "Remove access to the DataLayout in the TargetMachine" · 5d8e5699
      Mehdi Amini authored
      This reverts commit 0f720d984f419c747709462f7476dff962c0bc41.
      
      It breaks clang too badly, I need to prepare a proper patch for clang
      first.
      
      From: Mehdi Amini <mehdi.amini@apple.com>
      llvm-svn: 243089
      5d8e5699
    • Mehdi Amini's avatar
      Remove access to the DataLayout in the TargetMachine · b4bc424c
      Mehdi Amini authored
      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
      
      (cherry picked from commit 5609fc56bca971e5a7efeaa6ca4676638eaec5ea)
      
      From: Mehdi Amini <mehdi.amini@apple.com>
      llvm-svn: 243083
      b4bc424c
  18. Jul 15, 2015
  19. Jun 23, 2015
  20. Jun 16, 2015
  21. Jun 13, 2015
  22. Jun 12, 2015
  23. Jun 11, 2015
  24. Jun 09, 2015
  25. Jun 03, 2015
  26. May 29, 2015
    • Benjamin Kramer's avatar
      Replace push_back(Constructor(foo)) with emplace_back(foo) for non-trivial types · f5e2fc47
      Benjamin Kramer authored
      If the type isn't trivially moveable emplace can skip a potentially
      expensive move. It also saves a couple of characters.
      
      
      Call sites were found with the ASTMatcher + some semi-automated cleanup.
      
      memberCallExpr(
          argumentCountIs(1), callee(methodDecl(hasName("push_back"))),
          on(hasType(recordDecl(has(namedDecl(hasName("emplace_back")))))),
          hasArgument(0, bindTemporaryExpr(
                             hasType(recordDecl(hasNonTrivialDestructor())),
                             has(constructExpr()))),
          unless(isInTemplateInstantiation()))
      
      No functional change intended.
      
      llvm-svn: 238602
      f5e2fc47
  27. May 12, 2015
    • Eric Christopher's avatar
      Migrate existing backends that care about software floating point · 824f42f2
      Eric Christopher authored
      to use the information in the module rather than TargetOptions.
      
      We've had and clang has used the use-soft-float attribute for some
      time now so have the backends set a subtarget feature based on
      a particular function now that subtargets are created based on
      functions and function attributes.
      
      For the one middle end soft float check go ahead and create
      an overloadable TargetLowering::useSoftFloat function that
      just checks the TargetSubtargetInfo in all cases.
      
      Also remove the command line option that hard codes whether or
      not soft-float is set by using the attribute for all of the
      target specific test cases - for the generic just go ahead and
      add the attribute in the one case that showed up.
      
      llvm-svn: 237079
      824f42f2
  28. May 05, 2015
Loading