[PATCH] D37091: Expose -mllvm -accurate-sample-profile to clang.

Dehao Chen via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Aug 23 18:52:14 PDT 2017


danielcdh created this revision.
Herald added a subscriber: sanjoy.

With accurate sample profile, we can do more aggressive size optimization. For some size-critical application, this can reduce the text size by 20%


https://reviews.llvm.org/D37091

Files:
  include/clang/Driver/Options.td
  lib/Driver/ToolChains/Clang.cpp


Index: lib/Driver/ToolChains/Clang.cpp
===================================================================
--- lib/Driver/ToolChains/Clang.cpp
+++ lib/Driver/ToolChains/Clang.cpp
@@ -2340,6 +2340,12 @@
                     true))
     CmdArgs.push_back("-fno-jump-tables");
 
+  if (Args.hasFlag(options::OPT_faccurate_sample_profile,
+                   options::OPT_fno_accurate_sample_profile, false)) {
+    CmdArgs.push_back("-mllvm");
+    CmdArgs.push_back("-accurate-sample-profile");
+  }
+
   if (!Args.hasFlag(options::OPT_fpreserve_as_comments,
                     options::OPT_fno_preserve_as_comments, true))
     CmdArgs.push_back("-fno-preserve-as-comments");
Index: include/clang/Driver/Options.td
===================================================================
--- include/clang/Driver/Options.td
+++ include/clang/Driver/Options.td
@@ -587,6 +587,14 @@
 def fPIE : Flag<["-"], "fPIE">, Group<f_Group>;
 def fno_PIE : Flag<["-"], "fno-PIE">, Group<f_Group>;
 def faccess_control : Flag<["-"], "faccess-control">, Group<f_Group>;
+def faccurate_sample_profile : Flag<["-"], "faccurate-sample-profile">,
+  Group<f_Group>, Flags<[DriverOption]>,
+  HelpText<"If sample profile is accurate, we will mark all un-sampled "
+           "callsite as cold. Otherwise, treat un-sampled callsites as if "
+           "we have no profile">;
+def fno_accurate_sample_profile : Flag<["-"], "fno-accurate-sample-profile">,
+  Group<f_Group>, Flags<[DriverOption]>;
+
 def fallow_unsupported : Flag<["-"], "fallow-unsupported">, Group<f_Group>;
 def fapple_kext : Flag<["-"], "fapple-kext">, Group<f_Group>, Flags<[CC1Option]>,
   HelpText<"Use Apple's kernel extensions ABI">;
@@ -643,6 +651,10 @@
     Alias<fno_profile_sample_use>;
 def fauto_profile_EQ : Joined<["-"], "fauto-profile=">,
     Alias<fprofile_sample_use_EQ>;
+def fauto_profile_accurate : Flag<["-"], "fauto-profile-accurate">,
+    Group<f_Group>, Alias<faccurate_sample_profile>;
+def fno_auto_profile_accurate : Flag<["-"], "fno-auto-profile-accurate">,
+    Group<f_Group>, Alias<fno_accurate_sample_profile>;
 def fdebug_info_for_profiling : Flag<["-"], "fdebug-info-for-profiling">, Group<f_Group>,
     Flags<[CC1Option]>,
     HelpText<"Emit extra debug info to make sample profile more accurate.">;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D37091.112492.patch
Type: text/x-patch
Size: 2285 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170824/2216bdc5/attachment.bin>


More information about the cfe-commits mailing list