<div dir="ltr">Any recommendation on the flag names?<div><br></div><div>Thanks,</div><div>Dehao</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Nov 29, 2016 at 11:33 AM, David Blaikie via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">That doesn't seem like the best/most descriptive/most forwards-compatible name for the flag.<br><br>This seems like it's specifically about providing more information for profiling, by naming it in such a way that describes that use case it'll hopefully be easier for users to know when to use it and for us to know what should be triggered by that flag and what shouldn't.<br><br>- Dave</div><div class="HOEnZb"><div class="h5"><br><div class="gmail_quote"><div dir="ltr">On Tue, Nov 29, 2016 at 11:21 AM Dehao Chen via Phabricator <<a href="mailto:reviews@reviews.llvm.org" target="_blank">reviews@reviews.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">danielcdh updated this revision to Diff 79609.<br class="m_-5406532107271656616gmail_msg">
danielcdh added a comment.<br class="m_-5406532107271656616gmail_msg">
<br class="m_-5406532107271656616gmail_msg">
Add -femit-accurate-debug-info flag to guard the change.<br class="m_-5406532107271656616gmail_msg">
<br class="m_-5406532107271656616gmail_msg">
<br class="m_-5406532107271656616gmail_msg">
<a href="https://reviews.llvm.org/D25435" rel="noreferrer" class="m_-5406532107271656616gmail_msg" target="_blank">https://reviews.llvm.org/<wbr>D25435</a><br class="m_-5406532107271656616gmail_msg">
<br class="m_-5406532107271656616gmail_msg">
Files:<br class="m_-5406532107271656616gmail_msg">
  include/clang/Driver/Options.<wbr>td<br class="m_-5406532107271656616gmail_msg">
  include/clang/Frontend/<wbr>CodeGenOptions.def<br class="m_-5406532107271656616gmail_msg">
  lib/CodeGen/CGDebugInfo.cpp<br class="m_-5406532107271656616gmail_msg">
  lib/Driver/Tools.cpp<br class="m_-5406532107271656616gmail_msg">
  lib/Frontend/<wbr>CompilerInvocation.cpp<br class="m_-5406532107271656616gmail_msg">
  test/Driver/clang_f_opts.c<br class="m_-5406532107271656616gmail_msg">
<br class="m_-5406532107271656616gmail_msg">
<br class="m_-5406532107271656616gmail_msg">
Index: test/Driver/clang_f_opts.c<br class="m_-5406532107271656616gmail_msg">
==============================<wbr>==============================<wbr>=======<br class="m_-5406532107271656616gmail_msg">
--- test/Driver/clang_f_opts.c<br class="m_-5406532107271656616gmail_msg">
+++ test/Driver/clang_f_opts.c<br class="m_-5406532107271656616gmail_msg">
@@ -469,3 +469,8 @@<br class="m_-5406532107271656616gmail_msg">
 // CHECK-WCHAR2: -fshort-wchar<br class="m_-5406532107271656616gmail_msg">
 // CHECK-WCHAR2-NOT: -fno-short-wchar<br class="m_-5406532107271656616gmail_msg">
 // DELIMITERS: {{^ *"}}<br class="m_-5406532107271656616gmail_msg">
+<br class="m_-5406532107271656616gmail_msg">
+// RUN: %clang -### -S -fno-emit-accurate-debug-info -femit-accurate-debug-info %s 2>&1 | FileCheck -check-prefix=CHECK-EMIT-<wbr>ACCURATE-DEBUG-INFO %s<br class="m_-5406532107271656616gmail_msg">
+// RUN: %clang -### -S -femit-accurate-debug-info -fno-emit-accurate-debug-info %s 2>&1 | FileCheck -check-prefix=CHECK-NO-EMIT-<wbr>ACCURATE-DEBUG-INFO %s<br class="m_-5406532107271656616gmail_msg">
+// CHECK-EMIT-ACCURATE-DEBUG-<wbr>INFO: -femit-accurate-debug-info<br class="m_-5406532107271656616gmail_msg">
+// CHECK-NO-EMIT-ACCURATE-DEBUG-<wbr>INFO-NOT: -femit-accurate-debug-info<br class="m_-5406532107271656616gmail_msg">
Index: lib/Frontend/<wbr>CompilerInvocation.cpp<br class="m_-5406532107271656616gmail_msg">
==============================<wbr>==============================<wbr>=======<br class="m_-5406532107271656616gmail_msg">
--- lib/Frontend/<wbr>CompilerInvocation.cpp<br class="m_-5406532107271656616gmail_msg">
+++ lib/Frontend/<wbr>CompilerInvocation.cpp<br class="m_-5406532107271656616gmail_msg">
@@ -538,6 +538,8 @@<br class="m_-5406532107271656616gmail_msg">
   Opts.DisableIntegratedAS = Args.hasArg(OPT_fno_<wbr>integrated_as);<br class="m_-5406532107271656616gmail_msg">
   Opts.Autolink = !Args.hasArg(OPT_fno_autolink)<wbr>;<br class="m_-5406532107271656616gmail_msg">
   Opts.SampleProfileFile = Args.getLastArgValue(OPT_<wbr>fprofile_sample_use_EQ);<br class="m_-5406532107271656616gmail_msg">
