Freeze the reserved registers as soon as isel is complete.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Mon, 15 Oct 2012 21:33:06 +0000 (21:33 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Mon, 15 Oct 2012 21:33:06 +0000 (21:33 +0000)
commite4f273908bd37df5f0f6b2c575dcb2af99f6b85b
tree51c66c47a113c60fd810f97f4ee9df34118c49b7
parent64ba6352097d38db5a57f4bf62dcdf14b0e6e147
Freeze the reserved registers as soon as isel is complete.

Also provide an MRI::getReservedRegs() function to access the frozen
register set, and isReserved() and isAllocatable() methods to test
individual registers.

The various implementations of TRI::getReservedRegs() are quite
complicated, and many passes need to look at the reserved register set.
This patch makes it possible for these passes to use the cached copy in
MRI, avoiding a lot of malloc traffic and repeated calculations.

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