aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorLouis Dionne <ldionne@apple.com>2019-10-01 09:34:58 -0400
committerLouis Dionne <ldionne@apple.com>2020-10-19 11:35:01 -0400
commit9b40ee8eb0c194f4b2787801ac6f9ef8fc1b8f46 (patch)
treec97fb7e38fe4ed437d919f23f469a66b38c48b77 /clang/lib/Frontend/CompilerInvocation.cpp
parentb20918997ae5078b6053b04dd7309af52db6ae99 (diff)
downloadllvm-9b40ee8eb0c194f4b2787801ac6f9ef8fc1b8f46.zip
llvm-9b40ee8eb0c194f4b2787801ac6f9ef8fc1b8f46.tar.gz
llvm-9b40ee8eb0c194f4b2787801ac6f9ef8fc1b8f46.tar.bz2
[libc++] Define new/delete in libc++abi only by default
Previously, we would define new/delete in both libc++ and libc++abi. Not only does this cause code bloat, but also it's technically an ODR violation since we don't know which operator will be selected. Furthermore, since those are weak definitions, we should strive to have as few of them as possible (to improve load times). My preferred choice would have been to put the operators in libc++ only by default, however that would create a circular dependency between libc++ and libc++abi, which GNU linkers don't handle. Folks who want to ship new/delete in libc++ instead of libc++abi are free to do so by turning on LIBCXX_ENABLE_NEW_DELETE_DEFINITIONS at CMake configure time. On Apple platforms, this shouldn't be an ABI break because we re-export the new/delete symbols from libc++abi. This change actually makes libc++ behave closer to the system libc++ shipped on Apple platforms. On other platforms, this is an ABI break for people linking against libc++ but not libc++abi. However, vendors have been consulted in D68269 and no objection was raised. Furthermore, the definitions can be controlled to appear in libc++ instead with the CMake option. Differential Revision: https://reviews.llvm.org/D68269
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions