Skip to content
  1. Jun 30, 2011
    • Rafael Espindola's avatar
      Create a isFullCopy predicate. · 070f96c5
      Rafael Espindola authored
      llvm-svn: 134189
      070f96c5
    • Rafael Espindola's avatar
      Remove dead code. · 79fd2e7a
      Rafael Espindola authored
      llvm-svn: 134148
      79fd2e7a
    • Jakob Stoklund Olesen's avatar
      Reapply r134047 now that the world is ready for it. · adc6a4ca
      Jakob Stoklund Olesen authored
      This patch will sometimes choose live range split points next to
      interference instead of always splitting next to a register point. That
      means spill code can now appear almost anywhere, and it was necessary
      to fix code that didn't expect that.
      
      The difficult places were:
      
      - Between a CALL returning a value on the x87 stack and the
        corresponding FpPOP_RETVAL (was FpGET_ST0). Probably also near x87
        inline assembly, but that didn't actually show up in testing.
      
      - Between a CALL popping arguments off the stack and the corresponding
        ADJCALLSTACKUP.
      
      Both are fixed now. The only place spill code can't appear is after
      terminators, see SplitAnalysis::getLastSplitPoint.
      
      Original commit message:
      
      Rewrite RAGreedy::splitAroundRegion, now with cool ASCII art.
      
      This function has to deal with a lot of special cases, and the old
      version got it wrong sometimes. In particular, it would sometimes leave
      multiple uses in the stack interval in a single block. That causes bad
      code with multiple reloads in the same basic block.
      
      The new version handles block entry and exit in a single pass. It first
      eliminates all the easy cases, and then goes on to create a local
      interval for the blocks with difficult interference. Previously, we
      would only create the local interval for completely isolated blocks.
      
      It can happen that the stack interval becomes completely empty because
      we could allocate a register in all edge bundles, and the new local
      intervals deal with the interference. The empty stack interval is
      harmless, but we need to remove a SplitKit assertion that checks for
      empty intervals.
      
      llvm-svn: 134125
      adc6a4ca
    • Eric Christopher's avatar
      f81292ba
    • Devang Patel's avatar
      · 0eada032
      Devang Patel authored
      Revert r133953 for now.
      
      llvm-svn: 134116
      0eada032
  2. Jun 29, 2011
  3. Jun 28, 2011
  4. Jun 27, 2011
  5. Jun 26, 2011
  6. Jun 25, 2011
  7. Jun 24, 2011
  8. Jun 23, 2011
Loading