Report fatal error in the case of out of memory
authorSerge Pavlov <sepavloff@gmail.com>
Sat, 17 Feb 2018 10:21:33 +0000 (10:21 +0000)
committerSerge Pavlov <sepavloff@gmail.com>
Sat, 17 Feb 2018 10:21:33 +0000 (10:21 +0000)
commitd48042efa831f8f9bde7bf88585eb5b02565b718
tree9d2e9412d91fec2591f9a422d451204570460027
parentb51a9bc35854509b9d4b125d232c4ff07ab765f5
Report fatal error in the case of out of memory

This is partial recommit of r325224, reverted in 325227. The relevant
part of original comment is below.

Analysis of fails in the case of out of memory errors can be tricky on
Windows. Such error emerges at the point where memory allocation function
fails, but manifests itself when null pointer is used. These two points
may be distant from each other. Besides, next runs may not exhibit
allocation error.

Usual programming practice does not require checking result of 'operator
new' because it throws 'std::bad_alloc' in the case of allocation error.
However, LLVM is usually built with exceptions turned off, so 'new' can
return null pointer. This change installs custom new handler, which causes
fatal error in the case of out of memory. The handler is installed
automatically prior to call to 'main' during construction of a static
object defined in 'lib/Support/ErrorHandling.cpp'. If the application does
not use this file, the handler may be installed manually by a call to
'llvm::install_out_of_memory_new_handler', declared in
'include/llvm/Support/ErrorHandling.h".

Differential Revision: https://reviews.llvm.org/D43010

llvm-svn: 325426
llvm/include/llvm/Support/ErrorHandling.h
llvm/lib/Support/ErrorHandling.cpp