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)
commit434fb37bb4a1025eca9f0179d71cd3a711829c40
tree3d6b16f6c6d8d6fb2a839223c72f08479ae05130
parenta8879087b5d5de48a8c07f8cc6742b4f2509bbab
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

llvm-svn: 147726
llvm/lib/CodeGen/RegisterCoalescer.cpp