[libc++] Support Microsoft ABI without vcruntime headers
authorShoaib Meenai <smeenai@fb.com>
Mon, 9 Oct 2017 19:25:17 +0000 (19:25 +0000)
committerShoaib Meenai <smeenai@fb.com>
Mon, 9 Oct 2017 19:25:17 +0000 (19:25 +0000)
commit492d7134f3bdd76415d8e7b20a4f1c9a42b85e44
tree27a915541601915c1d3750813fb945ad776f5f6c
parent6ab4d075ff40675af20ffc4124d1dc03609518fe
[libc++] Support Microsoft ABI without vcruntime headers

The vcruntime headers are hairy and clash with both libc++ headers
themselves and other libraries. libc++ normally deals with the clashes
by deferring to the vcruntime headers and silencing its own definitions,
but for clients which don't want to depend on vcruntime headers, it's
desirable to support the opposite, i.e. have libc++ provide its own
definitions.

Certain operator new/delete replacement scenarios are not currently
supported in this mode, which requires some tests to be marked XFAIL.
The added documentation has more details.

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

llvm-svn: 315234
12 files changed:
libcxx/CMakeLists.txt
libcxx/docs/UsingLibcxx.rst
libcxx/include/__config_site.in
libcxx/include/exception
libcxx/include/new
libcxx/src/new.cpp
libcxx/src/support/runtime/exception_msvc.ipp
libcxx/src/support/runtime/exception_pointer_msvc.ipp
libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_array_nothrow_replace.pass.cpp
libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_array_replace.pass.cpp
libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_nothrow_replace.pass.cpp
libcxx/utils/libcxx/test/config.py