diff --git a/llvm/include/llvm/Support/ErrorHandling.h b/llvm/include/llvm/Support/ErrorHandling.h --- a/llvm/include/llvm/Support/ErrorHandling.h +++ b/llvm/include/llvm/Support/ErrorHandling.h @@ -103,8 +103,8 @@ /// Reports a bad alloc error, calling any user defined bad alloc /// error handler. In contrast to the generic 'report_fatal_error' -/// functions, this function is expected to return, e.g. the user -/// defined error handler throws an exception. +/// functions, this function might not terminate, e.g. the user +/// defined error handler throws an exception, but it won't return. /// /// Note: When throwing an exception in the bad alloc handler, make sure that /// the following unwind succeeds, e.g. do not trigger additional allocations @@ -113,7 +113,8 @@ /// If no error handler is installed (default), then a bad_alloc exception /// is thrown, if LLVM is compiled with exception support, otherwise an /// assertion is called. -void report_bad_alloc_error(const char *Reason, bool GenCrashDiag = true); +LLVM_ATTRIBUTE_NORETURN void report_bad_alloc_error(const char *Reason, + bool GenCrashDiag = true); /// This function calls abort(), and prints the optional message to stderr. /// Use the llvm_unreachable macro (that adds location info), instead of