18#include "llvm/Config/config.h" 
   19#include "llvm/Config/llvm-config.h"  
   34#if defined(HAVE_UNISTD_H) 
   50#if LLVM_ENABLE_THREADS == 1 
   62static std::mutex ErrorHandlerMutex;
 
   63static std::mutex BadAllocErrorHandlerMutex;
 
   79#if LLVM_ENABLE_THREADS == 1 
   80  std::lock_guard<std::mutex> Lock(ErrorHandlerMutex);
 
 
   88#if LLVM_ENABLE_THREADS == 1 
   89  std::lock_guard<std::mutex> Lock(ErrorHandlerMutex);
 
 
  105  void* handlerData = 
nullptr;
 
  109#if LLVM_ENABLE_THREADS == 1 
  110    std::lock_guard<std::mutex> Lock(ErrorHandlerMutex);
 
  117    handler(handlerData, Reason.
str().c_str(), GenCrashDiag);
 
  124    OS << 
"LLVM ERROR: " << Reason << 
"\n";
 
 
  161#if LLVM_ENABLE_THREADS == 1 
  162  std::lock_guard<std::mutex> Lock(BadAllocErrorHandlerMutex);
 
  165         "Bad alloc error handler already registered!\n");
 
 
  171#if LLVM_ENABLE_THREADS == 1 
  172  std::lock_guard<std::mutex> Lock(BadAllocErrorHandlerMutex);
 
 
  180  void *HandlerData = 
nullptr;
 
  184#if LLVM_ENABLE_THREADS == 1 
  185    std::lock_guard<std::mutex> Lock(BadAllocErrorHandlerMutex);
 
  192    Handler(HandlerData, Reason, GenCrashDiag);
 
  196#ifdef LLVM_ENABLE_EXCEPTIONS 
  198  throw std::bad_alloc();
 
  202  const char *OOMMessage = 
"LLVM ERROR: out of memory\n";
 
  203  const char *Newline = 
"\n";
 
 
  211#ifdef LLVM_ENABLE_EXCEPTIONS 
  229         "new-handler already installed");
 
 
  239    dbgs() << msg << 
"\n";
 
  240  dbgs() << 
"UNREACHABLE executed";
 
  242    dbgs() << 
