diff options
author | Alex Bradbury <asb@lowrisc.org> | 2017-08-18 06:45:34 +0000 |
---|---|---|
committer | Alex Bradbury <asb@lowrisc.org> | 2017-08-18 06:45:34 +0000 |
commit | b24452bf84bd2092b38b853a04819b6142e9c836 (patch) | |
tree | 6b74211415b530d06256a10bc6777f714b8d3475 /docs | |
parent | d8824ebc5388c234c6f0644ba241fc878ab92f0a (diff) | |
download | llvm-b24452bf84bd2092b38b853a04819b6142e9c836.tar.gz |
Refine report_fatal_error guidance after post-commit review
Use text suggested by Justin Bogner in post-commit review of r311146
<http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20170814/479898.html>,
which makes it clear that report_fatal_error shouldn't be used when there is a
practicable alternative. Also make this clearer in CodingStandards.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@311147 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs')
-rw-r--r-- | docs/CodingStandards.rst | 7 | ||||
-rw-r--r-- | docs/ProgrammersManual.rst | 11 |
2 files changed, 10 insertions, 8 deletions
diff --git a/docs/CodingStandards.rst b/docs/CodingStandards.rst index 5ca22799191..66e0c968f3f 100644 --- a/docs/CodingStandards.rst +++ b/docs/CodingStandards.rst @@ -1233,9 +1233,10 @@ code for this branch. If the compiler does not support this, it will fall back to the "abort" implementation. Neither assertions or ``llvm_unreachable`` will abort the program on a release -build. If the error condition can be triggered by user input, then the -recoverable error mechanism described in :doc:`ProgrammersManual` or -``report_fatal_error`` should be used instead. +build. If the error condition can be triggered by user input then the +recoverable error mechanism described in :doc:`ProgrammersManual` should be +used instead. In cases where this is not practical, ``report_fatal_error`` may +be used. Another issue is that values used only by assertions will produce an "unused value" warning when assertions are disabled. For example, this code will warn: diff --git a/docs/ProgrammersManual.rst b/docs/ProgrammersManual.rst index 6ae72be426c..d1ee80a7b8a 100644 --- a/docs/ProgrammersManual.rst +++ b/docs/ProgrammersManual.rst @@ -443,11 +443,12 @@ recovery. .. note:: - Ideally, the error handling approach described in this section would be - used throughout LLVM. However, this is not yet the case. For - non-programmatic errors where the ``Error`` scheme cannot easily be - applied, ``report_fatal_error`` should be used to call any installed error - handler and then terminate the program. + While it would be ideal to use this error handling scheme throughout + LLVM, there are places where this hasn't been practical to apply. In + situations where you absolutely must emit a non-programmatic error and + the ``Error`` model isn't workable you can call ``report_fatal_error``, + which will call installed error handlers, print a message, and exit the + program. Recoverable errors are modeled using LLVM's ``Error`` scheme. This scheme represents errors using function return values, similar to classic C integer |