Start converting to new error handling API.
[oota-llvm.git] / include / llvm / Support / ErrorHandling.h
index dff5dd86368332e8fad9978b7fc954b55c18cdad..a65fbe697420406b17ae96580f1160786648eab8 100644 (file)
 #include <string>
 
 namespace llvm {
-  // An error handler callback.
+  /// An error handler callback.
   typedef void (*llvm_error_handler_t)(const std::string& reason);
 
-  // Installs a new error handler: this function will be called whenever a
-  // serious error is encountered by LLVM.
-  // If you are using llvm_start_multithreaded, you should register the handler
-  // before doing that.
-  //
-  // If no error handler is installed the default is to print the error message
-  // to stderr, and call exit(1).
-  // If an error handler is installed then it is the handler's responsibility to
-  // log the message, it will no longer be printed to stderr.
-  // If the error handler returns, then exit(1) will be called.
+  /// Installs a new error handler: this function will be called whenever a
+  /// serious error is encountered by LLVM.
+  /// If you are using llvm_start_multithreaded, you should register the handler
+  /// before doing that.
+  ///
+  /// If no error handler is installed the default is to print the error message
+  /// to stderr, and call exit(1).
+  /// If an error handler is installed then it is the handler's responsibility
+  /// to log the message, it will no longer be printed to stderr.
+  /// If the error handler returns, then exit(1) will be called.
   void llvm_install_error_handler(llvm_error_handler_t handler);
 
-  // Restores default error handling behaviour.
-  // This must not be called between llvm_start_multithreaded() and
-  // llvm_stop_multithreaded().
+  /// Restores default error handling behaviour.
+  /// This must not be called between llvm_start_multithreaded() and
+  /// llvm_stop_multithreaded().
   void llvm_remove_error_handler(void);
 
-  // Reports a serious error, calling any installed error handler.
-  // If no error handler is installed the default is to print the message to
+  /// Reports a serious error, calling any installed error handler.
+  /// If no error handler is installed the default is to print the message to
   void llvm_report_error(const std::string &reason) NORETURN;
 
-  // This function calls abort().
-  // Call this after assert(0), so that compiler knows the path is not
-  // reachable.
+  /// This function calls abort().
+  /// Call this after assert(0), so that compiler knows the path is not
+  /// reachable.
   void llvm_unreachable(void) NORETURN;
 }
 
+#define LLVM_UNREACHABLE(msg) do { assert(0 && msg); llvm_unreachable(); } while(0);
+
 #endif