mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-02 10:32:56 +00:00
Describe invoke instruction dependencies. Generalize the text for
terminator instructions so that it applies to all terminators with multiple successors, including invoke. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102909 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
855abed3cb
commit
b532816ac9
@ -2357,6 +2357,11 @@ has undefined behavior.</p>
|
||||
<a href="#i_ret"><tt>ret</tt></a> instructions that dynamically transfer
|
||||
control back to them.</li>
|
||||
|
||||
<li><a href="#i_invoke"><tt>Invoke</tt></a> instructions depend on the
|
||||
<a href="#i_ret"><tt>ret</tt></a>, <a href="#i_unwind"><tt>unwind</tt></a>,
|
||||
or exception-throwing call instructions that dynamically transfer control
|
||||
back to them.</li>
|
||||
|
||||
<li>Non-volatile loads and stores depend on the most recent stores to all of the
|
||||
referenced memory addresses, following the order in the IR
|
||||
(including loads and stores implied by intrinsics such as
|
||||
@ -2374,15 +2379,11 @@ has undefined behavior.</p>
|
||||
recent preceding instruction with externally visible side effects, following
|
||||
the order in the IR. (This includes volatile loads and stores.)</li>
|
||||
|
||||
<li>An instruction <i>control-depends</i> on a <a href="#i_br"><tt>br</tt></a>,
|
||||
<a href="#i_switch"><tt>switch</tt></a>, or
|
||||
<a href="#i_indirectbr"><tt>indirectbr</tt></a> if the <tt>br</tt>,
|
||||
<tt>switch</tt>, or <tt>indirectbr</tt> has multiple successors and the
|
||||
instruction is always executed when control transfers to one of the
|
||||
successors, and may not be executed when control is transfered to
|
||||
another.</li>
|
||||
|
||||
<!-- FIXME: invoke, unwind, exceptions -->
|
||||
<li>An instruction <i>control-depends</i> on a
|
||||
<a href="#terminators">terminator instruction</a>
|
||||
if the terminator instruction has multiple successors and the instruction
|
||||
is always executed when control transfers to one of the successors, and
|
||||
may not be executed when control is transfered to another.</li>
|
||||
|
||||
<li>Dependence is transitive.</li>
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user