Don't document exactly how virtual registers are represented as integers. Code

shouldn't depend directly on that.

Give an example of how to iterate over all virtual registers in a function
without depending on the representation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123099 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Jakob Stoklund Olesen 2011-01-08 23:10:59 +00:00
parent b421c566f5
commit 3ca2102c72

View File

@ -1559,18 +1559,25 @@ bool RegMapping_Fer::compatible_class(MachineFunction &mf,
</p>
<p>Virtual registers are also denoted by integer numbers. Contrary to physical
registers, different virtual registers never share the same number. The
smallest virtual register is normally assigned the number 1024. This may
change, so, in order to know which is the first virtual register, you should
access <tt>TargetRegisterInfo::FirstVirtualRegister</tt>. Any register whose
number is greater than or equal
to <tt>TargetRegisterInfo::FirstVirtualRegister</tt> is considered a virtual
register. Whereas physical registers are statically defined in
a <tt>TargetRegisterInfo.td</tt> file and cannot be created by the
application developer, that is not the case with virtual registers. In order
to create new virtual registers, use the
registers, different virtual registers never share the same number. Whereas
physical registers are statically defined in a <tt>TargetRegisterInfo.td</tt>
file and cannot be created by the application developer, that is not the case
with virtual registers. In order to create new virtual registers, use the
method <tt>MachineRegisterInfo::createVirtualRegister()</tt>. This method
will return a virtual register with the highest code.</p>
will return a new virtual register. Use an <tt>IndexedMap&lt;Foo,
VirtReg2IndexFunctor&gt;</tt> to hold information per virtual register. If you
need to enumerate all virtual registers, use the function
<tt>TargetRegisterInfo::index2VirtReg()</tt> to find the virtual register
numbers:</p>
<div class="doc_code">
<pre>
for (unsigned i = 0, e = MRI->getNumVirtRegs(); i != e; ++i) {
unsigned VirtReg = TargetRegisterInfo::index2VirtReg(i);
stuff(VirtReg);
}
</pre>
</div>
<p>Before register allocation, the operands of an instruction are mostly virtual
registers, although physical registers may also be used. In order to check if