Skip to content
  1. Dec 13, 2012
  2. Dec 11, 2012
  3. Dec 03, 2012
    • Chandler Carruth's avatar
      Use the new script to sort the includes of every file under lib. · ed0881b2
      Chandler Carruth authored
      Sooooo many of these had incorrect or strange main module includes.
      I have manually inspected all of these, and fixed the main module
      include to be the nearest plausible thing I could find. If you own or
      care about any of these source files, I encourage you to take some time
      and check that these edits were sensible. I can't have broken anything
      (I strictly added headers, and reordered them, never removed), but they
      may not be the headers you'd really like to identify as containing the
      API being implemented.
      
      Many forward declarations and missing includes were added to a header
      files to allow them to parse cleanly when included first. The main
      module rule does in fact have its merits. =]
      
      llvm-svn: 169131
      ed0881b2
  4. Aug 22, 2012
  5. Jun 02, 2012
    • Jakob Stoklund Olesen's avatar
      Switch all register list clients to the new MC*Iterator interface. · 54038d79
      Jakob Stoklund Olesen authored
      No functional change intended.
      
      Sorry for the churn. The iterator classes are supposed to help avoid
      giant commits like this one in the future. The TableGen-produced
      register lists are getting quite large, and it may be necessary to
      change the table representation.
      
      This makes it possible to do so without changing all clients (again).
      
      llvm-svn: 157854
      54038d79
  6. May 08, 2012
    • Jakob Stoklund Olesen's avatar
      Add an MF argument to TRI::getPointerRegClass() and TII::getRegClass(). · 3c52f028
      Jakob Stoklund Olesen authored
      The getPointerRegClass() hook can return register classes that depend on
      the calling convention of the current function (ptr_rc_tailcall).
      
      So far, we have been able to infer the calling convention from the
      subtarget alone, but as we add support for multiple calling conventions
      per target, that no longer works.
      
      Patch by Yiannis Tsiouris!
      
      llvm-svn: 156328
      3c52f028
  7. Apr 11, 2012
    • Jakob Stoklund Olesen's avatar
      Tweak MachineLICM heuristics for cheap instructions. · 645bdd4b
      Jakob Stoklund Olesen authored
      Allow cheap instructions to be hoisted if they are register pressure
      neutral or better. This happens if the instruction is the last loop use
      of another virtual register.
      
      Only expensive instructions are allowed to increase loop register
      pressure.
      
      llvm-svn: 154455
      645bdd4b
    • Jakob Stoklund Olesen's avatar
      Only check for PHI uses inside the current loop. · a3e86a60
      Jakob Stoklund Olesen authored
      Hoisting a value that is used by a PHI in the loop will introduce a
      copy because the live range is extended to cross the PHI.
      
      The same applies to PHIs in exit blocks.
      
      Also use this opportunity to make HasLoopPHIUse() non-recursive.
      
      llvm-svn: 154454
      a3e86a60
  8. Mar 27, 2012
  9. Mar 04, 2012
  10. Feb 28, 2012
  11. Feb 17, 2012
  12. Feb 11, 2012
  13. Feb 08, 2012
  14. Feb 03, 2012
  15. Jan 23, 2012
  16. Jan 20, 2012
  17. Jan 16, 2012
  18. Jan 10, 2012
  19. Dec 22, 2011
  20. Dec 07, 2011
    • Evan Cheng's avatar
      Add bundle aware API for querying instruction properties and switch the code · 7f8e563a
      Evan Cheng authored
      generator to it. For non-bundle instructions, these behave exactly the same
      as the MC layer API.
      
      For properties like mayLoad / mayStore, look into the bundle and if any of the
      bundled instructions has the property it would return true.
      For properties like isPredicable, only return true if *all* of the bundled
      instructions have the property.
      For properties like canFoldAsLoad, isCompare, conservatively return false for
      bundles.
      
      llvm-svn: 146026
      7f8e563a
  21. Dec 06, 2011
    • Evan Cheng's avatar
      First chunk of MachineInstr bundle support. · 2a81dd4a
      Evan Cheng authored
      1. Added opcode BUNDLE
      2. Taught MachineInstr class to deal with bundled MIs
      3. Changed MachineBasicBlock iterator to skip over bundled MIs; added an iterator to walk all the MIs
      4. Taught MachineBasicBlock methods about bundled MIs
      
      llvm-svn: 145975
      2a81dd4a
  22. Nov 16, 2011
  23. Oct 26, 2011
  24. Oct 20, 2011
  25. Oct 17, 2011
  26. Oct 13, 2011
  27. Oct 12, 2011
    • Evan Cheng's avatar
      Disable machine LICM speculation check (for profitability) until I have time... · b35afcaa
      Evan Cheng authored
      Disable machine LICM speculation check (for profitability) until I have time to investigate the regressions.
      
      llvm-svn: 141813
      b35afcaa
    • Bill Wendling's avatar
      Expand the check for a landing pad so that it looks at the basic block's · 918cea2c
      Bill Wendling authored
      containing loop's header to see if that's a landing pad. If it is, then we don't
      want to hoist instructions out of the loop and above the header.
      
      llvm-svn: 141767
      918cea2c
    • Evan Cheng's avatar
      Fix r141744. · af138954
      Evan Cheng authored
      1. The speculation check may not have been performed if the BB hasn't had a load
         LICM candidate.
      2. If the candidate would be CSE'ed, then go ahead and speculatively LICM the
         instruction even if it's in high register pressure situation.
      
      llvm-svn: 141747
      af138954
    • Evan Cheng's avatar
      Refine r141689 with a tri-state variable. · f192ca07
      Evan Cheng authored
      Also teach MachineLICM to avoid "speculation" when register pressure is high.
      
      llvm-svn: 141744
      f192ca07
    • Bill Wendling's avatar
      N.B. This is with the new EH scheme: · 579ff6c3
      Bill Wendling authored
      The blocks with invokes have branches to the dispatch block, because that more
      correctly models the behavior of the CFG. The dispatch of course has edges to
      the landing pads. Those landing pads could contain invokes, which then have
      branches back to the dispatch. This creates a loop. The machine LICM pass looks
      at this loop and thinks it can hoist elements out of it. But because the
      dispatch is an alternate entry point into the program, the hoisted instructions
      won't be executed.
      
      I wasn't able to get a testcase which was small and could reproduce all of the
      time. The function_try_block.cpp in llvm-test was where this showed up.
      
      llvm-svn: 141726
      579ff6c3
Loading