diff options
author | Johannes Doerfert <jdoerfert@anl.gov> | 2019-06-27 15:51:40 +0000 |
---|---|---|
committer | Johannes Doerfert <jdoerfert@anl.gov> | 2019-06-27 15:51:40 +0000 |
commit | 3b77583e95236761d8741fd6df375975a8ca5d83 (patch) | |
tree | 62368c6f8dec79ee75d295c2d39c31d41a9646e8 /llvm/docs | |
parent | 7d8274d54d0305b827e87adae4619abd6433043c (diff) | |
download | bcm5719-llvm-3b77583e95236761d8741fd6df375975a8ca5d83.tar.gz bcm5719-llvm-3b77583e95236761d8741fd6df375975a8ca5d83.zip |
[Attr] Add "willreturn" function attribute
This patch introduces a new function attribute, willreturn, to indicate
that a call of this function will either exhibit undefined behavior or
comes back and continues execution at a point in the existing call stack
that includes the current invocation.
This attribute guarantees that the function does not have any endless
loops, endless recursion, or terminating functions like abort or exit.
Patch by Hideto Ueno (@uenoku)
Reviewers: jdoerfert
Subscribers: mehdi_amini, hiraditya, steven_wu, dexonsmith, lebedev.ri, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D62801
llvm-svn: 364555
Diffstat (limited to 'llvm/docs')
-rw-r--r-- | llvm/docs/LangRef.rst | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/docs/LangRef.rst b/llvm/docs/LangRef.rst index ee2f7aade00..14d7d57f19b 100644 --- a/llvm/docs/LangRef.rst +++ b/llvm/docs/LangRef.rst @@ -1475,6 +1475,13 @@ example: This function attribute indicates that the function does not call itself either directly or indirectly down any possible call path. This produces undefined behavior at runtime if the function ever does recurse. +``willreturn`` + This function attribute indicates that a call of this function will + either exhibit undefined behavior or comes back and continues execution + at a point in the existing call stack that includes the current invocation. + Annotated functions may still raise an exception, i.a., ``nounwind`` is not implied. + If an invocation of an annotated function does not return control back + to a point in the call stack, the behavior is undefined. ``nounwind`` This function attribute indicates that the function never raises an exception. If the function does raise an exception, its runtime |