[LLVMdev] Increasing TargetRegisterInfo::FirstVirtualRegister?

Jakob Stoklund Olesen stoklund at 2pi.dk
Sun Jan 9 15:15:44 PST 2011


On Jan 7, 2011, at 11:25 AM, Dale Johannesen wrote:

> We might want to make physical registers negative and virtuals positive, or vice versa.   Then FirstVirtualRegister is 0 or 1, and we could get rid of those annoying subtractions of FirstVirtualRegister all over the virtual-register-handling passes.  Since 0 is used all over the place as "invalid register" it is probably best to leave this alone, let FirstVirtualRegister be 1, and simply ignore (i.e. treat as erroneous) the 0th element of anything keyed off FirstVirtualRegister.

Fixed in r123137.

I decided to move the virtual register numbers because there is so much code already using physical register numbers as direct indices.

My first attempt was to let the virtuals run from -1 downwards, but it turns out that we have code in isel depending on createVirtualRegister() returning increasing numbers. DenseMap<unsigned> also complained because it uses -1u and -2u as sentinels.

So I moved the virtual register range to 2^31 growing upwards.

The range from 2^30 to 2^31 is reserved for representing stack slots.

Physical registers get 1 .. 2^30-1.

/jakob

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 1929 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110109/14fb5266/attachment.bin>


More information about the llvm-dev mailing list