Skip to content
  1. Jun 15, 2009
    • Evan Cheng's avatar
      ifcvt should ignore cfg where true and false successors are the same. · b9bff588
      Evan Cheng authored
      llvm-svn: 73423
      b9bff588
    • Arnold Schwaighofer's avatar
      CheckTailCallReturnConstraints is missing a check on the · cb9046cf
      Arnold Schwaighofer authored
      incomming chain of the RETURN node. The incomming chain must
      be the outgoing chain of the CALL node. This causes the
      backend to identify tail calls that are not tail calls. This
      patch fixes this.
      
      llvm-svn: 73387
      cb9046cf
    • Evan Cheng's avatar
      Part 1. · 1283c6a0
      Evan Cheng authored
      - Change register allocation hint to a pair of unsigned integers. The hint type is zero (which means prefer the register specified as second part of the pair) or entirely target dependent.
      - Allow targets to specify alternative register allocation orders based on allocation hint.
      
      Part 2.
      - Use the register allocation hint system to implement more aggressive load / store multiple formation.
      - Aggressively form LDRD / STRD. These are formed *before* register allocation. It has to be done this way to shorten live interval of base and offset registers. e.g.
      v1025 = LDR v1024, 0
      v1026 = LDR v1024, 0
      =>
      v1025,v1026 = LDRD v1024, 0
      
      If this transformation isn't done before allocation, v1024 will overlap v1025 which means it more difficult to allocate a register pair.
      
      - Even with the register allocation hint, it may not be possible to get the desired allocation. In that case, the post-allocation load / store multiple pass must fix the ldrd / strd instructions. They can either become ldm / stm instructions or back to a pair of ldr / str instructions.
      
      This is work in progress, not yet enabled.
      
      llvm-svn: 73381
      1283c6a0
    • Dan Gohman's avatar
      Fix old-style type names in comments. · 4fe64deb
      Dan Gohman authored
      llvm-svn: 73362
      4fe64deb
  2. Jun 14, 2009
  3. Jun 13, 2009
    • Evan Cheng's avatar
      Add a ARM specific pre-allocation pass that re-schedule loads / stores from · 185c9ef0
      Evan Cheng authored
      consecutive addresses togther. This makes it easier for the post-allocation pass
      to form ldm / stm.
      
      This is step 1. We are still missing a lot of ldm / stm opportunities because
      of register allocation are not done in the desired order. More enhancements
      coming.
      
      llvm-svn: 73291
      185c9ef0
    • Devang Patel's avatar
      llvm.dbg.region.end() intrinsic is not required to be in _last_ basic block in... · 64e6529e
      Devang Patel authored
      llvm.dbg.region.end() intrinsic is not required to be in _last_ basic block in a function.  If that happens then any basic block that follows (lexically) the block with regin.end will not have scope info available.  LexicalScopeStack relies on processing basic block in CFG order, but this processing order is not guaranteed. Things get complicated when the optimizer gets a chance to optimizer IR with dbg intrinsics. 
      Apply defensive patch to preserve at least one lexical scope till the end of function.
      
      llvm-svn: 73282
      64e6529e
    • Owen Anderson's avatar
      Improve style. · c59a7cb8
      Owen Anderson authored
      llvm-svn: 73258
      c59a7cb8
  4. Jun 12, 2009
  5. Jun 11, 2009
  6. Jun 10, 2009
  7. Jun 09, 2009
  8. Jun 07, 2009
  9. Jun 06, 2009
  10. Jun 05, 2009
  11. Jun 04, 2009
Loading