aboutsummaryrefslogtreecommitdiff
path: root/docs/ExceptionHandling.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/ExceptionHandling.html')
-rw-r--r--docs/ExceptionHandling.html62
1 files changed, 31 insertions, 31 deletions
diff --git a/docs/ExceptionHandling.html b/docs/ExceptionHandling.html
index 09e0946142..0d3ea1b624 100644
--- a/docs/ExceptionHandling.html
+++ b/docs/ExceptionHandling.html
@@ -61,7 +61,7 @@
<h2><a name="introduction">Introduction</a></h2>
<!-- *********************************************************************** -->
-<div class="doc_text">
+<div>
<p>This document is the central repository for all information pertaining to
exception handling in LLVM. It describes the format that LLVM exception
@@ -70,14 +70,12 @@
provides specific examples of what exception handling information is used for
in C/C++.</p>
-</div>
-
<!-- ======================================================================= -->
<h3>
<a name="itanium">Itanium ABI Zero-cost Exception Handling</a>
</h3>
-<div class="doc_text">
+<div>
<p>Exception handling for most programming languages is designed to recover from
conditions that rarely occur during general use of an application. To that
@@ -110,7 +108,7 @@
<a name="sjlj">Setjmp/Longjmp Exception Handling</a>
</h3>
-<div class="doc_text">
+<div>
<p>Setjmp/Longjmp (SJLJ) based exception handling uses LLVM intrinsics
<a href="#llvm_eh_sjlj_setjmp"><tt>llvm.eh.sjlj.setjmp</tt></a> and
@@ -142,7 +140,7 @@
<a name="overview">Overview</a>
</h3>
-<div class="doc_text">
+<div>
<p>When an exception is thrown in LLVM code, the runtime does its best to find a
handler suited to processing the circumstance.</p>
@@ -185,12 +183,14 @@
</div>
+</div>
+
<!-- ======================================================================= -->
<h2>
<a name="codegen">LLVM Code Generation</a>
</h2>
-<div class="doc_text">
+<div>
<p>At the time of this writing, only C++ exception handling support is available
in LLVM. So the remainder of this document will be somewhat C++-centric.</p>
@@ -200,14 +200,12 @@
we will describe the implementation of LLVM exception handling in terms of
C++ examples.</p>
-</div>
-
<!-- ======================================================================= -->
<h3>
<a name="throw">Throw</a>
</h3>
-<div class="doc_text">
+<div>
<p>Languages that support exception handling typically provide a <tt>throw</tt>
operation to initiate the exception process. Internally, a throw operation
@@ -229,7 +227,7 @@
<a name="try_catch">Try/Catch</a>
</h3>
-<div class="doc_text">
+<div>
<p>A call within the scope of a <i>try</i> statement can potentially raise an
exception. In those circumstances, the LLVM C++ front-end replaces the call
@@ -317,7 +315,7 @@
<a name="cleanups">Cleanups</a>
</h3>
-<div class="doc_text">
+<div>
<p>To handle destructors and cleanups in <tt>try</tt> code, control may not run
directly from a landing pad to the first catch. Control may actually flow
@@ -336,7 +334,7 @@
<a name="throw_filters">Throw Filters</a>
</h3>
-<div class="doc_text">
+<div>
<p>C++ allows the specification of which exception types can be thrown from a
function. To represent this a top level landing pad may exist to filter out
@@ -363,7 +361,7 @@
<a name="restrictions">Restrictions</a>
</h3>
-<div class="doc_text">
+<div>
<p>The semantics of the invoke instruction require that any exception that
unwinds through an invoke call should result in a branch to the invoke's
@@ -384,25 +382,25 @@
</div>
+</div>
+
<!-- ======================================================================= -->
<h2>
<a name="format_common_intrinsics">Exception Handling Intrinsics</a>
</h2>
-<div class="doc_text">
+<div>
<p>LLVM uses several intrinsic functions (name prefixed with "llvm.eh") to
provide exception handling information at various points in generated
code.</p>
-</div>
-
<!-- ======================================================================= -->
<h4>
<a name="llvm_eh_exception">llvm.eh.exception</a>
</h4>
-<div class="doc_text">
+<div>
<pre>
i8* %<a href="#llvm_eh_exception">llvm.eh.exception</a>()
@@ -417,7 +415,7 @@
<a name="llvm_eh_selector">llvm.eh.selector</a>
</h4>
-<div class="doc_text">
+<div>
<pre>
i32 %<a href="#llvm_eh_selector">llvm.eh.selector</a>(i8*, i8*, ...)
@@ -449,7 +447,7 @@
<a name="llvm_eh_typeid_for">llvm.eh.typeid.for</a>
</h4>
-<div class="doc_text">
+<div>
<pre>
i32 %<a href="#llvm_eh_typeid_for">llvm.eh.typeid.for</a>(i8*)
@@ -467,7 +465,7 @@
<a name="llvm_eh_sjlj_setjmp">llvm.eh.sjlj.setjmp</a>
</h4>
-<div class="doc_text">
+<div>
<pre>
i32 %<a href="#llvm_eh_sjlj_setjmp">llvm.eh.sjlj.setjmp</a>(i8*)
@@ -496,7 +494,7 @@
<a name="llvm_eh_sjlj_longjmp">llvm.eh.sjlj.longjmp</a>
</h4>
-<div class="doc_text">
+<div>
<pre>
void %<a href="#llvm_eh_sjlj_longjmp">llvm.eh.sjlj.setjmp</a>(i8*)
@@ -516,7 +514,7 @@
<a name="llvm_eh_sjlj_lsda">llvm.eh.sjlj.lsda</a>
</h4>
-<div class="doc_text">
+<div>
<pre>
i8* %<a href="#llvm_eh_sjlj_lsda">llvm.eh.sjlj.lsda</a>()
@@ -535,7 +533,7 @@
<a name="llvm_eh_sjlj_callsite">llvm.eh.sjlj.callsite</a>
</h4>
-<div class="doc_text">
+<div>
<pre>
void %<a href="#llvm_eh_sjlj_callsite">llvm.eh.sjlj.callsite</a>(i32)
@@ -553,7 +551,7 @@
<a name="llvm_eh_sjlj_dispatchsetup">llvm.eh.sjlj.dispatchsetup</a>
</h4>
-<div class="doc_text">
+<div>
<pre>
void %<a href="#llvm_eh_sjlj_dispatchsetup">llvm.eh.sjlj.dispatchsetup</a>(i32)
@@ -565,24 +563,24 @@
</div>
+</div>
+
<!-- ======================================================================= -->
<h2>
<a name="asm">Asm Table Formats</a>
</h2>
-<div class="doc_text">
+<div>
<p>There are two tables that are used by the exception handling runtime to
determine which actions should take place when an exception is thrown.</p>
-</div>
-
<!-- ======================================================================= -->
<h3>
<a name="unwind_tables">Exception Handling Frame</a>
</h3>
-<div class="doc_text">
+<div>
<p>An exception handling frame <tt>eh_frame</tt> is very similar to the unwind
frame used by dwarf debug info. The frame contains all the information
@@ -600,7 +598,7 @@
<a name="exception_tables">Exception Tables</a>
</h3>
-<div class="doc_text">
+<div>
<p>An exception table contains information about what actions to take when an
exception is thrown in a particular part of a function's code. There is one
@@ -611,12 +609,14 @@
</div>
+</div>
+
<!-- ======================================================================= -->
<h2>
<a name="todo">ToDo</a>
</h2>
-<div class="doc_text">
+<div>
<ol>