Several fixes to handling of int CC register:
authorVikram S. Adve <vadve@cs.uiuc.edu>
Thu, 10 Jul 2003 19:42:55 +0000 (19:42 +0000)
committerVikram S. Adve <vadve@cs.uiuc.edu>
Thu, 10 Jul 2003 19:42:55 +0000 (19:42 +0000)
commit3bf089227bb8470310481c21a3327146963714e5
tree5be51e959fd584e9043f44a50ec90cebf827e5c6
parentb15f8d446a941e166175e9af1da8dea63bbc5b25
Several fixes to handling of int CC register:

(1) An int CC live range must be spilled if there are any interferences,
    even if no other "neighbour" in the interf. graph has been allocated
    that reg. yet.  This is actually true of any class with only one reg!

(2) SparcIntCCRegClass::colorIGNode sets the color even if the LR must
    be spilled so that the machine-independent spill code doesn't have to
    make the machine-dependent decision of which CC name to use based on
    operand type: %xcc or %icc.  (These are two halves of the same
register.)

(3) LR->isMarkedForSpill() is no longer the same as LR->hasColor().
    These should never have been the same, and this is necessary now for #2.

(4) All RDCCR and WRCCR instructions are directly generated with the
    phony number for %ccr so that EmitAssembly/EmitBinary doesn't have to
    deal with this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7152 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/RegAlloc/PhyRegAlloc.cpp
lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp