Skip to content
  1. Sep 24, 2011
  2. Sep 23, 2011
  3. Sep 22, 2011
  4. Sep 21, 2011
  5. Sep 20, 2011
    • Andrew Trick's avatar
      Restore hasPostISelHook tblgen flag. · 52363bdb
      Andrew Trick authored
      No functionality change. The hook makes it explicit which patterns
      require "special" handling. i.e. it self-documents tblgen
      deficiencies. I plan to add verification in ExpandISelPseudos and
      Thumb2SizeReduce to catch any missing hasPostISelHooks. Otherwise it's
      too fragile.
      
      llvm-svn: 140160
      52363bdb
    • Andrew Trick's avatar
      ARM isel bug fix for adds/subs operands. · 8586e62d
      Andrew Trick authored
      Modified ARMISelLowering::AdjustInstrPostInstrSelection to handle the
      full gamut of CPSR defs/uses including instructins whose "optional"
      cc_out operand is not really optional. This allowed removal of the
      hasPostISelHook to simplify the .td files and make the implementation
      more robust.
      Fixes rdar://10137436: sqlite3 miscompile
      
      llvm-svn: 140134
      8586e62d
    • Andrew Trick's avatar
      whitespace · 53df4b6d
      Andrew Trick authored
      llvm-svn: 140133
      53df4b6d
  6. Sep 18, 2011
  7. Sep 16, 2011
    • Benjamin Kramer's avatar
      Namespacify. · 67b014b2
      Benjamin Kramer authored
      llvm-svn: 139892
      67b014b2
    • Jakob Stoklund Olesen's avatar
      Spill mode: Hoist back-copies locally. · e2c92a31
      Jakob Stoklund Olesen authored
      The leaveIntvAfter() function normally inserts a back-copy after the
      requested instruction, making the back-copy kill the live range.
      
      In spill mode, try to insert the back-copy before the last use instead.
      That means the last use becomes the kill instead of the back-copy.  This
      lowers the register pressure because the last use can now redefine the
      same register it was reading.
      
      This will also improve compile time: The back-copy isn't a kill, so
      hoisting it in hoistCopiesForSize() won't force a recomputation of the
      source live range.  Similarly, if the back-copy isn't hoisted by the
      splitter, the spiller will not attempt hoisting it locally.
      
      llvm-svn: 139883
      e2c92a31
    • Jakob Stoklund Olesen's avatar
      Disable local spill hoisting for non-killing copies. · e8339b2e
      Jakob Stoklund Olesen authored
      If the source register is live after the copy being spilled, there is no
      point to hoisting it.  Hoisting inside a basic block only serves to
      resolve interferences by shortening the live range of the source.
      
      llvm-svn: 139882
      e8339b2e
  8. Sep 15, 2011
  9. Sep 14, 2011
    • Jakob Stoklund Olesen's avatar
      Ignore the cloning of unknown registers. · 811b9c47
      Jakob Stoklund Olesen authored
      THe LRE_DidCloneVirtReg callback may be called with vitual registers
      that RAGreedy doesn't even know about yet.  In that case, there are no
      data structures to update.
      
      llvm-svn: 139702
      811b9c47
    • Jakob Stoklund Olesen's avatar
      Hoist back-copies to the least busy dominator. · a98af398
      Jakob Stoklund Olesen authored
      When a back-copy is hoisted to the nearest common dominator, keep
      looking up the dominator tree for a less loopy dominator, and place the
      back-copy there instead.
      
      Don't do this when a single existing back-copy dominates all the others.
      Assume the client knows what he is doing, and keep the dominating
      back-copy.
      
      This prevents us from hoisting back-copies into loops in most cases.  If
      a value is defined in a loop with multiple exits, we may still hoist
      back-copies into that loop.  That is the speed/size tradeoff.
      
      llvm-svn: 139698
      a98af398
    • Nadav Rotem's avatar
      Add integer promotion support for vselect · d748dbac
      Nadav Rotem authored
      llvm-svn: 139692
      d748dbac
    • Jakob Stoklund Olesen's avatar
      Distinguish complex mapped values from forced recomputation. · 5d4277dd
      Jakob Stoklund Olesen authored
      When a ParentVNI maps to multiple defs in a new interval, its live range
      may still be derived directly from RegAssign by transferValues().
      
      On the other hand, when instructions have been rematerialized or
      hoisted, it may be necessary to completely recompute live ranges using
      LiveRangeCalc::extend() to all uses.
      
      Use a bit in the value map to indicate that a live range must be
      recomputed.  Rename markComplexMapped() to forceRecompute().
      
      This fixes some live range verification errors when
      -split-spill-mode=size hoists back-copies by recomputing source ranges
      when RegAssign kills can't be moved.
      
      llvm-svn: 139660
      5d4277dd
    • Jakob Stoklund Olesen's avatar
      Implement -split-spill-mode=size. · a25330f0
      Jakob Stoklund Olesen authored
      Whenever the complement interval is defined by multiple copies of the
      same value, hoist those back-copies to the nearest common dominator.
      
      This ensures that at most one copy is inserted per value in the
      complement inteval, and no phi-defs are needed.
      
      llvm-svn: 139651
      a25330f0
    • Eli Friedman's avatar
      f78c6a83
Loading