llvm-project/clang/test/Lexer
Reid Kleckner 7ffc3fbb2f C++14: Disable sized deallocation by default due to ABI breakage
There are no widely deployed standard libraries providing sized
deallocation functions, so we have to punt and ask the user if they want
us to use sized deallocation. In the future, when such libraries are
deployed, we can teach the driver to detect them and enable this
feature.

N3536 claimed that a weak thunk from sized to unsized deallocation could
be emitted to avoid breaking backwards compatibility with standard
libraries not providing sized deallocation. However, this approach and
other variations don't work in practice.

With the weak function approach, the thunk has to have default
visibility in order to ensure that it is overridden by other DSOs
providing sized deallocation. Weak, default visibility symbols are
particularly expensive on MachO, so John McCall was considering
disabling this feature by default on Darwin. It also changes behavior
ELF linking behavior, causing certain otherwise unreferenced object
files from an archive to be pulled into the link.

Our second approach was to use an extern_weak function declaration and
do an inline conditional branch at the deletion call site. This doesn't
work because extern_weak only works on MachO if you have some archive
providing the default value of the extern_weak symbol. Arranging to
provide such an archive has the same challenges as providing the symbol
in the standard library. Not to mention that extern_weak doesn't really
work on COFF.

Reviewers: rsmith, rjmccall

Differential Revision: http://reviews.llvm.org/D8467

