<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.inbox-inbox-apple-converted-space
        {mso-style-name:inbox-inbox-apple-converted-space;}
span.inbox-inbox-lg
        {mso-style-name:inbox-inbox-lg;}
span.gmailmsg
        {mso-style-name:gmail_msg;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">I'm probably okay with anything that has "debug" and prof/profile/profiling in the name.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Definitely not okay with "accurate" which I think implies more about correctness than the degree of detail.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">--paulr<o:p></o:p></span></p>
<p class="MsoNormal"><a name="_MailEndCompose"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></a></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> David Blaikie [mailto:dblaikie@gmail.com]
<br>
<b>Sent:</b> Tuesday, November 29, 2016 11:46 AM<br>
<b>To:</b> Dehao Chen<br>
<b>Cc:</b> reviews+D25435+public+b10d8b300f87c722@reviews.llvm.org; Chen Dehao; echristo@gmail.com; Xinliang David Li; junbuml@codeaurora.org; llvm-commits; Adrian Prantl; Robinson, Paul; Greg Bedwell<br>
<b>Subject:</b> Re: [PATCH] D25435: Generate more debug info in -gmlt<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt">We had a couple of suggestions in the other thread<br>
<br>
<span class="inbox-inbox-apple-converted-space"><span style="color:#757575"> </span></span><span style="color:#757575">-femit-<span class="inbox-inbox-lg">debug</span>-for-profiling (Greg's)<br>
</span>-fprof-debug (mine)<br>
<br>
(+ a few debug folks and folks from the other thread, in case they've got ideas)<br>
<br>
Any others people want to float/advocate for?<o:p></o:p></p>
<div>
<div>
<p class="MsoNormal">On Tue, Nov 29, 2016 at 11:39 AM Dehao Chen <<a href="mailto:dehao@google.com">dehao@google.com</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<p class="MsoNormal">Any recommendation on the flag names?<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Thanks,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Dehao<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">On Tue, Nov 29, 2016 at 11:33 AM, David Blaikie via llvm-commits
<span class="gmailmsg"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<o:p></o:p></p>
</div>
</div>
<div>
<div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<p class="MsoNormal">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<o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">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:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<p class="MsoNormal" style="margin-bottom:12.0pt">danielcdh updated this revision to Diff 79609.<br>
danielcdh added a comment.<br>
<br>
Add -femit-accurate-debug-info flag to guard the change.<br>
<br>
<br>
<a href="https://reviews.llvm.org/D25435" target="_blank">https://reviews.llvm.org/D25435</a><br>
<br>
Files:<br>
  include/clang/Driver/Options.td<br>
  include/clang/Frontend/CodeGenOptions.def<br>
  lib/CodeGen/CGDebugInfo.cpp<br>
  lib/Driver/Tools.cpp<br>
  lib/Frontend/CompilerInvocation.cpp<br>
  test/Driver/clang_f_opts.c<br>
<br>
<br>
Index: test/Driver/clang_f_opts.c<br>
===================================================================<br>
--- test/Driver/clang_f_opts.c<br>
+++ test/Driver/clang_f_opts.c<br>
@@ -469,3 +469,8 @@<br>
 // CHECK-WCHAR2: -fshort-wchar<br>
 // CHECK-WCHAR2-NOT: -fno-short-wchar<br>
 // DELIMITERS: {{^ *"}}<br>
+<br>
+// RUN: %clang -### -S -fno-emit-accurate-debug-info -femit-accurate-debug-info %s 2>&1 | FileCheck -check-prefix=CHECK-EMIT-ACCURATE-DEBUG-INFO %s<br>
+// RUN: %clang -### -S -femit-accurate-debug-info -fno-emit-accurate-debug-info %s 2>&1 | FileCheck -check-prefix=CHECK-NO-EMIT-ACCURATE-DEBUG-INFO %s<br>
+// CHECK-EMIT-ACCURATE-DEBUG-INFO: -femit-accurate-debug-info<br>
+// CHECK-NO-EMIT-ACCURATE-DEBUG-INFO-NOT: -femit-accurate-debug-info<br>
Index: lib/Frontend/CompilerInvocation.cpp<br>
===================================================================<br>
--- lib/Frontend/CompilerInvocation.cpp<br>
+++ lib/Frontend/CompilerInvocation.cpp<br>
@@ -538,6 +538,8 @@<br>
   Opts.DisableIntegratedAS = Args.hasArg(OPT_fno_integrated_as);<br>
   Opts.Autolink = !Args.hasArg(OPT_fno_autolink);<br>
   Opts.SampleProfileFile = Args.getLastArgValue(OPT_fprofile_sample_use_EQ);<br>
+  Opts.EmitAccurateDebugInfo = Args.hasFlag(<br>
+      OPT_femit_accurate_debug_info, OPT_fno_emit_accurate_debug_info, false);<br>
<br>
   setPGOInstrumentor(Opts, Args, Diags);<br>
   Opts.InstrProfileOutput =<br>
Index: lib/Driver/Tools.cpp<br>
===================================================================<br>
--- lib/Driver/Tools.cpp<br>
+++ lib/Driver/Tools.cpp<br>
@@ -5508,6 +5508,10 @@<br>
       A->render(Args, CmdArgs);<br>
   }<br>
<br>
+  if (Args.hasFlag(options::OPT_femit_accurate_debug_info,<br>
+                   options::OPT_fno_emit_accurate_debug_info, false))<br>
+    CmdArgs.push_back("-femit-accurate-debug-info");<br>
+<br>
   // -fbuiltin is default unless -mkernel is used.<br>
   bool UseBuiltins =<br>
       Args.hasFlag(options::OPT_fbuiltin, options::OPT_fno_builtin,<br>
Index: lib/CodeGen/CGDebugInfo.cpp<br>
===================================================================<br>
--- lib/CodeGen/CGDebugInfo.cpp<br>
+++ lib/CodeGen/CGDebugInfo.cpp<br>
@@ -2739,9 +2739,11 @@<br>
   }<br>
   // No need to replicate the linkage name if it isn't different from the<br>
   // subprogram name, no need to have it at all unless coverage is enabled or<br>
-  // debug is set to more than just line tables.<br>
+  // debug is set to more than just line tables or accurate debug info is<br>
+  // needed.<br>
   if (LinkageName == Name || (!CGM.getCodeGenOpts().EmitGcovArcs &&<br>
                               !CGM.getCodeGenOpts().EmitGcovNotes &&<br>
+                              !CGM.getCodeGenOpts().EmitAccurateDebugInfo &&<br>
                               DebugKind <= codegenoptions::DebugLineTablesOnly))<br>
     LinkageName = StringRef();<br>
<br>
Index: include/clang/Frontend/CodeGenOptions.def<br>
===================================================================<br>
--- include/clang/Frontend/CodeGenOptions.def<br>
+++ include/clang/Frontend/CodeGenOptions.def<br>
@@ -256,6 +256,9 @@<br>
 /// Whether copy relocations support is available when building as PIE.<br>
 CODEGENOPT(PIECopyRelocations, 1, 0)<br>
<br>
+/// Whether emit more accurate debug info for sample pgo profile collection.<br>
+CODEGENOPT(EmitAccurateDebugInfo, 1, 0)<br>
+<br>
 #undef CODEGENOPT<br>
 #undef ENUM_CODEGENOPT<br>
 #undef VALUE_CODEGENOPT<br>
Index: include/clang/Driver/Options.td<br>
===================================================================<br>
--- include/clang/Driver/Options.td<br>
+++ include/clang/Driver/Options.td<br>
@@ -509,6 +509,12 @@<br>
     HelpText<"Enable sample-based profile guided optimizations">;<br>
 def fauto_profile_EQ : Joined<["-"], "fauto-profile=">,<br>
     Alias<fprofile_sample_use_EQ>;<br>
+def femit_accurate_debug_info : Flag<["-"], "femit-accurate-debug-info">,<br>
+    Group<f_Group>, Flags<[CC1Option]>,<br>
+    HelpText<"Emit accurate debug info to make sample profile more accurate.">;<br>
+def fno_emit_accurate_debug_info : Flag<["-"], "fno-emit-accurate-debug-info">,<br>
+    Group<f_Group>, Flags<[DriverOption]>,<br>
+    HelpText<"Do not emit accurate debug info.">;<br>
 def fprofile_instr_generate : Flag<["-"], "fprofile-instr-generate">,<br>
     Group<f_Group>, Flags<[DriverOption]>,<br>
     HelpText<"Generate instrumented code to collect execution counts into default.profraw file (overriden by '=' form of option or LLVM_PROFILE_FILE env var)">;<br>
<br>
<o:p></o:p></p>
</blockquote>
</div>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</blockquote>
</div>
</div>
<div>
<div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<p class="MsoNormal" style="margin-bottom:12.0pt">_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><o:p></o:p></p>
</blockquote>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</body>
</html>