llvm-project/llvm/lib/Linker
Rafael Espindola 370d528a05 Drop comdats from the dst module if they are not selected.
A really unfortunate design of llvm-link and related libraries is that
they operate one module at a time.

This means they can copy a GV to the destination module that should not
be there in the final result because a later bitcode file takes
precedence.

We already handled cases like a strong GV replacing a weak for example.

One case that is not currently handled is a comdat replacing another.
This doesn't happen in ELF, but with COFF largest selection kind it is
possible.

In "llvm-link a.ll b.ll" if the selected comdat was from a.ll,
everything will work and we will not copy the comdat from b.ll.

But if we run "llvm-link b.ll a.ll", we fail to delete the already
copied comdat from b.ll. This patch fixes that.

llvm-svn: 264103
2016-03-22 21:35:47 +00:00
..
CMakeLists.txt Slit lib/Linker in two. 2015-12-10 14:19:35 +00:00
IRMover.cpp Minor cleanup and documentation to IRMover (NFC) 2016-03-11 22:19:06 +00:00
LLVMBuild.txt
LinkDiagnosticInfo.h Slit lib/Linker in two. 2015-12-10 14:19:35 +00:00
LinkModules.cpp Drop comdats from the dst module if they are not selected. 2016-03-22 21:35:47 +00:00