Skip to content
  1. Jul 28, 2011
  2. Jul 27, 2011
  3. Jul 26, 2011
  4. Jul 25, 2011
  5. Jul 24, 2011
  6. Jul 23, 2011
    • Jakob Stoklund Olesen's avatar
      Add RAGreedy::calcCompactRegion. · ecad62f9
      Jakob Stoklund Olesen authored
      This method computes the edge bundles that should be live when splitting
      around a compact region. This is independent of interference.
      
      The function returns false if the live range was already a compact
      region, or the compact region doesn't have any live bundles - it would
      be the same as splitting around basic blocks.
      
      Compact regions are computed using the normal spill placement code. We
      pretend there is interference in all live-through blocks that don't use
      the live range. This removes all edges from the Hopfield network used
      for spill placement, so it converges instantly.
      
      llvm-svn: 135847
      ecad62f9
    • Jakob Stoklund Olesen's avatar
      Fix bug in SplitEditor::splitLiveThroughBlock when switching registers. · f500ccec
      Jakob Stoklund Olesen authored
      If there is no interference and no last split point, we cannot
      enterIntvBefore(Stop) - that function needs a real instruction.
      
      Use enterIntvAtEnd instead for that very easy case.
      
      This code doesn't currently run, it is needed by multi-way splitting.
      
      llvm-svn: 135846
      f500ccec
    • Jakob Stoklund Olesen's avatar
      Prepare RAGreedy::growRegion for compact regions. · a953bf13
      Jakob Stoklund Olesen authored
      A split candidate can have a null PhysReg which means that it doesn't
      map to a real interference pattern. Instead, pretend that all through
      blocks have interference.
      
      This makes it possible to generate compact regions where the live range
      doesn't go through blocks that don't use it. The live range will still
      be live between directly connected blocks with uses.
      
      Splitting around a compact region tends to produce a live range with a
      high spill weight, so it may evict a less dense live range.
      
      llvm-svn: 135845
      a953bf13
    • Jakob Stoklund Olesen's avatar
      Add a simple method for marking blocks with interference in and out. · 0ab5d0ee
      Jakob Stoklund Olesen authored
      This method matches addLinks - All the listed blocks are considered to
      have interference, so they add a negative bias to their bundles.
      
      This could also be done by addConstraints, but that requires building a
      separate BlockConstraint array.
      
      llvm-svn: 135844
      0ab5d0ee
    • Jakob Stoklund Olesen's avatar
      Allow null interference cursors to be queried. · cacefc7d
      Jakob Stoklund Olesen authored
      They always report 'no interference'.
      
      llvm-svn: 135843
      cacefc7d
    • Evan Cheng's avatar
  7. Jul 22, 2011
  8. Jul 21, 2011
    • Devang Patel's avatar
      Refactor. · ddfe66e9
      Devang Patel authored
      llvm-svn: 135633
      ddfe66e9
    • Devang Patel's avatar
      There are two ways to map a variable to its lexical scope. Lexical scope... · 8fb9fd67
      Devang Patel authored
      There are two ways to map a variable to its lexical scope. Lexical scope information is embedded in MDNode describing the variable. It is also available as a part of DebugLoc attached with DBG_VALUE instruction. DebugLoc attached with an instruction is less reliable in optimized code so use information embedded in the MDNode.
      
      llvm-svn: 135629
      8fb9fd67
  9. Jul 20, 2011
Loading