Skip to content
  1. Jan 14, 2016
  2. Jan 12, 2016
  3. Jan 11, 2016
  4. Jan 09, 2016
  5. 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
  6. Dec 06, 2015
  7. Dec 04, 2015
  8. Nov 04, 2015
  9. Nov 03, 2015
  10. 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
  11. Oct 07, 2015
  12. Jul 30, 2015
  13. 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
  14. Jul 15, 2015
  15. Jun 23, 2015
  16. Jun 16, 2015
  17. Jun 13, 2015
  18. Jun 12, 2015
  19. Jun 11, 2015
  20. Jun 09, 2015
  21. Jun 03, 2015
  22. 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
  23. 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
  24. May 05, 2015
  25. May 01, 2015
  26. Apr 19, 2015
Loading