summaryrefslogtreecommitdiffstats
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
commit50377a366fc7898b3b37b44420cb3255fd517b76 (patch)
tree399b3bcc8813ff50286ebacfbe9219816e14b2d7
parentf4088b022a690c740a15556d7f347a6049a6015e (diff)
downloadbcm5719-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.h12
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.)
OpenPOWER on IntegriCloud