1. 13 Jul, 2016 1 commit
  2. 12 Jul, 2016 3 commits
  3. 10 Jul, 2016 1 commit
    • Subzero: Allow deeper levels of variable splitting. · fe62f0a2
      Jim Stichnoth authored
      This fixes some existing problems with the Variable::LinkedTo splitting/linking mechanism.  The problem was that if B is linked to A, and B needs a stack slot, but A doesn't get a stack slot, B's stack offset would never get initialized.  This could happen if A ends up with no explicit references in the code, or A's live range gets truncated such that it actually has a register while B doesn't.
      
      It gets even more complicated if you have a link chain like A<--B<--C<--D etc. where some of them have stack slots (which should ultimately all be the same slot) and some don't.
      
      The solution here is that if B is linked to the root A, and B has a stack slot but A doesn't, we can do a tree rotation so that B is the new root and A links to B.
      
      In addition, we initialize Variable::StackOffset to an invalid value and always make sure a value used is valid.  Earlier attempts at extending the variable splitting would sometimes silently fail because the default StackOffset value of 0 ended up being used.
      
      BUG= none
      R=jpp@chromium.org
      
      Review URL: https://codereview.chromium.org/2116213002 .
  4. 07 Jul, 2016 2 commits
  5. 06 Jul, 2016 3 commits
  6. 30 Jun, 2016 1 commit
  7. 29 Jun, 2016 3 commits
  8. 27 Jun, 2016 6 commits
  9. 25 Jun, 2016 4 commits
  10. 22 Jun, 2016 4 commits
  11. 21 Jun, 2016 3 commits
  12. 20 Jun, 2016 2 commits
    • Subzero: Fix frame size for floating-point register out-args. · c577727f
      Jim Stichnoth authored
      The code that calculates maximum out-arg stack space was neglecting the fact that on x86-64, the first N scalar floating-point arguments are passed through xmm registers, not the stack.  As a result, stack frames were sometimes larger than necessary.
      
      BUG= none
      R=jpp@chromium.org
      
      Review URL: https://codereview.chromium.org/2076663006 .
    • Subzero: Improve lowering of rematerializable call args. · e450656d
      Jim Stichnoth authored
      Normally, if a call argument is a rematerializable Variable, it is rematerialized into a GPR (via the "lea" instruction) and then written into the appropriate arg space.
      
      This is appropriate for arguments passed on the stack, but for register arguments, it forces an unnecessary copy through another register.
      
      This CL allows that intermediate register copy to be removed.
      
      The resulting code looks cleaner, but it is unlikely to have much effect on performance - there really aren't register pressure issues because lots of scratch registers are available right before the call (which kills all scratch registers).
      
      BUG= none
      R=jpp@chromium.org
      
      Review URL: https://codereview.chromium.org/2080443002 .
  13. 17 Jun, 2016 1 commit
  14. 16 Jun, 2016 3 commits
  15. 15 Jun, 2016 3 commits