[PATCH] D36850: [ThinLTO] Add norecurse function attribute propagation

Di Mo via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 7 00:47:09 PDT 2021


modimo updated this revision to Diff 356881.
modimo marked an inline comment as done.
modimo added a comment.
Herald added a subscriber: dexonsmith.

I'm headed out on vacation until Aug. 1st so sending an update of WIP-ish revision. Will definitely pick this up again when I get back :D

Appreciate the review and the explanations @tejohnson. I did a full refactoring of how we calculate attributes and added a caching layer.

I added WIP nounwind propagation so folks can look it over and try it out, known deficiencies:

1. thinLTO version hasn't been updated for the new field. Will definitely do that (or split it out from NoRecurse as a separate change?)
2. testing needs to be cleaned up for this field

Also:

1. Need to evaluate timetrace to see if the caching strategy is better for build time
2. Add quite a bit more testing to validate how we're handling all the different linkage scenarios

For reference on nounwind propagation now:
Build compiler with this change on top of b16400449fc763fdae2d2ce809ce61c88acb6684 <https://reviews.llvm.org/rGb16400449fc763fdae2d2ce809ce61c88acb6684> building cd0a1226b50081e86eb75a89d01e8782423971a0 <https://reviews.llvm.org/rGcd0a1226b50081e86eb75a89d01e8782423971a0>

thinlto/

  "dwarfehprepare.NumCleanupLandingPadsRemaining": 216754,
  "dwarfehprepare.NumNoUnwind": 300957,
  "dwarfehprepare.NumUnwind": 332785,

thinlto_withpropagation/

  "dwarfehprepare.NumCleanupLandingPadsRemaining": 90401,
  "dwarfehprepare.NumNoUnwind": 513744,
  "dwarfehprepare.NumUnwind": 119360,


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D36850/new/

https://reviews.llvm.org/D36850

Files:
  clang/test/CodeGen/thinlto-distributed-cfi-devirt.ll
  clang/test/CodeGen/thinlto-distributed-cfi.ll
  llvm/include/llvm/IR/ModuleSummaryIndex.h
  llvm/include/llvm/LTO/LTO.h
  llvm/include/llvm/Transforms/IPO/FunctionAttrs.h
  llvm/lib/Analysis/ModuleSummaryAnalysis.cpp
  llvm/lib/Bitcode/Reader/BitcodeReader.cpp
  llvm/lib/IR/AsmWriter.cpp
  llvm/lib/IR/ModuleSummaryIndex.cpp
  llvm/lib/LTO/LTO.cpp
  llvm/lib/LTO/LTOBackend.cpp
  llvm/lib/LTO/ThinLTOCodeGenerator.cpp
  llvm/lib/Transforms/IPO/FunctionAttrs.cpp
  llvm/test/ThinLTO/X86/Inputs/functionattr-prop.ll
  llvm/test/ThinLTO/X86/Inputs/linkonce_functionattrs_comdat.ll
  llvm/test/ThinLTO/X86/deadstrip.ll
  llvm/test/ThinLTO/X86/function_entry_count.ll
  llvm/test/ThinLTO/X86/functionattr-prop.ll
  llvm/test/ThinLTO/X86/linkonce_functionattrs_comdat.ll
  llvm/test/ThinLTO/X86/linkonce_resolution_comdat.ll
  llvm/test/ThinLTO/X86/not-internalized.ll
  llvm/test/ThinLTO/X86/weak_externals.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D36850.356881.patch
Type: text/x-patch
Size: 30859 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210707/4fce5ca9/attachment-0001.bin>


More information about the llvm-commits mailing list