aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2010-08-18 20:16:39 +0000
committerDan Gohman <gohman@apple.com>2010-08-18 20:16:39 +0000
commite16068240e21650becf9b47a4dc2284531397696 (patch)
treef17b1f932dd56fe4004a0fed9fd90a8d3e578ce9 /include
parentcf16bea74e3a6f84af914520562e9f9c5dfa0fad (diff)
downloadexternal_llvm-e16068240e21650becf9b47a4dc2284531397696.zip
external_llvm-e16068240e21650becf9b47a4dc2284531397696.tar.gz
external_llvm-e16068240e21650becf9b47a4dc2284531397696.tar.bz2
Introduce a ScopedFatalErrorHandler class to make it easy to register
fatal error handlers which automatically get unregistered at the end of a scope. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111398 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/llvm/Support/ErrorHandling.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/include/llvm/Support/ErrorHandling.h b/include/llvm/Support/ErrorHandling.h
index ffcb482..9854657 100644
--- a/include/llvm/Support/ErrorHandling.h
+++ b/include/llvm/Support/ErrorHandling.h
@@ -52,6 +52,18 @@ namespace llvm {
/// llvm_stop_multithreaded().
void remove_fatal_error_handler();
+ /// ScopedFatalErrorHandler - This is a simple helper class which just
+ /// calls install_fatal_error_handler in its constructor and
+ /// remove_fatal_error_handler in its destructor.
+ struct ScopedFatalErrorHandler {
+ explicit ScopedFatalErrorHandler(fatal_error_handler_t handler,
+ void *user_data = 0) {
+ install_fatal_error_handler(handler, user_data);
+ }
+
+ ~ScopedFatalErrorHandler() { remove_fatal_error_handler(); }
+ };
+
/// Reports a serious error, calling any installed error handler. These
/// functions are intended to be used for error conditions which are outside
/// the control of the compiler (I/O errors, invalid user input, etc.)