Force coallescing of live ranges that have a single definition, even if they
authorChris Lattner <sabre@nondot.org>
Fri, 23 Jul 2004 05:26:05 +0000 (05:26 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 23 Jul 2004 05:26:05 +0000 (05:26 +0000)
commitfe1630b43ef3e9506fde9780108c2af0431393e9
tree33b81a877689b7d5eebf5712270e0de185739eb2
parenteed80e23751ecc50c1fa5604f67be4b826d5b417
Force coallescing of live ranges that have a single definition, even if they
interfere.  Because these intervals have a single definition, and one of them
is a copy instruction, they are always safe to merge even if their lifetimes
interfere.  This slightly reduces the amount of spill code, for example on
252.eon, from:

 12837 spiller               - Number of loads added
  7604 spiller               - Number of stores added
  5842 spiller               - Number of register spills
 18155 liveintervals         - Number of identity moves eliminated after coalescing

to:

  12754 spiller               - Number of loads added
   7585 spiller               - Number of stores added
   5803 spiller               - Number of register spills
  18262 liveintervals         - Number of identity moves eliminated after coalescing

The much much bigger win would be to merge intervals with multiple definitions
(aka phi nodes) but this is not that day.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15124 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/LiveIntervalAnalysis.h
lib/CodeGen/LiveIntervalAnalysis.cpp
lib/CodeGen/LiveIntervalAnalysis.h