diff --git a/llvm/lib/Support/MemAlloc.cpp b/llvm/lib/Support/MemAlloc.cpp index 07a26cf26480b..6adc9abd75c5b 100644 --- a/llvm/lib/Support/MemAlloc.cpp +++ b/llvm/lib/Support/MemAlloc.cpp @@ -13,12 +13,15 @@ LLVM_ATTRIBUTE_RETURNS_NONNULL LLVM_ATTRIBUTE_RETURNS_NOALIAS void * llvm::allocate_buffer(size_t Size, size_t Alignment) { - return ::operator new(Size + void *Result = ::operator new(Size, #ifdef __cpp_aligned_new - , - std::align_val_t(Alignment) + std::align_val_t(Alignment), #endif - ); + std::nothrow); + if (Result == nullptr) { + report_bad_alloc_error("Buffer allocation failed"); + } + return Result; } void llvm::deallocate_buffer(void *Ptr, size_t Size, size_t Alignment) {