Optimize reserved register coalescing.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Sat, 7 Jan 2012 07:39:50 +0000 (07:39 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Sat, 7 Jan 2012 07:39:50 +0000 (07:39 +0000)
commit34786a3ad760b9901912f70a8a17fd85e0643f21
treeeb40be5a444219e13823ca3c90b249853277a3a5
parent4281e20aab7f1fe1b35b31c9237ad89c20937e02
Optimize reserved register coalescing.

Reserved registers don't have proper live ranges, their LiveInterval
simply has a snippet of liveness for each def.  Virtual registers with a
single value that is a copy of a reserved register (typically %esp) can
be coalesced with the reserved register if the live range doesn't
overlap any reserved register defs.

When coalescing with a reserved register, don't modify the reserved
register live range.  Just leave it as a bunch of dead defs.  This
eliminates quadratic coalescer behavior in i386 functions with many
function calls.

PR11699

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147726 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/RegisterCoalescer.cpp