diff options
author | Reid Kleckner <reid@kleckner.net> | 2015-03-03 17:41:09 +0000 |
---|---|---|
committer | Reid Kleckner <reid@kleckner.net> | 2015-03-03 17:41:09 +0000 |
commit | 9c28314a68b3abcf12698f0b68ebbd8adcef5d54 (patch) | |
tree | d09b9532319dc36762eea5b8b70881bc47985fad /docs | |
parent | f1de1adc82c69894fcc8178c689269215c6f2710 (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.rst | 12 |
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 |