llvm-svn: 232788
2015-03-20 00:31:07 +00:00
..
Inputs Lex: reduce buffer size, add a test 2014-03-12 02:26:08 +00:00
11-27-2007-FloatLiterals.c
badstring_in_if0.c Migrate tests to -verify 2013-01-26 17:11:39 +00:00
bcpl-escaped-newline.c Add driver flags -ftrigraphs, -fno-trigraphs. 2014-12-23 22:32:37 +00:00
block_cmt_end.c Add driver flags -ftrigraphs, -fno-trigraphs. 2014-12-23 22:32:37 +00:00
builtin_redef.c Add 'not' to commands that are expected to fail. 2013-07-04 16:16:58 +00:00
c90.c PR15067 (again): Don't warn about UCNs in C90 if we're raw-lexing. 2013-01-28 17:49:02 +00:00
char-escapes.c
char-literal-encoding-error.c
char-literal.cpp Better diagnostics for string initialization. 2013-05-15 11:03:04 +00:00
comment-escape.c
conflict-marker.c Lex: Don't crash if both conflict markers are on the same line 2014-12-14 04:53:11 +00:00
constants.c Add driver flags -ftrigraphs, -fno-trigraphs. 2014-12-23 22:32:37 +00:00
counter.c FileCheck'ize test 2013-01-24 23:44:04 +00:00
cross-windows-on-linux-default.cpp Lexer: split test into separate files 2014-03-12 02:53:12 +00:00
cross-windows-on-linux.cpp Fixing some comments in this test. No functional changes. 2014-05-19 14:52:09 +00:00
cxx-features.cpp C++14: Disable sized deallocation by default due to ABI breakage 2015-03-20 00:31:07 +00:00
cxx0x_keyword_as_cxx98.cpp
cxx0x_raw_string_delim_length.cpp
cxx0x_raw_string_directives.cpp Add raw string literal versus C preprocessor test, suggested by James Dennett. 2013-01-16 21:43:09 +00:00
cxx0x_raw_string_unterminated.cpp Add 'not' to commands that are expected to fail. 2013-07-04 16:16:58 +00:00
cxx1y_binary_literal.cpp Implement C++1y digit separator proposal (' as a digit separator). This is not 2013-09-26 03:33:06 +00:00
cxx1y_digit_separators.cpp Add some missing checks for C++1y digit separators that don't in fact separate 2014-04-22 23:50:25 +00:00
cxx1z-trigraphs.cpp Add driver flags -ftrigraphs, -fno-trigraphs. 2014-12-23 22:32:37 +00:00
digraph.c
dollar-idents.c Fix FileCheck --check-prefix lines. 2013-08-12 12:51:05 +00:00
eof-char.c
eof-file.c
eof-string.c
escape_newline.c Add driver flags -ftrigraphs, -fno-trigraphs. 2014-12-23 22:32:37 +00:00
gnu-flags.c Add specific warning flags for GNU ext in lexer. 2013-09-05 00:02:30 +00:00
has_extension.c Add support for has_feature(cxx_alignof) and has_feature(c_alignof). 2014-12-03 01:25:49 +00:00
has_extension_cxx.cpp Mark lambda init-captures as complete. 2013-09-28 04:37:56 +00:00
has_feature_address_sanitizer.cpp
has_feature_c1x.c Add support for has_feature(cxx_alignof) and has_feature(c_alignof). 2014-12-03 01:25:49 +00:00
has_feature_cxx0x.cpp Add support for has_feature(cxx_alignof) and has_feature(c_alignof). 2014-12-03 01:25:49 +00:00
has_feature_exceptions.cpp Lex: Fix __has_feature(cxx_exceptions) for objective C++ 2014-04-16 02:56:48 +00:00
has_feature_memory_sanitizer.cpp Add __has_feature(memory_sanitizer). 2012-12-20 12:03:13 +00:00
has_feature_modules.m
has_feature_objc_arc.m
has_feature_rtti.cpp
has_feature_thread_sanitizer.cpp
has_feature_type_traits.cpp Added a __has_feature() for 'is_constructible' 2014-03-18 14:13:10 +00:00
header.cpp Relax header guard mismatch warning with edit distance heuristic. 2013-10-12 23:17:37 +00:00
hexfloat.cpp Revert "Don't require -re suffix on -verify directives with regexes." 2013-12-14 01:07:05 +00:00
keywords_test.c Add a test to distinguish between reserved tokens and normal identifiers. 2014-04-11 20:55:19 +00:00
keywords_test.cpp Clean up some existing keyword tests in the test/Lexer directory by using the 2014-05-07 01:58:02 +00:00
long-long.cpp
ms-compatibility.c MSVC: A wide string literal from L#macro_arg in a macro 2014-12-15 04:18:11 +00:00
ms-extensions.c Make MS i128 suffix test from r211446 more robust 2014-06-21 23:32:05 +00:00
ms-extensions.cpp
msdos-cpm-eof.c
multiple-include.c
newline-eof-c++98-compat.cpp Respect -Wnewline-eof even in C++11 mode. 2013-08-23 15:42:01 +00:00
newline-eof.c Revise -Wnewline-eof test per feedback from Dmitri. 2013-08-23 16:12:49 +00:00
numeric-literal-trash.c
pragma-mark.c
pragma-message.c Implemented #pragma GCC warning/error in the same mould as #pragma message. 2013-04-17 16:16:16 +00:00
pragma-message2.c Keep the parentheses in #pragma message (partial revert of r179771). 2013-04-19 17:13:17 +00:00
pragma-operators.cpp Add -fuse-line-directive flag to control usage of #line with -E 2015-02-26 00:17:25 +00:00
pragma-region.c
preamble.c
rdar-8914293.c
rdr-6096838-2.c
rdr-6096838.c
string-literal-encoding.c
string-literal-errors.cpp Don't destroy MacroInfos if we find the macro definition is invalid; it'll get 2014-08-03 23:41:04 +00:00
string_concat.cpp When lexing in C11 mode, accept unicode character and string literals, per C11 2013-03-09 23:56:02 +00:00
token-concat.c FileCheck'ize and merge tests 2013-01-28 20:40:50 +00:00
token-concat.cpp
unicode-strings.c Add -Wc99-compat warning for C11 unicode string and character literals. 2013-03-11 18:01:42 +00:00
unicode.c Lexer: Don't warn about Unicode in preprocessor directives. 2013-01-31 19:48:48 +00:00
unknown-char.c Migrate tests to -verify 2013-01-26 17:11:39 +00:00
utf-16.c
utf-16.c.txt
utf8-char-literal.cpp [c++1z] Support for u8 character literals. 2014-11-08 06:08:42 +00:00
utf8-invalid.c Lexer: Don't warn about Unicode in preprocessor directives. 2013-01-31 19:48:48 +00:00
warn-date-time.c Show -Wdate-time in system headers 2014-06-10 06:09:00 +00:00
wchar-signedness.c [Thumb] Clang thinks "char" is signed when using a thumb triple 2014-10-24 11:28:47 +00:00
wchar.c