Skip to content
  1. Oct 15, 2009
    • Daniel Dunbar's avatar
      Revert "Complete Rewrite of AsmPrinter, TargetObjectFile based on new · 3b5bdd53
      Daniel Dunbar authored
      PIC16Section class", it breaks globals.ll.
      
      llvm-svn: 84184
      3b5bdd53
    • Sanjiv Gupta's avatar
      Complete Rewrite of AsmPrinter, TargetObjectFile based on new PIC16Section class · 917db86b
      Sanjiv Gupta authored
      derived from MCSection.
      
      llvm-svn: 84180
      917db86b
    • Sanjiv Gupta's avatar
      Few changes to comply with new DebugInfo Metadata representation. · 73576360
      Sanjiv Gupta authored
      llvm-svn: 84179
      73576360
    • Bob Wilson's avatar
      Be smarter about reusing constant pool entries. · 68ead6c7
      Bob Wilson authored
      llvm-svn: 84173
      68ead6c7
    • Bob Wilson's avatar
      Fix another problem with ARM constant pools. Radar 7303551. · b4f2a85f
      Bob Wilson authored
      When ARMConstantIslandPass cannot find any good locations (i.e., "water") to
      place constants, it falls back to inserting unconditional branches to make a
      place to put them.  My recent change exposed a problem in this area.  We may
      sometimes append to the same block more than one unconditional branch.  The
      symptoms of this are that the generated assembly has a branch to an undefined
      label and running llc with -debug will cause a seg fault.
      
      This happens more easily since my change to prevent CPEs from moving from
      lower to higher addresses as the algorithm iterates, but it could have
      happened before.  The end of the block may be in range for various constant
      pool references, but the insertion point for new CPEs is not right at the end
      of the block -- it is at the end of the CPEs that have already been placed
      at the end of the block.  The insertion point could be out of range.  When
      that happens, the fallback code will always append another unconditional
      branch if the end of the block is in range.
      
      The fix is to only append an unconditional branch if the block does not
      already end with one.  I also removed a check to see if the constant pool load
      instruction is at the end of the block, since that is redundant with
      checking if the end of the block is in-range.
      
      There is more to be done here, but I think this fixes the immediate problem.
      
      llvm-svn: 84172
      b4f2a85f
  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
    • Anton Korobeynikov's avatar
      Add missed mem-mem move patterns · 4b38ce9f
      Anton Korobeynikov authored
      llvm-svn: 83812
      4b38ce9f
Loading