[PATCH] D35875: ThinLTO: Don't import aliases of any kind (even linkonce_odr)

David Blaikie via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 25 20:36:19 PDT 2017


dblaikie created this revision.
Herald added subscribers: eraman, inglorion, aprantl.

Until a more advanced version of importing can be implemented for
aliases (one that imports an alias as an available_externally definition
of the aliasee), skip the narrow subset of cases that was possible but
came at a cost: aliases of linkonce_odr functions could be imported
because the linkonce_odr function could be safely duplicated from the
source module. This came/comes at the cost of not being able to 'home'
imported linkonce functions (they had to be emitted linkonce_odr in all
the destination modules (even if they weren't used by an alias) rather
than as available_externally - causing extra object size).

Tangentially, this also was the only reason ThinLTO would emit multiple
CUs in to the resulting DWARF - which happens to be a problem for
Fission (there's a fix for this in GDB but not released yet, etc).
(actually it's not the only reason - but I'm sending a patch to fix the
other reason shortly)

There's no reason to believe this particularly narrow alias importing
was especially/meaningfully important, only that it was /possible/ to
implement in this way. When a more general solution is done, it should
still satisfy the DWARF concerns above, since the import will still be
available_externally, and thus not create extra CUs.

Since now all aliases are treated the same, I removed/simplified some
test cases since they were testing corner cases where there are no
longer any corners.


https://reviews.llvm.org/D35875

Files:
  lib/Transforms/IPO/FunctionImport.cpp
  lib/Transforms/Utils/FunctionImportUtils.cpp
  test/Linker/funcimport.ll
  test/ThinLTO/X86/alias_import.ll
  test/ThinLTO/X86/select_right_alias_definition.ll
  test/Transforms/FunctionImport/funcimport.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D35875.108205.patch
Type: text/x-patch
Size: 15084 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170726/3b5e3bd6/attachment.bin>


More information about the llvm-commits mailing list