+  Opts.EmitAccurateDebugInfo = Args.hasFlag(<br class="m_-5406532107271656616gmail_msg">
+      OPT_femit_accurate_debug_info, OPT_fno_emit_accurate_debug_<wbr>info, false);<br class="m_-5406532107271656616gmail_msg">
<br class="m_-5406532107271656616gmail_msg">
   setPGOInstrumentor(Opts, Args, Diags);<br class="m_-5406532107271656616gmail_msg">
   Opts.InstrProfileOutput =<br class="m_-5406532107271656616gmail_msg">
Index: lib/Driver/Tools.cpp<br class="m_-5406532107271656616gmail_msg">
==============================<wbr>==============================<wbr>=======<br class="m_-5406532107271656616gmail_msg">
--- lib/Driver/Tools.cpp<br class="m_-5406532107271656616gmail_msg">
+++ lib/Driver/Tools.cpp<br class="m_-5406532107271656616gmail_msg">
@@ -5508,6 +5508,10 @@<br class="m_-5406532107271656616gmail_msg">
       A->render(Args, CmdArgs);<br class="m_-5406532107271656616gmail_msg">
   }<br class="m_-5406532107271656616gmail_msg">
<br class="m_-5406532107271656616gmail_msg">
+  if (Args.hasFlag(options::OPT_<wbr>femit_accurate_debug_info,<br class="m_-5406532107271656616gmail_msg">
+                   options::OPT_fno_emit_<wbr>accurate_debug_info, false))<br class="m_-5406532107271656616gmail_msg">
+    CmdArgs.push_back("-femit-<wbr>accurate-debug-info");<br class="m_-5406532107271656616gmail_msg">
+<br class="m_-5406532107271656616gmail_msg">
   // -fbuiltin is default unless -mkernel is used.<br class="m_-5406532107271656616gmail_msg">
   bool UseBuiltins =<br class="m_-5406532107271656616gmail_msg">
       Args.hasFlag(options::OPT_<wbr>fbuiltin, options::OPT_fno_builtin,<br class="m_-5406532107271656616gmail_msg">
Index: lib/CodeGen/CGDebugInfo.cpp<br class="m_-5406532107271656616gmail_msg">
==============================<wbr>==============================<wbr>=======<br class="m_-5406532107271656616gmail_msg">
--- lib/CodeGen/CGDebugInfo.cpp<br class="m_-5406532107271656616gmail_msg">
+++ lib/CodeGen/CGDebugInfo.cpp<br class="m_-5406532107271656616gmail_msg">
@@ -2739,9 +2739,11 @@<br class="m_-5406532107271656616gmail_msg">
   }<br class="m_-5406532107271656616gmail_msg">
   // No need to replicate the linkage name if it isn't different from the<br class="m_-5406532107271656616gmail_msg">
   // subprogram name, no need to have it at all unless coverage is enabled or<br class="m_-5406532107271656616gmail_msg">
-  // debug is set to more than just line tables.<br class="m_-5406532107271656616gmail_msg">
+  // debug is set to more than just line tables or accurate debug info is<br class="m_-5406532107271656616gmail_msg">
+  // needed.<br class="m_-5406532107271656616gmail_msg">
   if (LinkageName == Name || (!CGM.getCodeGenOpts().<wbr>EmitGcovArcs &&<br class="m_-5406532107271656616gmail_msg">
                               !CGM.getCodeGenOpts().<wbr>EmitGcovNotes &&<br class="m_-5406532107271656616gmail_msg">
+                              !CGM.getCodeGenOpts().<wbr>EmitAccurateDebugInfo &&<br class="m_-5406532107271656616gmail_msg">
                               DebugKind <= codegenoptions::<wbr>DebugLineTablesOnly))<br class="m_-5406532107271656616gmail_msg">
     LinkageName = StringRef();<br class="m_-5406532107271656616gmail_msg">
