[PATCH] D14447: Restore "Move metadata linking after lazy global materialization/linking."

Teresa Johnson via llvm-commits llvm-commits at lists.llvm.org
Fri Nov 6 08:21:57 PST 2015


tejohnson created this revision.
tejohnson added reviewers: dexonsmith, rafael, tra.
tejohnson added subscribers: llvm-commits, joker.eph, tobiasvk.

This reverts commit r251965.

Restore "Move metadata linking after lazy global materialization/linking."

This restores commit r251926, with fixes for the LTO bootstrapping bot
failure.

The bot failure was caused by references from debug metadata to
otherwise unreferenced globals. Previously, this caused the lazy linking
to link in their defs, which is unnecessary. With this patch, because
lazy linking is complete when we encounter the metadata reference, the
materializer created a declaration. For definitions such as aliases and
comdats, it is illegal to have a declaration. Furthermore, metadata
linking should not change code generation. Therefore, when linking of
global value bodies is complete, the materializer will simply return
nullptr as the new reference for the linked metadata.

This change required fixing a different test to ensure there was a
real reference to a linkonce global that was only being reference from
metadata.

Note that the new changes to the only-needed-named-metadata.ll test
illustrate an issue with llvm-link -only-needed handling of comdat
groups, whereby it may result in an incomplete comdat group. I note this
in the test comments, but the issue is orthogonal to this patch (it can
be reproduced without any metadata at head).

http://reviews.llvm.org/D14447

Files:
  lib/Linker/LinkModules.cpp
  test/Linker/Inputs/only-needed-named-metadata.ll
  test/Linker/distinct.ll
  test/Linker/only-needed-named-metadata.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D14447.39540.patch
Type: text/x-patch
Size: 6769 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20151106/8ef355c4/attachment.bin>


More information about the llvm-commits mailing list