Skip to content
  1. May 20, 2012
  2. May 15, 2012
  3. Apr 02, 2012
  4. Mar 13, 2012
  5. Mar 05, 2012
  6. Feb 17, 2012
  7. Feb 08, 2012
  8. Feb 06, 2012
  9. Feb 04, 2012
    • Nick Lewycky's avatar
      Fix a leak! · 6024f9b5
      Nick Lewycky authored
      Andy, in a previous commit you made this into an ImmutablePass so that you could
      add it to the PassManager, then in the next commit you left it a Pass but
      removed the code that added it to the PM. If you do add it to the PM then the PM
      should take care of deleting it, but it's also true that nothing in codegen
      needs this object to exist after it's done its work here. It's not clear to me
      which design you want; this should likely either cease to be a Pass or be added
      to the PM where other parts of CodeGen will request it.
      
      llvm-svn: 149765
      6024f9b5
    • Andrew Trick's avatar
      TargetPassConfig: confine the MC configuration to TargetMachine. · f8ea108c
      Andrew Trick authored
      Passes prior to instructon selection are now split into separate configurable stages.
      Header dependencies are simplified.
      The bulk of this diff is simply removal of the silly DisableVerify flags.
      
      Sorry for the target header churn. Attempting to stabilize them.
      
      llvm-svn: 149754
      f8ea108c
    • Andrew Trick's avatar
      Move TargetPassConfig implementation into Passes.cpp · de401d3c
      Andrew Trick authored
      llvm-svn: 149753
      de401d3c
    • Andrew Trick's avatar
      b7551336
  10. Feb 03, 2012
  11. Jan 22, 2012
  12. Jan 13, 2012
  13. Jan 10, 2012
  14. Jan 07, 2012
    • Evan Cheng's avatar
      Added a late machine instruction copy propagation pass. This catches · 00b1a3cd
      Evan Cheng authored
      opportunities that only present themselves after late optimizations
      such as tail duplication .e.g.
      ## BB#1:
              movl    %eax, %ecx
              movl    %ecx, %eax
              ret
      
      The register allocator also leaves some of them around (due to false
      dep between copies from phi-elimination, etc.)
      
      This required some changes in codegen passes. Post-ra scheduler and the
      pseudo-instruction expansion passes have been moved after branch folding
      and tail merging. They were before branch folding before because it did
      not always update block livein's. That's fixed now. The pass change makes
      independently since we want to properly schedule instructions after
      branch folding / tail duplication.
      
      rdar://10428165
      rdar://10640363
      
      llvm-svn: 147716
      00b1a3cd
  15. Dec 02, 2011
    • Nick Lewycky's avatar
      Move global variables in TargetMachine into new TargetOptions class. As an API · 50f02cb2
      Nick Lewycky authored
      change, now you need a TargetOptions object to create a TargetMachine. Clang
      patch to follow.
      
      One small functionality change in PTX. PTX had commented out the machine
      verifier parts in their copy of printAndVerify. That now calls the version in
      LLVMTargetMachine. Users of PTX who need verification disabled should rely on
      not passing the command-line flag to enable it.
      
      llvm-svn: 145714
      50f02cb2
  16. Nov 16, 2011
  17. Nov 02, 2011
    • Chandler Carruth's avatar
      Begin collecting some of the statistics for block placement discussed on · ae4e800c
      Chandler Carruth authored
      the mailing list. Suggestions for other statistics to collect would be
      awesome. =]
      
      Currently these are implemented as a separate pass guarded by a separate
      flag. I'm not thrilled by that, but I wanted to be able to collect the
      statistics for the old code placement as well as the new in order to
      have a point of comparison. I'm planning on folding them into the single
      pass if / when there is only one pass of interest.
      
      llvm-svn: 143537
      ae4e800c
  18. Oct 25, 2011
  19. Oct 21, 2011
    • Chandler Carruth's avatar
      Implement a block placement pass based on the branch probability and · 10281425
      Chandler Carruth authored
      block frequency analyses. This differs substantially from the existing
      block-placement pass in LLVM:
      
      1) It operates on the Machine-IR in the CodeGen layer. This exposes much
         more (and more precise) information and opportunities. Also, the
         results are more stable due to fewer transforms ocurring after the
         pass runs.
      2) It uses the generalized probability and frequency analyses. These can
         model static heuristics, code annotation derived heuristics as well
         as eventual profile loading. By basing the optimization on the
         analysis interface it can work from any (or a combination) of these
         inputs.
      3) It uses a more aggressive algorithm, both building chains from tho
         bottom up to maximize benefit, and using an SCC-based walk to layout
         chains of blocks in a profitable ordering without O(N^2) iterations
         which the old pass involves.
      
      The pass is currently gated behind a flag, and not enabled by default
      because it still needs to grow some important features. Most notably, it
      needs to support loop aligning and careful layout of loop structures
      much as done by hand currently in CodePlacementOpt. Once it supports
      these, and has sufficient testing and quality tuning, it should replace
      both of these passes.
      
      Thanks to Nick Lewycky and Richard Smith for help authoring & debugging
      this, and to Jakob, Andy, Eric, Jim, and probably a few others I'm
      forgetting for reviewing and answering all my questions. Writing
      a backend pass is *sooo* much better now than it used to be. =D
      
      llvm-svn: 142641
      10281425
  20. Oct 18, 2011
    • Nick Lewycky's avatar
      Add support for a new extension to the .file directive: · 40f8f2ff
      Nick Lewycky authored
        .file filenumber "directory" "filename"
      
      This removes one join+split of the directory+filename in MC internals. Because
      bitcode files have independent fields for directory and filenames in debug info,
      this patch may change the .o files written by existing .bc files.
      
      llvm-svn: 142300
      40f8f2ff
  21. Sep 30, 2011
  22. Sep 28, 2011
    • Bill Wendling's avatar
      Don't conditionalize execution of the SjLj EH prepare pass. · e6138e3a
      Bill Wendling authored
      We may need an SjLj EH preparation pass for some call site information, at least
      in the short term.
      
      llvm-svn: 140674
      e6138e3a
    • Bill Wendling's avatar
      This is the start of the new SjLj EH preparation pass, which will replace the · 354ff9e3
      Bill Wendling authored
      current IR-level pass.
      
      The old SjLj EH pass has some problems, especially with the new EH model. Most
      significantly, it violates some of the new restrictions the new model has. For
      instance, the 'dispatch' table wants to jump to the landing pad, but we cannot
      allow that because only an invoke's unwind edge can jump to a landing pad. This
      requires us to mangle the code something awful. In addition, we need to keep the
      now dead landingpad instructions around instead of CSE'ing them because the
      DWARF emitter uses that information (they are dead because no control flow edge
      will execute them - the control flow edge from an invoke's unwind is superceded
      by the edge coming from the dispatch).
      
      Basically, this pass belongs not at the IR level where SSA is king, but at the
      code-gen level, where we have more flexibility.
      
      llvm-svn: 140646
      354ff9e3
  23. Sep 25, 2011
  24. Sep 07, 2011
  25. Aug 24, 2011
  26. Aug 19, 2011
  27. Jul 26, 2011
  28. Jul 20, 2011
Loading