summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/CallingConvLower.cpp
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2011-01-09 22:42:48 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2011-01-09 22:42:48 +0000
commit8828e482b6ddbe1b96f0a287f9002b42b876f700 (patch)
treea1c7ec19201aa9041aa66eca1faee143fcff804b /llvm/lib/CodeGen/CallingConvLower.cpp
parentdff679f4b66bf46cf1349225f6b57df300d3ed78 (diff)
downloadbcm5719-llvm-8828e482b6ddbe1b96f0a287f9002b42b876f700.tar.gz
bcm5719-llvm-8828e482b6ddbe1b96f0a287f9002b42b876f700.zip
Change virtual register numbering to make more space for physical registers.
The numbering plan is now: 0 NoRegister. [1;2^30) Physical registers. [2^30;2^31) Stack slots. [2^31;2^32) Virtual registers. (With -1u and -2u used by DenseMapInfo.) Each segment is filled from the left, so any mistaken interpretation should quickly cause crashes. FirstVirtualRegister has been removed. TargetRegisterInfo provides predicates conversion functions that should be used instead of interpreting register numbers manually. It is now legal to pass NoRegister to isPhysicalRegister() and isVirtualRegister(). The result is false in both cases. It is quite rare to represent stack slots in this way, so isPhysicalRegister() and isVirtualRegister() require that isStackSlot() be checked first if it can possibly return true. This allows a very fast implementation of the common predicates. llvm-svn: 123137
Diffstat (limited to 'llvm/lib/CodeGen/CallingConvLower.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud