Document how phi and invoke instructions interact with SSA form.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72762 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Jay Foad 2009-06-03 10:20:10 +00:00
parent 2c48fe6757
commit d244909b76

View File

@ -2403,9 +2403,10 @@ cleanup is performed in the case of either a <tt>longjmp</tt> or a thrown
exception. Additionally, this is important for implementation of
'<tt>catch</tt>' clauses in high-level languages that support them.</p>
<p>It is not valid to reference the return value of an invoke call from
anywhere not dominated by the normal label, since an unwind does not
provide a return value.</p>
<p>For the purposes of the SSA form, the definition of the value
returned by the '<tt>invoke</tt>' instruction is deemed to occur on
the edge from the current block to the "normal" label. If the callee
unwinds then no return value is available.</p>
<h5>Example:</h5>
<pre>
@ -4518,6 +4519,11 @@ may be used as the label arguments.</p>
block and the PHI instructions: i.e. PHI instructions must be first in
a basic block.</p>
<p>For the purposes of the SSA form, the use of each incoming value is
deemed to occur on the edge from the corresponding predecessor block
to the current block (but after any definition of an '<tt>invoke</tt>'
instruction's return value on the same edge).</p>
<h5>Semantics:</h5>
<p>At runtime, the '<tt>phi</tt>' instruction logically takes on the value