OSDN Git Service

Fix emergency spilling in LiveIntervals::spillPhysRegAroundRegDefsUses.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Tue, 16 Nov 2010 19:55:14 +0000 (19:55 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Tue, 16 Nov 2010 19:55:14 +0000 (19:55 +0000)
commitf4840c07f84d018c4de5dbdad4166b9e162f8f89
treea50ac30016681ae492035d678d8eba0157fc832f
parentfd900a2c07f54b4687315edf3df0ec99e4462942
Fix emergency spilling in LiveIntervals::spillPhysRegAroundRegDefsUses.

Always spill the full representative register at any point where any subregister
is live.

This fixes PR8620 which caused the old logic to get confused and not spill
anything at all.

The fundamental problem here is that the coalescer is too aggressive about
physical register coalescing. It sometimes makes it impossible to allocate
registers without these emergency spills.

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