diff options
author | Dan Gohman <gohman@apple.com> | 2010-08-18 20:16:39 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2010-08-18 20:16:39 +0000 |
commit | 50377a366fc7898b3b37b44420cb3255fd517b76 (patch) | |
tree | 399b3bcc8813ff50286ebacfbe9219816e14b2d7 | |
parent | f4088b022a690c740a15556d7f347a6049a6015e (diff) | |
download | bcm5719-llvm-50377a366fc7898b3b37b44420cb3255fd517b76.tar.gz bcm5719-llvm-50377a366fc7898b3b37b44420cb3255fd517b76.zip |
Introduce a ScopedFatalErrorHandler class to make it easy to register
fatal error handlers which automatically get unregistered at the end
of a scope.
llvm-svn: 111398
-rw-r--r-- | llvm/include/llvm/Support/ErrorHandling.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/llvm/include/llvm/Support/ErrorHandling.h b/llvm/include/llvm/Support/ErrorHandling.h index ffcb482f75c..9854657c756 100644 --- a/llvm/include/llvm/Support/ErrorHandling.h +++ b/llvm/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.) |