llvm-project/clang/lib
David Majnemer 3843a05edf MS ABI: Eliminate Duplicate Strings
COFF doesn't have mergeable sections so LLVM/clang's normal tactics for
string deduplication will not have any effect.

To remedy this we place each string inside it's own section and mark
the section as IMAGE_COMDAT_SELECT_ANY.  However, we can only do this if the
string has an external name that we can generate from it's contents.

To be compatible with MSVC, we must use their scheme.  Otherwise identical
strings in translation units from clang may not be deduplicated with
translation units in MSVC.

This fixes PR18248.

N.B. We will not attempt to do anything with a string literal which is not of
type 'char' or 'wchar_t' because their compiler does not support unicode
string literals as of this date.

llvm-svn: 204562
2014-03-23 17:47:16 +00:00
..
ARCMigrate remove a bunch of unused private methods 2014-03-23 17:12:37 +00:00
AST MS ABI: Eliminate Duplicate Strings 2014-03-23 17:47:16 +00:00
ASTMatchers Remove unused typedef as pointed out by a GCC warning. 2014-03-14 10:15:44 +00:00
Analysis remove a bunch of unused private methods 2014-03-23 17:12:37 +00:00
Basic [OPENMP] parsing of clause 'safelen' (for directive 'omp simd') 2014-03-21 04:51:18 +00:00
CodeGen MS ABI: Eliminate Duplicate Strings 2014-03-23 17:47:16 +00:00
Driver Kill deprecated -fbounds-checking flag 2014-03-21 07:15:47 +00:00
Edit [CMake] Use LINK_LIBS instead of target_link_libraries(). 2014-02-26 06:41:29 +00:00
Format clang-format: Add flag for removing empty lines at the start of blocks. 2014-03-21 13:43:14 +00:00
Frontend [msan] -fsanitize-memory-track-origins=[level] flag and docs. 2014-03-20 14:58:36 +00:00
FrontendTool Replace OwningPtr with std::unique_ptr. 2014-03-07 20:03:18 +00:00
Headers MS intrinsics: __interlockedbittestandset(64) (PR19054) 2014-03-13 17:05:09 +00:00
Index remove a bunch of unused private methods 2014-03-23 17:12:37 +00:00
Lex Prevent lookup of subframework modules by name without parent framework 2014-03-20 18:27:26 +00:00
Parse [OPENMP] parsing of clause 'safelen' (for directive 'omp simd') 2014-03-21 04:51:18 +00:00
Rewrite [C++11] Replacing FunctionProtoType iterators param_type_begin() and param_type_end() with iterator_range param_types(). Updating all of the usages of the iterators with range-based for loops. 2014-03-17 15:23:01 +00:00
Sema remove a bunch of unused private methods 2014-03-23 17:12:37 +00:00
Serialization If a template instantation introduces a name into a namespace, we need to write 2014-03-23 02:30:01 +00:00
StaticAnalyzer remove a bunch of unused private methods 2014-03-23 17:12:37 +00:00
Tooling Tooling: Move heavyweight vectors around instead of copying. 2014-03-20 12:48:36 +00:00
CMakeLists.txt Fix dependencies now that the ARC migrator depends on the static analyzer. 2013-08-22 15:50:02 +00:00
Makefile Fix dependencies now that the ARC migrator depends on the static analyzer. 2013-08-22 15:50:02 +00:00