<div dir="ltr">I thought NFC applies to "obvious change to fix corner-case bugs", and apparently I was wrong and I'm sorry about that. What's the recommend steps to move forward for situations like this? Shall I revert the patch and send out a code review?<div><br></div><div class="gmail_extra"><div class="gmail_quote">On Mon, Nov 28, 2016 at 10:04 AM, David Blaikie <span dir="ltr"><<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</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"><br><br><div class="gmail_quote"><span class=""><div dir="ltr">On Tue, Nov 22, 2016 at 2:59 PM Dehao Chen via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: dehao<br class="m_1066472164475782851gmail_msg">
Date: Tue Nov 22 16:50:01 2016<br class="m_1066472164475782851gmail_msg">
New Revision: 287710<br class="m_1066472164475782851gmail_msg">
<br class="m_1066472164475782851gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=287710&view=rev" rel="noreferrer" class="m_1066472164475782851gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=287710&view=rev</a><br class="m_1066472164475782851gmail_msg">
Log:<br class="m_1066472164475782851gmail_msg">
Before sample pgo annotation, do not inline a function that has no debug info. (NFC)<br class="m_1066472164475782851gmail_msg"></blockquote><div><br></div></span><div>(+1 to Paul's comment - this sounds like a change, has test changes, and is probably not NFC)<br><br>Also: This sounds like it does the opposite of what we want as a requirement: that the presence or absence of debug info should not change the resulting code.<br><br>What's the deal?</div></div></div></blockquote><div><br></div><div>This particular pass requires debug info to make decisions. This is mandated by pass manager: even with -g0, PM will make sure debug info is available before this pass. But if user manually removed the debug info, the code should also handle it correctly, which is fixed by this patch.</div><div><br></div><div>Dehao</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div><div class="h5"><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br class="m_1066472164475782851gmail_msg">
If there is no debug info in the callee, inlining it will not help annotator. This avoids infinite loop as reported in PR/31119.<br class="m_1066472164475782851gmail_msg">
<br class="m_1066472164475782851gmail_msg">
Added:<br class="m_1066472164475782851gmail_msg">
    llvm/trunk/test/Transforms/<wbr>SampleProfile/Inputs/nodebug.<wbr>prof<br class="m_1066472164475782851gmail_msg">
    llvm/trunk/test/Transforms/<wbr>SampleProfile/nodebug.ll<br class="m_1066472164475782851gmail_msg">
Modified:<br class="m_1066472164475782851gmail_msg">
    llvm/trunk/lib/Transforms/IPO/<wbr>SampleProfile.cpp<br class="m_1066472164475782851gmail_msg">
    llvm/trunk/test/Transforms/<wbr>SampleProfile/early-inline.ll<br class="m_1066472164475782851gmail_msg">
<br class="m_1066472164475782851gmail_msg">
Modified: llvm/trunk/lib/Transforms/IPO/<wbr>SampleProfile.cpp<br class="m_1066472164475782851gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/SampleProfile.cpp?rev=287710&r1=287709&r2=287710&view=diff" rel="noreferrer" class="m_1066472164475782851gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>Transforms/IPO/SampleProfile.<wbr>cpp?rev=287710&r1=287709&r2=<wbr>287710&view=diff</a><br class="m_1066472164475782851gmail_msg">
==============================<wbr>==============================<wbr>==================<br class="m_1066472164475782851gmail_msg">
--- llvm/trunk/lib/Transforms/IPO/<wbr>SampleProfile.cpp (original)<br class="m_1066472164475782851gmail_msg">
+++ llvm/trunk/lib/Transforms/IPO/<wbr>SampleProfile.cpp Tue Nov 22 16:50:01 2016<br class="m_1066472164475782851gmail_msg">
@@ -651,6 +651,8 @@ bool SampleProfileLoader::<wbr>inlineHotFunct<br class="m_1066472164475782851gmail_msg">
       InvokeInst *II = dyn_cast<InvokeInst>(I);<br class="m_1066472164475782851gmail_msg">
       Function *CalledFunction =<br class="m_1066472164475782851gmail_msg">
           (CI == nullptr ? II->getCalledFunction() : CI->getCalledFunction());<br class="m_1066472164475782851gmail_msg">
+      if (!CalledFunction || !CalledFunction-><wbr>getSubprogram())<br class="m_1066472164475782851gmail_msg">
+        continue;<br class="m_1066472164475782851gmail_msg">
       DebugLoc DLoc = I->getDebugLoc();<br class="m_1066472164475782851gmail_msg">
       uint64_t NumSamples = findCalleeFunctionSamples(*I)-<wbr>>getTotalSamples();<br class="m_1066472164475782851gmail_msg">
       if ((CI && InlineFunction(CI, IFI)) || (II && InlineFunction(II, IFI))) {<br class="m_1066472164475782851gmail_msg">
<br class="m_1066472164475782851gmail_msg">
Added: llvm/trunk/test/Transforms/<wbr>SampleProfile/Inputs/nodebug.<wbr>prof<br class="m_1066472164475782851gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SampleProfile/Inputs/nodebug.prof?rev=287710&view=auto" rel="noreferrer" class="m_1066472164475782851gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/test/<wbr>Transforms/SampleProfile/<wbr>Inputs/nodebug.prof?rev=<wbr>287710&view=auto</a><br class="m_1066472164475782851gmail_msg">
==============================<wbr>==============================<wbr>==================<br class="m_1066472164475782851gmail_msg">
--- llvm/trunk/test/Transforms/<wbr>SampleProfile/Inputs/nodebug.<wbr>prof (added)<br class="m_1066472164475782851gmail_msg">
+++ llvm/trunk/test/Transforms/<wbr>SampleProfile/Inputs/nodebug.<wbr>prof Tue Nov 22 16:50:01 2016<br class="m_1066472164475782851gmail_msg">
@@ -0,0 +1,2 @@<br class="m_1066472164475782851gmail_msg">
+foo:100:10<br class="m_1066472164475782851gmail_msg">
+ 0: bar:10<br class="m_1066472164475782851gmail_msg">
<br class="m_1066472164475782851gmail_msg">
Modified: llvm/trunk/test/Transforms/<wbr>SampleProfile/early-inline.ll<br class="m_1066472164475782851gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SampleProfile/early-inline.ll?rev=287710&r1=287709&r2=287710&view=diff" rel="noreferrer" class="m_1066472164475782851gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/test/<wbr>Transforms/SampleProfile/<wbr>early-inline.ll?rev=287710&r1=<wbr>287709&r2=287710&view=diff</a><br class="m_1066472164475782851gmail_msg">
==============================<wbr>==============================<wbr>==================<br class="m_1066472164475782851gmail_msg">
--- llvm/trunk/test/Transforms/<wbr>SampleProfile/early-inline.ll (original)<br class="m_1066472164475782851gmail_msg">
+++ llvm/trunk/test/Transforms/<wbr>SampleProfile/early-inline.ll Tue Nov 22 16:50:01 2016<br class="m_1066472164475782851gmail_msg">
@@ -28,7 +28,7 @@ define void @_Z3foov() #0 personality i8<br class="m_1066472164475782851gmail_msg">
 }<br class="m_1066472164475782851gmail_msg">
<br class="m_1066472164475782851gmail_msg">
 ; Function Attrs: nounwind uwtable<br class="m_1066472164475782851gmail_msg">
-define internal void @_ZL3barv() #1 {<br class="m_1066472164475782851gmail_msg">
+define internal void @_ZL3barv() !dbg !12 {<br class="m_1066472164475782851gmail_msg">
   ret void<br class="m_1066472164475782851gmail_msg">
 }<br class="m_1066472164475782851gmail_msg">
<br class="m_1066472164475782851gmail_msg">
@@ -45,3 +45,4 @@ declare i32 @__gxx_personality_v0(...)<br class="m_1066472164475782851gmail_msg">
 !9 = !DILocation(line: 6, column: 3, scope: !6)<br class="m_1066472164475782851gmail_msg">
 !10 = !DILocation(line: 8, column: 5, scope: !11)<br class="m_1066472164475782851gmail_msg">
 !11 = distinct !DILexicalBlock(scope: !6, file: !1, line: 7, column: 7)<br class="m_1066472164475782851gmail_msg">
+!12 = distinct !DISubprogram(linkageName: "_ZL3barv", scope: !1, line: 20, scopeLine: 20, unit: !0)<br class="m_1066472164475782851gmail_msg">
<br class="m_1066472164475782851gmail_msg">
Added: llvm/trunk/test/Transforms/<wbr>SampleProfile/nodebug.ll<br class="m_1066472164475782851gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SampleProfile/nodebug.ll?rev=287710&view=auto" rel="noreferrer" class="m_1066472164475782851gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/test/<wbr>Transforms/SampleProfile/<wbr>nodebug.ll?rev=287710&view=<wbr>auto</a><br class="m_1066472164475782851gmail_msg">
==============================<wbr>==============================<wbr>==================<br class="m_1066472164475782851gmail_msg">
--- llvm/trunk/test/Transforms/<wbr>SampleProfile/nodebug.ll (added)<br class="m_1066472164475782851gmail_msg">
+++ llvm/trunk/test/Transforms/<wbr>SampleProfile/nodebug.ll Tue Nov 22 16:50:01 2016<br class="m_1066472164475782851gmail_msg">
@@ -0,0 +1,20 @@<br class="m_1066472164475782851gmail_msg">
+; RUN: opt < %s -sample-profile -sample-profile-file=%S/<wbr>Inputs/nodebug.prof<br class="m_1066472164475782851gmail_msg">
+<br class="m_1066472164475782851gmail_msg">
+define void @foo() !dbg !3 {<br class="m_1066472164475782851gmail_msg">
+  call void @bar(), !dbg !4<br class="m_1066472164475782851gmail_msg">
+  ret void<br class="m_1066472164475782851gmail_msg">
+}<br class="m_1066472164475782851gmail_msg">
+<br class="m_1066472164475782851gmail_msg">
+define void @bar() {<br class="m_1066472164475782851gmail_msg">
+  call void @bar()<br class="m_1066472164475782851gmail_msg">
+  ret void<br class="m_1066472164475782851gmail_msg">
+}<br class="m_1066472164475782851gmail_msg">
+<br class="m_1066472164475782851gmail_msg">
+!<a href="http://llvm.dbg.cu" rel="noreferrer" class="m_1066472164475782851gmail_msg" target="_blank">llvm.dbg.cu</a> = !{!0}<br class="m_1066472164475782851gmail_msg">
+!llvm.module.flags = !{!2}<br class="m_1066472164475782851gmail_msg">
+<br class="m_1066472164475782851gmail_msg">
+!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1)<br class="m_1066472164475782851gmail_msg">
+!1 = !DIFile(filename: "t", directory: "/tmp/")<br class="m_1066472164475782851gmail_msg">
+!2 = !{i32 2, !"Debug Info Version", i32 3}<br class="m_1066472164475782851gmail_msg">
+!3 = distinct !DISubprogram(name: "a", scope: !1, file: !1, line: 10, unit: !0)<br class="m_1066472164475782851gmail_msg">
+!4 = !DILocation(line: 10, scope: !3)<br class="m_1066472164475782851gmail_msg">
<br class="m_1066472164475782851gmail_msg">
<br class="m_1066472164475782851gmail_msg">
______________________________<wbr>_________________<br class="m_1066472164475782851gmail_msg">
llvm-commits mailing list<br class="m_1066472164475782851gmail_msg">
<a href="mailto:llvm-commits@lists.llvm.org" class="m_1066472164475782851gmail_msg" target="_blank">llvm-commits@lists.llvm.org</a><br class="m_1066472164475782851gmail_msg">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" class="m_1066472164475782851gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-commits</a><br class="m_1066472164475782851gmail_msg">
</blockquote></div></div></div></div>
</blockquote></div><br></div></div>