aboutsummaryrefslogtreecommitdiff
path: root/docs/CodeGenerator.html
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2011-01-08 23:10:59 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2011-01-08 23:10:59 +0000
commit3ca2102c72d1412d9658a2516e8144ea1a170785 (patch)
tree86c00e52a40f26a59d4085be4d4bc702584b1182 /docs/CodeGenerator.html
parentb421c566f512ed0ec87851866d335e9086c3f8be (diff)
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
Diffstat (limited to 'docs/CodeGenerator.html')
-rw-r--r--docs/CodeGenerator.html29
1 files changed, 18 insertions, 11 deletions
diff --git a/docs/CodeGenerator.html b/docs/CodeGenerator.html
index 0bd78aea1f..a84534644c 100644
--- a/docs/CodeGenerator.html
+++ b/docs/CodeGenerator.html
@@ -1559,18 +1559,25 @@ bool RegMapping_Fer::compatible_class(MachineFunction &amp;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