<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Aug 16, 2017 at 10:18 AM, Xinliang David Li 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">Author: davidxl<br>
Date: Wed Aug 16 10:18:01 2017<br>
New Revision: 311023<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=311023&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=311023&view=rev</a><br>
Log:<br>
[PGO] Fix ThinLTO crash<br>
<br>
Differential Revsion: <a href="http://reviews.llvm.org/D36640" rel="noreferrer" target="_blank">http://reviews.llvm.org/D36640</a><br>
<br>
Added:<br>
    llvm/trunk/test/Transforms/<wbr>FunctionImport/Inputs/<wbr>funcimport_var2.ll<br>
    llvm/trunk/test/Transforms/<wbr>FunctionImport/funcimport_var.<wbr>ll<br>
Modified:<br>
    llvm/trunk/lib/Bitcode/Writer/<wbr>BitcodeWriter.cpp<br>
<br>
Modified: llvm/trunk/lib/Bitcode/Writer/<wbr>BitcodeWriter.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Writer/BitcodeWriter.cpp?rev=311023&r1=311022&r2=311023&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>Bitcode/Writer/BitcodeWriter.<wbr>cpp?rev=311023&r1=311022&r2=<wbr>311023&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/Bitcode/Writer/<wbr>BitcodeWriter.cpp (original)<br>
+++ llvm/trunk/lib/Bitcode/Writer/<wbr>BitcodeWriter.cpp Wed Aug 16 10:18:01 2017<br>
@@ -3626,6 +3626,12 @@ void IndexBitcodeWriter::<wbr>writeCombinedGl<br>
         CallValueId = getValueId(GUID);<br>
         if (!CallValueId)<br>
           continue;<br>
+        // The mapping from OriginalId to GUID may return a GUID<br>
+        // that corresponds to a static varible. Filter it out here.<br></blockquote><div><br></div><div>I think the comment should indicate why this happens - specifically because multiple (mostly) local values will have the same OriginalId, and we are guessing since sample PGO doesn't have better precision.</div><div>(also, typo in "variable").</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+        auto *GVSum = Index.getGlobalValueSummary(<wbr>GUID, false);<br>
+        if (GVSum &&<br>
+            GVSum->getSummaryKind() == GlobalValueSummary::<wbr>GlobalVarKind)<br>
+          continue;<br>
       }<br>
       NameVals.push_back(*<wbr>CallValueId);<br>
       if (HasProfileData)<br>
<br>
Added: llvm/trunk/test/Transforms/<wbr>FunctionImport/Inputs/<wbr>funcimport_var2.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/FunctionImport/Inputs/funcimport_var2.ll?rev=311023&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/test/<wbr>Transforms/FunctionImport/<wbr>Inputs/funcimport_var2.ll?rev=<wbr>311023&view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/test/Transforms/<wbr>FunctionImport/Inputs/<wbr>funcimport_var2.ll (added)<br>
+++ llvm/trunk/test/Transforms/<wbr>FunctionImport/Inputs/<wbr>funcimport_var2.ll Wed Aug 16 10:18:01 2017<br>
@@ -0,0 +1,7 @@<br>
+@link = internal global i32 0, align 4<br>
+<br>
+; Function Attrs: norecurse nounwind readnone uwtable<br>
+define nonnull i32* @get_link() local_unnamed_addr {<br>
+  ret i32* @link<br>
+}<br>
+<br>
<br>
Added: llvm/trunk/test/Transforms/<wbr>FunctionImport/funcimport_var.<wbr>ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/FunctionImport/funcimport_var.ll?rev=311023&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/test/<wbr>Transforms/FunctionImport/<wbr>funcimport_var.ll?rev=311023&<wbr>view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/test/Transforms/<wbr>FunctionImport/funcimport_var.<wbr>ll (added)<br>
+++ llvm/trunk/test/Transforms/<wbr>FunctionImport/funcimport_var.<wbr>ll Wed Aug 16 10:18:01 2017<br>
@@ -0,0 +1,13 @@<br>
+; This test makes sure a static var is not selected as a callee target<br>
+; (which will crash compilation).<br>
+; RUN: opt -module-summary %s -o %t.bc<br>
+; RUN: opt -module-summary %p/Inputs/funcimport_var2.ll -o %t2.bc<br>
+; RUN: llvm-lto -thinlto -thinlto-action=thinlink -o %t3 %t.bc %t2.bc<br>
+; RUN: llvm-lto -thinlto -thinlto-action=import -thinlto-index=%t3 %t.bc %t2.bc<br>
+define i32 @_Z4LinkPKcS0_(i8*, i8*) local_unnamed_addr  {<br>
+  %3 = tail call i32 @link(i8* %0, i8* %1) #2<br>
+  ret i32 %3<br>
+}<br>
+<br>
+; Function Attrs: nounwind<br>
+declare i32 @link(i8*, i8*) local_unnamed_addr<br>
<br>
<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>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><span style="font-family:Times;font-size:medium"><table cellspacing="0" cellpadding="0"><tbody><tr style="color:rgb(85,85,85);font-family:sans-serif;font-size:small"><td nowrap style="border-top-style:solid;border-top-color:rgb(213,15,37);border-top-width:2px">Teresa Johnson |</td><td nowrap style="border-top-style:solid;border-top-color:rgb(51,105,232);border-top-width:2px"> Software Engineer |</td><td nowrap style="border-top-style:solid;border-top-color:rgb(0,153,57);border-top-width:2px"> <a href="mailto:tejohnson@google.com" target="_blank">tejohnson@google.com</a> |</td><td nowrap style="border-top-style:solid;border-top-color:rgb(238,178,17);border-top-width:2px"> 408-460-2413</td></tr></tbody></table></span></div>
</div></div>