llvm-project/llvm/lib/LTO
Teresa Johnson 791c98e4c8 [ThinLTO] Remove dead and dropped symbol declarations when possible
Summary:
Removing the dropped symbols will prevent indirect call promotion in the
ThinLTO Backend from adding a new reference to a symbol, which can
result in linker unsats. This can happen when we compile with a sample
profile collected from one binary by used for another, which may have
profiled targets that aren't used in the new binary.

Note that until dropDeadSymbols handles variables and aliases (in
progress), we may not be able to remove the declaration and can still
have an issue.

Reviewers: grimar, davidxl

Subscribers: mehdi_amini, inglorion, llvm-commits, eraman

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

llvm-svn: 324299
2018-02-06 00:43:39 +00:00
..
CMakeLists.txt Support: Add a VCSRevision.h header file. 2017-04-13 01:26:12 +00:00
Caching.cpp LTO: clarify why we need to gracefully handle sys::fs::rename failures 2017-11-16 01:16:52 +00:00
LLVMBuild.txt Another try to commit 323321 (aggressive instruction combine). 2018-01-25 12:06:32 +00:00
LTO.cpp LTO: Also include dso-local bit for calls in ThinLTO cache key. 2018-02-05 23:46:32 +00:00
LTOBackend.cpp [ThinLTO] Remove dead and dropped symbol declarations when possible 2018-02-06 00:43:39 +00:00
LTOCodeGenerator.cpp Fix more inconsistent line endings. NFC. 2017-12-18 19:46:56 +00:00
LTOModule.cpp Introduce errorToBool() helper and use it. 2018-01-23 19:03:13 +00:00
ThinLTOCodeGenerator.cpp [ThinLTO] - Stop internalizing and drop non-prevailing symbols. 2018-01-29 08:03:30 +00:00
UpdateCompilerUsed.cpp Remove redundant includes from lib/LTO. 2017-12-13 21:30:53 +00:00