summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2015-03-03 17:41:09 +0000
committerReid Kleckner <reid@kleckner.net>2015-03-03 17:41:09 +0000
commit9c28314a68b3abcf12698f0b68ebbd8adcef5d54 (patch)
treed09b9532319dc36762eea5b8b70881bc47985fad /docs
parentf1de1adc82c69894fcc8178c689269215c6f2710 (diff)
Make llvm.eh.begincatch use an outparam
Ultimately, __CxxFrameHandler3 needs us to put a stack offset in a table, and it will take responsibility for copying the exception object into that slot. Modelling the exception object as an SSA value returned by begincatch isn't going to work in general, so make it use an output parameter. Reviewers: andrew.w.kaylor Differential Revision: http://reviews.llvm.org/D7920 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231086 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs')
-rw-r--r--docs/ExceptionHandling.rst12
1 files changed, 6 insertions, 6 deletions
diff --git a/docs/ExceptionHandling.rst b/docs/ExceptionHandling.rst
index 696b50f7e0c..bf93fdaaaf4 100644
--- a/docs/ExceptionHandling.rst
+++ b/docs/ExceptionHandling.rst
@@ -442,7 +442,7 @@ Uses of this intrinsic are generated by the C++ front-end.
.. code-block:: llvm
- i8* @llvm.eh.begincatch(i8* %exn)
+ void @llvm.eh.begincatch(i8* %ehptr, i8* %ehobj)
This intrinsic marks the beginning of catch handling code within the blocks
@@ -450,11 +450,11 @@ following a ``landingpad`` instruction. The exact behavior of this function
depends on the compilation target and the personality function associated
with the ``landingpad`` instruction.
-The argument to this intrinsic is a pointer that was previously extracted from
-the aggregate return value of the ``landingpad`` instruction. The return
-value of the intrinsic is a pointer to the exception object to be used by the
-catch code. This pointer is returned as an ``i8*`` value, but the actual type
-of the object will depend on the exception that was thrown.
+The first argument to this intrinsic is a pointer that was previously extracted
+from the aggregate return value of the ``landingpad`` instruction. The second
+argument to the intrinsic is a pointer to stack space where the exception object
+should be stored. The runtime handles the details of copying the exception
+object into the slot. If the second parameter is null, no copy occurs.
Uses of this intrinsic are generated by the C++ front-end. Many targets will
use implementation-specific functions (such as ``__cxa_begin_catch``) instead