" at " << 
file << 
":" << line;
 
  245#ifdef LLVM_BUILTIN_UNREACHABLE 
  248  LLVM_BUILTIN_UNREACHABLE;
 
 
  253                                 bool gen_crash_diag) {
 
 
  270#define WIN32_NO_STATUS 
  272#undef WIN32_NO_STATUS 
  288extern "C" NTSYSAPI NTSTATUS NTAPI RtlGetLastNtStatus();
 
  294  unsigned EV = ::GetLastError();
 
  298  if (EV == ERROR_ACCESS_DENIED) {
 
  299    llvm::errc code = RtlGetLastNtStatus() == STATUS_DELETE_PENDING
 
  308#define MAP_ERR_TO_COND(x, y)                                                  \ 
  310    return make_error_code(errc::y) 
  315    MAP_ERR_TO_COND(ERROR_ALREADY_EXISTS, 
file_exists);
 
  324    MAP_ERR_TO_COND(ERROR_CANTOPEN, 
io_error);
 
  325    MAP_ERR_TO_COND(ERROR_CANTREAD, 
io_error);
 
  326    MAP_ERR_TO_COND(ERROR_CANTWRITE, 
io_error);
 
  349    MAP_ERR_TO_COND(ERROR_OPEN_FAILED, 
io_error);
 
  353    MAP_ERR_TO_COND(ERROR_READ_FAULT, 
io_error);
 
  356    MAP_ERR_TO_COND(ERROR_SEEK, 
io_error);
 
  359    MAP_ERR_TO_COND(ERROR_WRITE_FAULT, 
io_error);
 
  369    return std::error_code(EV, std::system_category());
 
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
 
#define LLVM_EXTENSION
LLVM_EXTENSION - Support compilers where we have a keyword to suppress pedantic diagnostics.
 
static fatal_error_handler_t ErrorHandler
 
static void out_of_memory_new_handler()
 
static bool write_retry(int fd, const char *buf, size_t count)
 
static void bindingsErrorHandler(void *user_data, const char *reason, bool gen_crash_diag)
 
static fatal_error_handler_t BadAllocErrorHandler
 
static void * BadAllocErrorHandlerUserData
 
static void * ErrorHandlerUserData
 
Provides a library for accessing information about this process and other processes on the operating ...
 
dot regions Print regions of function to dot file(with no function bodies)"
 
This file defines the SmallVector class.
 
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
 
StringRef - Represent a constant reference to a string, i.e.
 
constexpr size_t size() const
size - Get the string size.
 
constexpr const char * data() const
data - Get a pointer to the start of the string (which may not be null terminated).
 
Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...
 
LLVM_ABI std::string str() const
Return the twine contents as a std::string.
 
A raw_ostream that writes to an SmallVector or SmallString.
 
StringRef str() const
Return a StringRef for the vector contents.
 
void LLVMResetFatalErrorHandler()
Reset the fatal error handler.
 
void(* LLVMFatalErrorHandler)(const char *Reason)
 
void LLVMInstallFatalErrorHandler(LLVMFatalErrorHandler Handler)
Install a fatal error handler.
 
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
 
decltype(auto) RetryAfterSignal(const FailT &Fail, const Fun &F, const Args &... As)
 
LLVM_ABI void RunInterruptHandlers()
This function runs all the registered interrupt handlers, including the removal of files registered b...
 
This is an optimization pass for GlobalISel generic memory operations.
 
LLVM_ABI std::error_code mapLastWindowsError()
 
std::error_code make_error_code(BitcodeError E)
 
LLVM_ABI void install_fatal_error_handler(fatal_error_handler_t handler, void *user_data=nullptr)
install_fatal_error_handler - Installs a new error handler to be used whenever a serious (non-recover...
 
LLVM_ABI void install_bad_alloc_error_handler(fatal_error_handler_t handler, void *user_data=nullptr)
Installs a new bad alloc error handler that should be used whenever a bad alloc error,...
 
LLVM_ABI void remove_bad_alloc_error_handler()
Restores default bad alloc error handling behavior.
 
LLVM_ABI void reportFatalInternalError(Error Err)
Report a fatal error that indicates a bug in LLVM.
 
@ no_such_file_or_directory
 
@ device_or_resource_busy
 
@ resource_unavailable_try_again
 
LLVM_ABI Error write(MCStreamer &Out, ArrayRef< std::string > Inputs, OnCuIndexOverflow OverflowOptValue)
 
LLVM_ABI raw_ostream & dbgs()
dbgs() - This returns a reference to a raw_ostream for debugging messages.
 
LLVM_ABI void report_fatal_error(Error Err, bool gen_crash_diag=true)
 
LLVM_ABI void install_out_of_memory_new_handler()
 
LLVM_ABI void llvm_unreachable_internal(const char *msg=nullptr, const char *file=nullptr, unsigned line=0)
This function calls abort(), and prints the optional message to stderr.
 
void(*)(void *user_data, const char *reason, bool gen_crash_diag) fatal_error_handler_t
An error handler callback.
 
auto count(R &&Range, const E &Element)
Wrapper function around std::count to count the number of times an element Element occurs in the give...
 
LLVM_ABI void remove_fatal_error_handler()
Restores default error handling behaviour.
 
LLVM_ABI std::error_code mapWindowsError(unsigned EV)
 
LLVM_ABI void report_bad_alloc_error(const char *Reason, bool GenCrashDiag=true)
Reports a bad alloc error, calling any user defined bad alloc error handler.
 
LLVM_ABI void reportFatalUsageError(Error Err)
Report a fatal error that does not indicate a bug in LLVM.