Skip to content
  1. Oct 15, 2009
  2. Oct 14, 2009
  3. Oct 13, 2009
  4. Oct 12, 2009
    • Bob Wilson's avatar
      Change CreateNewWater method to return NewMBB by reference. · 3250e776
      Bob Wilson authored
      llvm-svn: 83905
      3250e776
    • Bob Wilson's avatar
      Last week, ARMConstantIslandPass was failing to converge for the · cc121aa7
      Bob Wilson authored
      MultiSource/Benchmarks/MiBench/automotive-susan test.  The failure has
      since been masked by an unrelated change (just randomly), so I don't have
      a testcase for this now.  Radar 7291928.
      
      The situation where this happened is that a constant pool entry (CPE) was
      placed at a lower address than the load that referenced it.  There were in
      fact 2 CPEs placed at adjacent addresses and referenced by 2 loads that were
      close together in the code.  The distance from the loads to the CPEs was
      right at the limit of what they could handle, so that only one of the CPEs
      could be placed within range.  On every iteration, the first CPE was found
      to be out of range, causing a new CPE to be inserted.  The second CPE had
      been in range but the newly inserted entry pushed it too far away.  Thus the
      second CPE was also replaced by a new entry, which in turn pushed the first
      CPE out of range.  Etc.
      
      Judging from some comments in the code, the initial implementation of this
      pass did not support CPEs placed _before_ their references.  In the case
      where the CPE is placed at a higher address, the key to making the algorithm
      terminate is that new CPEs are only inserted at the end of a group of adjacent
      CPEs.  This is implemented by removing a basic block from the "WaterList"
      once it has been used, and then adding the newly inserted CPE block to the
      list so that the next insertion will come after it.  This avoids the ping-pong
      effect where CPEs are repeatedly moved to the beginning of a group of
      adjacent CPEs.  This does not work when going backwards, however, because the
      entries at the end of an adjacent group of CPEs are closer than the CPEs
      earlier in the group.
      
      To make this pass terminate, we need to maintain a property that changes can
      only happen in some sort of monotonic fashion.  The fix used here is to require
      that the CPE for a particular constant pool load can only move to lower
      addresses.  This is a very simple change to the code and should not cause
      any significant degradation in the results.
      
      llvm-svn: 83902
      cc121aa7
    • Bob Wilson's avatar
      Another minor clean-up. · e4adae26
      Bob Wilson authored
      llvm-svn: 83897
      e4adae26
    • Bob Wilson's avatar
      Remove redundant parameter. · 196bf32a
      Bob Wilson authored
      llvm-svn: 83894
      196bf32a
    • Bob Wilson's avatar
      Use early exit to reduce indentation. · 3a7326e7
      Bob Wilson authored
      llvm-svn: 83874
      3a7326e7
    • Bob Wilson's avatar
      Change to return a value by reference. · 3af34312
      Bob Wilson authored
      llvm-svn: 83873
      3af34312
    • Bob Wilson's avatar
      Add a typedef for an iterator. · c7a3cf40
      Bob Wilson authored
      llvm-svn: 83872
      c7a3cf40
    • Dale Johannesen's avatar
      Revert the kludge in 76703. I got a clean · 06243d7b
      Dale Johannesen authored
      bootstrap of FSF-style PPC, so there is some
      reason to believe the original bug (which was
      never analyzed) has been fixed, probably by
      82266.
      
      llvm-svn: 83871
      06243d7b
    • Dan Gohman's avatar
      Don't forget to mark RAX as live-out of the function when arranging for · a698d7ac
      Dan Gohman authored
      it to hold the address of an sret return value, for x86-64 ABI purposes.
      
      Also, fix the test that was originally intended to test this to actually
      test it, using FileCheck.
      
      llvm-svn: 83853
      a698d7ac
    • Chris Lattner's avatar
      Fix PR5087, patch by Jakub Staszak! · 0840c823
      Chris Lattner authored
      llvm-svn: 83822
      0840c823
Loading