1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 04:02:41 +01:00
llvm-mirror/include/llvm/Transforms
Evgeniy Stepanov a340589458 [asan] Fix dead stripping of globals on Linux.
Use a combination of !associated, comdat, @llvm.compiler.used and
custom sections to allow dead stripping of globals and their asan
metadata. Sometimes.

Currently this works on LLD, which supports SHF_LINK_ORDER with
sh_link pointing to the associated section.

This also works on BFD, which seems to treat comdats as
all-or-nothing with respect to linker GC. There is a weird quirk
where the "first" global in each link is never GC-ed because of the
section symbols.

At this moment it does not work on Gold (as in the globals are never
stripped).

This is a re-land of r298158 rebased on D31358. This time,
asan.module_ctor is put in a comdat as well to avoid quadratic
behavior in Gold.

llvm-svn: 299697
2017-04-06 19:55:17 +00:00
..
InstCombine
IPO IPO: Const correctness for summaries passed into passes. 2017-03-22 18:22:59 +00:00
Scalar NewGVN: This patch makes memory congruence work for all types of 2017-04-06 18:52:50 +00:00
Utils [asan] Fix dead stripping of globals on Linux. 2017-04-06 19:55:17 +00:00
Vectorize [PM] Separate the LoopAnalysisManager from the LoopPassManager and move 2017-01-11 09:43:56 +00:00
Coroutines.h
GCOVProfiler.h
InstrProfiling.h [PGO] Memory intrinsic calls optimization based on profiled size 2017-04-04 16:42:20 +00:00
Instrumentation.h [PGO] Memory intrinsic calls optimization based on profiled size 2017-04-04 16:42:20 +00:00
IPO.h [ThinLTO] Add support for emitting minimized bitcode for thin link 2017-03-23 19:47:39 +00:00
ObjCARC.h
PGOInstrumentation.h [PGO] Memory intrinsic calls optimization based on profiled size 2017-04-04 16:42:20 +00:00
SampleProfile.h
Scalar.h Split the SimplifyCFG pass into two variants. 2017-03-26 06:44:08 +00:00
Vectorize.h