Fix LTO unreferenced symbol bug due to alias renaming
Mehdi Amini via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 7 13:34:10 PST 2016
Hi Yin,
Do you have a test-case for that?
Thanks,
Mehdi
> On Jan 7, 2016, at 12:28 PM, Yin Ma via llvm-commits <llvm-commits at lists.llvm.org> wrote:
>
> Hi,
>
> After 18f201b4db339145af8f340196943ef57b9c8d9f from Rafael was merged in, we are experiencing
> unreferenced symbol in several LTO programs. I analyzed the problem and find because 18f201 patch
> tries to discard the aliasee by renaming it. However, it will create a problem
> If the renaming happens for external functions, where non byte code may reference to the original
> name and cause unreferenced symbol at the end.
>
> So, we have to perform forceRenaming like before without 18f201 for those symbols in ShouldLink.
> Like this to force those global symbols which may expose to other module to be the original name.
>
> diff --git a/lib/Linker/IRMover.cpp b/lib/Linker/IRMover.cpp
> index 16de0ec..68c3346 100644
> --- a/lib/Linker/IRMover.cpp
> +++ b/lib/Linker/IRMover.cpp
> @@ -1077,7 +1077,7 @@ Constant *IRLinker::linkGlobalValueProto(GlobalValue *SGV, bool ForAlias) {
> return nullptr;
> NewGV = copyGlobalValueProto(SGV, ShouldLink);
> - if (!ForAlias)
> + if (ShouldLink || !ForAlias)
> forceRenaming(NewGV, SGV->getName());
> }
> if (ShouldLink || ForAlias) {
>
> Please review.
>
> Thanks,
>
> Yin
>
>
> <i.diff>_______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160107/59843fb1/attachment-0001.html>
More information about the llvm-commits
mailing list