<br class="m_-5406532107271656616gmail_msg">
Index: include/clang/Frontend/<wbr>CodeGenOptions.def<br class="m_-5406532107271656616gmail_msg">
==============================<wbr>==============================<wbr>=======<br class="m_-5406532107271656616gmail_msg">
--- include/clang/Frontend/<wbr>CodeGenOptions.def<br class="m_-5406532107271656616gmail_msg">
+++ include/clang/Frontend/<wbr>CodeGenOptions.def<br class="m_-5406532107271656616gmail_msg">
@@ -256,6 +256,9 @@<br class="m_-5406532107271656616gmail_msg">
 /// Whether copy relocations support is available when building as PIE.<br class="m_-5406532107271656616gmail_msg">
 CODEGENOPT(<wbr>PIECopyRelocations, 1, 0)<br class="m_-5406532107271656616gmail_msg">
<br class="m_-5406532107271656616gmail_msg">
+/// Whether emit more accurate debug info for sample pgo profile collection.<br class="m_-5406532107271656616gmail_msg">
+CODEGENOPT(<wbr>EmitAccurateDebugInfo, 1, 0)<br class="m_-5406532107271656616gmail_msg">
+<br class="m_-5406532107271656616gmail_msg">
 #undef CODEGENOPT<br class="m_-5406532107271656616gmail_msg">
 #undef ENUM_CODEGENOPT<br class="m_-5406532107271656616gmail_msg">
 #undef VALUE_CODEGENOPT<br class="m_-5406532107271656616gmail_msg">
Index: include/clang/Driver/Options.<wbr>td<br class="m_-5406532107271656616gmail_msg">
==============================<wbr>==============================<wbr>=======<br class="m_-5406532107271656616gmail_msg">
--- include/clang/Driver/Options.<wbr>td<br class="m_-5406532107271656616gmail_msg">
+++ include/clang/Driver/Options.<wbr>td<br class="m_-5406532107271656616gmail_msg">
@@ -509,6 +509,12 @@<br class="m_-5406532107271656616gmail_msg">
     HelpText<"Enable sample-based profile guided optimizations">;<br class="m_-5406532107271656616gmail_msg">
 def fauto_profile_EQ : Joined<["-"], "fauto-profile=">,<br class="m_-5406532107271656616gmail_msg">
     Alias<fprofile_sample_use_EQ><wbr>;<br class="m_-5406532107271656616gmail_msg">
+def femit_accurate_debug_info : Flag<["-"], "femit-accurate-debug-info">,<br class="m_-5406532107271656616gmail_msg">
+    Group<f_Group>, Flags<[CC1Option]>,<br class="m_-5406532107271656616gmail_msg">
+    HelpText<"Emit accurate debug info to make sample profile more accurate.">;<br class="m_-5406532107271656616gmail_msg">
+def fno_emit_accurate_debug_info : Flag<["-"], "fno-emit-accurate-debug-info"<wbr>>,<br class="m_-5406532107271656616gmail_msg">
+    Group<f_Group>, Flags<[DriverOption]>,<br class="m_-5406532107271656616gmail_msg">
+    HelpText<"Do not emit accurate debug info.">;<br class="m_-5406532107271656616gmail_msg">
 def fprofile_instr_generate : Flag<["-"], "fprofile-instr-generate">,<br class="m_-5406532107271656616gmail_msg">
     Group<f_Group>, Flags<[DriverOption]>,<br class="m_-5406532107271656616gmail_msg">
     HelpText<"Generate instrumented code to collect execution counts into default.profraw file (overriden by '=' form of option or LLVM_PROFILE_FILE env var)">;<br class="m_-5406532107271656616gmail_msg">
<br class="m_-5406532107271656616gmail_msg">
<br class="m_-5406532107271656616gmail_msg">
</blockquote></div>
</div></div><br>______________________________<wbr>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-commits</a><br>
<br></blockquote></div><br></div>