<div dir="ltr"><br><br><div class="gmail_quote"><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">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="gmail_msg">
Date: Tue Nov 22 16:50:01 2016<br class="gmail_msg">
New Revision: 287710<br class="gmail_msg">
<br class="gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=287710&view=rev" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project?rev=287710&view=rev</a><br class="gmail_msg">
Log:<br class="gmail_msg">
Before sample pgo annotation, do not inline a function that has no debug info. (NFC)<br class="gmail_msg"></blockquote><div><br></div><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 class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br class="gmail_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="gmail_msg">
<br class="gmail_msg">
Added:<br class="gmail_msg">
    llvm/trunk/test/Transforms/SampleProfile/Inputs/nodebug.prof<br class="gmail_msg">
    llvm/trunk/test/Transforms/SampleProfile/nodebug.ll<br class="gmail_msg">
Modified:<br class="gmail_msg">
    llvm/trunk/lib/Transforms/IPO/SampleProfile.cpp<br class="gmail_msg">
    llvm/trunk/test/Transforms/SampleProfile/early-inline.ll<br class="gmail_msg">
<br class="gmail_msg">
Modified: llvm/trunk/lib/Transforms/IPO/SampleProfile.cpp<br class="gmail_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="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/SampleProfile.cpp?rev=287710&r1=287709&r2=287710&view=diff</a><br class="gmail_msg">
==============================================================================<br class="gmail_msg">
--- llvm/trunk/lib/Transforms/IPO/SampleProfile.cpp (original)<br class="gmail_msg">
+++ llvm/trunk/lib/Transforms/IPO/SampleProfile.cpp Tue Nov 22 16:50:01 2016<br class="gmail_msg">
@@ -651,6 +651,8 @@ bool SampleProfileLoader::inlineHotFunct<br class="gmail_msg">
       InvokeInst *II = dyn_cast<InvokeInst>(I);<br class="gmail_msg">
       Function *CalledFunction =<br class="gmail_msg">
           (CI == nullptr ? II->getCalledFunction() : CI->getCalledFunction());<br class="gmail_msg">
+      if (!CalledFunction || !CalledFunction->getSubprogram())<br class="gmail_msg">
+        continue;<br class="gmail_msg">
       DebugLoc DLoc = I->getDebugLoc();<br class="gmail_msg">
       uint64_t NumSamples = findCalleeFunctionSamples(*I)->getTotalSamples();<br class="gmail_msg">
       if ((CI && InlineFunction(CI, IFI)) || (II && InlineFunction(II, IFI))) {<br class="gmail_msg">
<br class="gmail_msg">
Added: llvm/trunk/test/Transforms/SampleProfile/Inputs/nodebug.prof<br class="gmail_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="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SampleProfile/Inputs/nodebug.prof?rev=287710&view=auto</a><br class="gmail_msg">
==============================================================================<br class="gmail_msg">
--- llvm/trunk/test/Transforms/SampleProfile/Inputs/nodebug.prof (added)<br class="gmail_msg">
+++ llvm/trunk/test/Transforms/SampleProfile/Inputs/nodebug.prof Tue Nov 22 16:50:01 2016<br class="gmail_msg">
@@ -0,0 +1,2 @@<br class="gmail_msg">
+foo:100:10<br class="gmail_msg">
+ 0: bar:10<br class="gmail_msg">
<br class="gmail_msg">
Modified: llvm/trunk/test/Transforms/SampleProfile/early-inline.ll<br class="gmail_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="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SampleProfile/early-inline.ll?rev=287710&r1=287709&r2=287710&view=diff</a><br class="gmail_msg">
==============================================================================<br class="gmail_msg">
--- llvm/trunk/test/Transforms/SampleProfile/early-inline.ll (original)<br class="gmail_msg">
+++ llvm/trunk/test/Transforms/SampleProfile/early-inline.ll Tue Nov 22 16:50:01 2016<br class="gmail_msg">
@@ -28,7 +28,7 @@ define void @_Z3foov() #0 personality i8<br class="gmail_msg">
 }<br class="gmail_msg">
<br class="gmail_msg">
 ; Function Attrs: nounwind uwtable<br class="gmail_msg">
-define internal void @_ZL3barv() #1 {<br class="gmail_msg">
+define internal void @_ZL3barv() !dbg !12 {<br class="gmail_msg">
   ret void<br class="gmail_msg">
 }<br class="gmail_msg">
<br class="gmail_msg">
@@ -45,3 +45,4 @@ declare i32 @__gxx_personality_v0(...)<br class="gmail_msg">
 !9 = !DILocation(line: 6, column: 3, scope: !6)<br class="gmail_msg">
 !10 = !DILocation(line: 8, column: 5, scope: !11)<br class="gmail_msg">
 !11 = distinct !DILexicalBlock(scope: !6, file: !1, line: 7, column: 7)<br class="gmail_msg">
+!12 = distinct !DISubprogram(linkageName: "_ZL3barv", scope: !1, line: 20, scopeLine: 20, unit: !0)<br class="gmail_msg">
<br class="gmail_msg">
Added: llvm/trunk/test/Transforms/SampleProfile/nodebug.ll<br class="gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SampleProfile/nodebug.ll?rev=287710&view=auto" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SampleProfile/nodebug.ll?rev=287710&view=auto</a><br class="gmail_msg">
==============================================================================<br class="gmail_msg">
--- llvm/trunk/test/Transforms/SampleProfile/nodebug.ll (added)<br class="gmail_msg">
+++ llvm/trunk/test/Transforms/SampleProfile/nodebug.ll Tue Nov 22 16:50:01 2016<br class="gmail_msg">
@@ -0,0 +1,20 @@<br class="gmail_msg">
+; RUN: opt < %s -sample-profile -sample-profile-file=%S/Inputs/nodebug.prof<br class="gmail_msg">
+<br class="gmail_msg">
+define void @foo() !dbg !3 {<br class="gmail_msg">
+  call void @bar(), !dbg !4<br class="gmail_msg">
+  ret void<br class="gmail_msg">
+}<br class="gmail_msg">
+<br class="gmail_msg">
+define void @bar() {<br class="gmail_msg">
+  call void @bar()<br class="gmail_msg">
+  ret void<br class="gmail_msg">
+}<br class="gmail_msg">
+<br class="gmail_msg">
+!<a href="http://llvm.dbg.cu" rel="noreferrer" class="gmail_msg" target="_blank">llvm.dbg.cu</a> = !{!0}<br class="gmail_msg">
+!llvm.module.flags = !{!2}<br class="gmail_msg">
+<br class="gmail_msg">
+!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1)<br class="gmail_msg">
+!1 = !DIFile(filename: "t", directory: "/tmp/")<br class="gmail_msg">
+!2 = !{i32 2, !"Debug Info Version", i32 3}<br class="gmail_msg">
+!3 = distinct !DISubprogram(name: "a", scope: !1, file: !1, line: 10, unit: !0)<br class="gmail_msg">
+!4 = !DILocation(line: 10, scope: !3)<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
_______________________________________________<br class="gmail_msg">
llvm-commits mailing list<br class="gmail_msg">
<a href="mailto:llvm-commits@lists.llvm.org" class="gmail_msg" target="_blank">llvm-commits@lists.llvm.org</a><br class="gmail_msg">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" class="gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br class="gmail_msg">
</blockquote></div></div>