diff options
author | Pirama Arumuga Nainar <pirama@google.com> | 2015-05-06 11:46:36 -0700 |
---|---|---|
committer | Pirama Arumuga Nainar <pirama@google.com> | 2015-05-18 10:52:30 -0700 |
commit | 2c3e0051c31c3f5b2328b447eadf1cf9c4427442 (patch) | |
tree | c0104029af14e9f47c2ef58ca60e6137691f3c9b /docs/ExceptionHandling.rst | |
parent | e1bc145815f4334641be19f1c45ecf85d25b6e5a (diff) | |
download | external_llvm-2c3e0051c31c3f5b2328b447eadf1cf9c4427442.zip external_llvm-2c3e0051c31c3f5b2328b447eadf1cf9c4427442.tar.gz external_llvm-2c3e0051c31c3f5b2328b447eadf1cf9c4427442.tar.bz2 |
Update aosp/master LLVM for rebase to r235153
Change-Id: I9bf53792f9fc30570e81a8d80d296c681d005ea7
(cherry picked from commit 0c7f116bb6950ef819323d855415b2f2b0aad987)
Diffstat (limited to 'docs/ExceptionHandling.rst')
-rw-r--r-- | docs/ExceptionHandling.rst | 40 |
1 files changed, 16 insertions, 24 deletions
diff --git a/docs/ExceptionHandling.rst b/docs/ExceptionHandling.rst index 21de19b..72ed78a 100644 --- a/docs/ExceptionHandling.rst +++ b/docs/ExceptionHandling.rst @@ -519,37 +519,29 @@ action. A code of ``i32 1`` indicates a catch action, which expects three additional arguments. Different EH schemes give different meanings to the three arguments, -but the first argument indicates whether the catch should fire, the second is a -pointer to stack object where the exception object should be stored, and the -third is the code to run to catch the exception. +but the first argument indicates whether the catch should fire, the second is +the frameescape index of the exception object, and the third is the code to run +to catch the exception. For Windows C++ exception handling, the first argument for a catch handler is a -pointer to the RTTI type descriptor for the object to catch. The third argument -is a pointer to a function implementing the catch. This function returns the -address of the basic block where execution should resume after handling the -exception. +pointer to the RTTI type descriptor for the object to catch. The second +argument is an index into the argument list of the ``llvm.frameescape`` call in +the main function. The exception object will be copied into the provided stack +object. If the exception object is not required, this argument should be -1. +The third argument is a pointer to a function implementing the catch. This +function returns the address of the basic block where execution should resume +after handling the exception. For Windows SEH, the first argument is a pointer to the filter function, which indicates if the exception should be caught or not. The second argument is -typically null. The third argument is the address of a basic block where the -exception will be handled. In other words, catch handlers are not outlined in -SEH. After running cleanups, execution immediately resumes at this PC. +typically negative one. The third argument is the address of a basic block +where the exception will be handled. In other words, catch handlers are not +outlined in SEH. After running cleanups, execution immediately resumes at this +PC. In order to preserve the structure of the CFG, a call to '``llvm.eh.actions``' -must be followed by an ':ref:`indirectbr <i_indirectbr>`' instruction that jumps -to the result of the intrinsic call. - -``llvm.eh.unwindhelp`` ----------------------- - -.. code-block:: llvm - - void @llvm.eh.unwindhelp(i8*) - -This intrinsic designates the provided static alloca as the unwind help object. -This object is used by Windows native exception handling on non-x86 platforms -where xdata unwind information is used. It is typically an 8 byte chunk of -memory treated as two 32-bit integers. +must be followed by an ':ref:`indirectbr <i_indirectbr>`' instruction that +jumps to the result of the intrinsic call. SJLJ Intrinsics |