diff options
| author | Reid Kleckner <reid@kleckner.net> | 2015-02-11 01:23:16 +0000 |
|---|---|---|
| committer | Reid Kleckner <reid@kleckner.net> | 2015-02-11 01:23:16 +0000 |
| commit | 96d011315aa01de179897eaf4e7baeddc5de1cda (patch) | |
| tree | ccced202122ff25d6362be653140bfe079ab5925 /llvm/docs | |
| parent | 58e985c2db3045f1416520212108f93c8c257b18 (diff) | |
| download | bcm5719-llvm-96d011315aa01de179897eaf4e7baeddc5de1cda.tar.gz bcm5719-llvm-96d011315aa01de179897eaf4e7baeddc5de1cda.zip | |
Don't promote asynch EH invokes of nounwind functions to calls
If the landingpad of the invoke is using a personality function that
catches asynch exceptions, then it can catch a trap.
Also add some landingpads to invalid LLVM IR test cases that lack them.
Over-the-shoulder reviewed by David Majnemer.
llvm-svn: 228782
Diffstat (limited to 'llvm/docs')
| -rw-r--r-- | llvm/docs/LangRef.rst | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/llvm/docs/LangRef.rst b/llvm/docs/LangRef.rst index f086fbe3e0b..f7b865d0de0 100644 --- a/llvm/docs/LangRef.rst +++ b/llvm/docs/LangRef.rst @@ -1236,9 +1236,12 @@ example: normally. This produces undefined behavior at runtime if the function ever does dynamically return. ``nounwind`` - This function attribute indicates that the function never returns - with an unwind or exceptional control flow. If the function does - unwind, its runtime behavior is undefined. + This function attribute indicates that the function never raises an + exception. If the function does raise an exception, its runtime + behavior is undefined. However, functions marked nounwind may still + trap or generate asynchronous exceptions. Exception handling schemes + that are recognized by LLVM to handle asynchronous exceptions, such + as SEH, will still provide their implementation defined semantics. ``optnone`` This function attribute indicates that the function is not optimized by any optimization or code generator passes with the |

