[PATCH] D79959: [SampleFDO] Add use-sample-profile function attribute

Wei Mi via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu May 14 13:03:46 PDT 2020


wmi created this revision.
wmi added reviewers: davidxl, tejohnson, wenlei.
Herald added subscribers: dexonsmith, hiraditya, aprantl.
Herald added a project: LLVM.

When sampleFDO is enabled, people may expect they can use -fno-profile-sample-use to opt-out using sample profile for a certain file. That could be either for debugging purpose or for performance tuning purpose. However, when thinlto is enabled, if a function in file A compiled with -fno-profile-sample-use is imported to another file B compiled with -fprofile-sample-use, the inlined copy of the function in file B may still get its profile annotated.

The inconsistency may even introduce profile unused warning because if the target is not compiled with explicit debug information flag, the function in file A won't have its debug information enabled (debug information will be enabled implicitly only when -fprofile-sample-use is used). After it is imported into file B which is compiled with -fprofile-sample-use, profile annotation for the outline copy of the function will fail because the function has no debug information, and that will trigger  profile unused warning.

We add a new attribute use-sample-profile to control whether a function will use its sample profile no matter for its outline or inline copies.  That will make the behavior of -fno-profile-sample-use consistent.

There are some tests to fix. I will fix them after reviewers think the patch is generally ok.


Repository:
  rL LLVM

https://reviews.llvm.org/D79959

Files:
  clang/lib/CodeGen/CodeGenFunction.cpp
  clang/test/CodeGen/use-sample-profile-attr.c
  llvm/include/llvm/IR/Attributes.td
  llvm/lib/Transforms/IPO/SampleProfile.cpp
  llvm/test/Transforms/SampleProfile/Inputs/use-sample-profile-attr.prof
  llvm/test/Transforms/SampleProfile/use-sample-profile-attr.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D79959.264051.patch
Type: text/x-patch
Size: 9721 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200514/32dd8dbc/attachment.bin>


More information about the llvm-commits mailing list