<li><a href="#llvm_eh_sjlj_longjmp"><tt>llvm.eh.sjlj.longjmp</tt></a></li>
<li><a href="#llvm_eh_sjlj_lsda"><tt>llvm.eh.sjlj.lsda</tt></a></li>
<li><a href="#llvm_eh_sjlj_callsite"><tt>llvm.eh.sjlj.callsite</tt></a></li>
- <li><a href="#llvm_eh_sjlj_dispatchsetup"><tt>llvm.eh.sjlj.dispatchsetup</tt></a></li>
</ol></li>
<li><a href="#asm">Asm Table Formats</a>
<ol>
</tr></table>
<div class="doc_author">
- <p>Written by <a href="mailto:jlaskey@mac.com">Jim Laskey</a></p>
+ <p>Written by the <a href="http://llvm.org/">LLVM Team</a></p>
</div>
and <i>filter</i> clauses. The exception is tested against the clauses
sequentially from first to last. The selector value is a positive number if
the exception matched a type info, a negative number if it matched a filter,
- and zero if it matched a cleanup. If nothing is matched, the behavior of the
- program is <a href="#restrictions">undefined</a>. If a type info matched,
+ and zero if it matched a cleanup. If nothing is matched, the behavior of
+ the program is <a href="#restrictions">undefined</a>. If a type info matched,
then the selector value is the index of the type info in the exception table,
which can be obtained using the
<a href="#llvm_eh_typeid_for"><tt>llvm.eh.typeid.for</tt></a> intrinsic.</p>
determine the index for a given type info. If the catch fails to match the
selector then control is passed on to the next catch.</p>
-<p><b>Note:</b> Since the landing pad will not be used if there is no match in
- the list of type info on the call to the <tt>landingpad</tt> instruction,
- then neither the last catch nor <i>catch all</i> need to perform the check
- against the selector.</p>
-
<p>Finally, the entry and exit of catch code is bracketed with calls to
<tt>__cxa_begin_catch</tt> and <tt>__cxa_end_catch</tt>.</p>
<div>
<p>The unwinder delegates the decision of whether to stop in a call frame to
- that call frame's language-specific personality function. Not all personality
- functions guarantee that they will stop to perform cleanups. For example, the
- GNU C++ personality function doesn't do so unless the exception is actually
- caught somewhere further up the stack. When using this personality to
- implement EH for a language that guarantees that cleanups will always be run
- (e.g. Ada), be sure to indicate a catch-all in the
- <a href="LangRef.html#i_landingpad"><tt>landingpad</tt> instruction</a>
- rather than just cleanups.</p>
+ that call frame's language-specific personality function. Not all unwinders
+ guarantee that they will stop to perform cleanups. For example, the GNU C++
+ unwinder doesn't do so unless the exception is actually caught somewhere
+ further up the stack.</p>
<p>In order for inlining to behave correctly, landing pads must be prepared to
handle selector results that they did not originally advertise. Suppose that
</div>
-<!-- ======================================================================= -->
-<h4>
- <a name="llvm_eh_sjlj_dispatchsetup">llvm.eh.sjlj.dispatchsetup</a>
-</h4>
-
-<div>
-
-<pre>
- void @llvm.eh.sjlj.dispatchsetup(i32 %dispatch_value)
-</pre>
-
-<p>For SJLJ based exception handling, the <tt>llvm.eh.sjlj.dispatchsetup</tt>
- intrinsic is used by targets to do any unwind edge setup they need. By
- default, no action is taken.</p>
-
-</div>
-
</div>
<!-- ======================================================================= -->
<a href="http://validator.w3.org/check/referer"><img
src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
- <a href="mailto:sabre@nondot.org">Chris Lattner</a><br>
<a href="http://llvm.org/">LLVM Compiler Infrastructure</a><br>
Last modified: $Date$
</address>