[PATCH] D108879: [Linker] Handle comdat nodeduplicate
Fangrui Song via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sat Aug 28 14:45:22 PDT 2021
MaskRay created this revision.
MaskRay added reviewers: phosek, rnk, wolfgangp.
Herald added a subscriber: hiraditya.
MaskRay requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Partial fix to PR51394: comdat nodeduplicate is not supported by
`ModuleLinker::run()`.
For a variable in a comdat nodeduplicate, its initializer may be significant.
E.g. its content may be implicitly referenced by another comdat member (or
required to parallel to another comdat member by the runtime when explicit
section is used). We can clone it into an unnamed private linkage variable to
preserve its content.
This partially fixes PR51394 (Sony's proprietary linker using LTO): no error
will be reported. This is partial because we do not guarantee the global
variable order if the runtime has parallel section requirement.
---
There is a similar issue for regular LTO, but unrelated to PR51394:
with lib/LTO (using either ld.lld or LLVMgold.so), linking two modules
with a weak function of the same name, can leave one weak profc and two
private profd, due to lib/LTO's current deficiency that it mixes the two
concepts together: comdat selection and symbol resolution. If the issue
is considered important, we should suppress private profd for the weak+
regular LTO case.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D108879
Files:
llvm/lib/Linker/LinkModules.cpp
llvm/test/Linker/comdat-nodeduplicate.ll
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D108879.369281.patch
Type: text/x-patch
Size: 5718 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210828/19150501/attachment.bin>
More information about the llvm-commits
mailing list