<div dir="ltr"><div dir="ltr">Hi Teresa,<div><br></div><div>I've noticed some segfaults in ArgumentPromotion after this and another patch so I've temporarily reverted here:</div><div><br></div><div><div>echristo@athyra ~/s/llvm> git svn dcommit</div><div>Committing to <a href="https://llvm.org/svn/llvm-project/llvm/trunk">https://llvm.org/svn/llvm-project/llvm/trunk</a> ...</div><div><span style="white-space:pre">  </span>D<span style="white-space:pre">    </span>test/Transforms/ArgumentPromotion/dbg2.ll</div><div><span style="white-space:pre">     </span>M<span style="white-space:pre">    </span>lib/Transforms/IPO/ArgumentPromotion.cpp</div><div><span style="white-space:pre">      </span>M<span style="white-space:pre">    </span>test/Transforms/ArgumentPromotion/profile.ll</div><div>Committed r355060</div></div><div><br></div><div>I'll followup offline with a testcase for you.</div><div><br></div><div>Very sorry for the inconvenience.</div><div><br></div><div>-eric</div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Feb 13, 2019 at 3:49 PM Teresa Johnson 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:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr">Fix mailed in D58215. Teresa</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Feb 13, 2019 at 2:12 PM Teresa Johnson <<a href="mailto:tejohnson@google.com" target="_blank">tejohnson@google.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Sorry about that. Reproduced and testing the fix. Teresa</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Feb 13, 2019 at 2:49 AM Mikael Holmén <<a href="mailto:mikael.holmen@ericsson.com" target="_blank">mikael.holmen@ericsson.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Teresa,<br>
<br>
I noticed a case that starts failing with this patch.<br>
<br>
running<br>
<br>
opt -S -o - bbi-24380.ll -argpromotion -instcombine<br>
<br>
yields<br>
<br>
function declaration may not have a !dbg attachment<br>
void (i8*)* @0<br>
LLVM ERROR: Broken module found, compilation aborted!<br>
<br>
<br>
Regards,<br>
Mikael<br>
<br>
On 2/8/19 6:08 PM, Teresa Johnson via llvm-commits wrote:<br>
> Author: tejohnson<br>
> Date: Fri Feb  8 09:08:27 2019<br>
> New Revision: 353537<br>
> <br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=353537&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=353537&view=rev</a><br>
> Log:<br>
> ArgumentPromotion should copy all metadata to new Function<br>
> <br>
> Summary:<br>
> ArgumentPromotion had code to specifically move the dbg metadata over to<br>
> the new function, but other metadata such as the function_entry_count<br>
> !prof metadata was not. Replace code that moved dbg metadata with a call<br>
> to copyMetadata. The old metadata is automatically removed when the old<br>
> Function is removed.<br>
> <br>
> Reviewers: davidxl<br>
> <br>
> Subscribers: llvm-commits<br>
> <br>
> Tags: #llvm<br>
> <br>
> Differential Revision: <a href="https://reviews.llvm.org/D57846" rel="noreferrer" target="_blank">https://reviews.llvm.org/D57846</a><br>
> <br>
> Modified:<br>
>      llvm/trunk/lib/Transforms/IPO/ArgumentPromotion.cpp<br>
>      llvm/trunk/test/Transforms/ArgumentPromotion/profile.ll<br>
> <br>
> Modified: llvm/trunk/lib/Transforms/IPO/ArgumentPromotion.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/ArgumentPromotion.cpp?rev=353537&r1=353536&r2=353537&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/ArgumentPromotion.cpp?rev=353537&r1=353536&r2=353537&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/lib/Transforms/IPO/ArgumentPromotion.cpp (original)<br>
> +++ llvm/trunk/lib/Transforms/IPO/ArgumentPromotion.cpp Fri Feb  8 09:08:27 2019<br>
> @@ -216,10 +216,7 @@ doPromotion(Function *F, SmallPtrSetImpl<br>
>     Function *NF = Function::Create(NFTy, F->getLinkage(), F->getAddressSpace(),<br>
>                                     F->getName());<br>
>     NF->copyAttributesFrom(F);<br>
> -<br>
> -  // Patch the pointer to LLVM function in debug info descriptor.<br>
> -  NF->setSubprogram(F->getSubprogram());<br>
> -  F->setSubprogram(nullptr);<br>
> +  NF->copyMetadata(F, 0);<br>
>   <br>
>     LLVM_DEBUG(dbgs() << "ARG PROMOTION:  Promoting to:" << *NF << "\n"<br>
>                       << "From: " << *F);<br>
> <br>
> Modified: llvm/trunk/test/Transforms/ArgumentPromotion/profile.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/ArgumentPromotion/profile.ll?rev=353537&r1=353536&r2=353537&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/ArgumentPromotion/profile.ll?rev=353537&r1=353536&r2=353537&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/test/Transforms/ArgumentPromotion/profile.ll (original)<br>
> +++ llvm/trunk/test/Transforms/ArgumentPromotion/profile.ll Fri Feb  8 09:08:27 2019<br>
> @@ -1,17 +1,18 @@<br>
>   ; RUN: opt -argpromotion -mem2reg -S < %s | FileCheck %s<br>
>   target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"<br>
>   <br>
> -; Checks if !prof metadata is corret in deadargelim.<br>
> +; Checks if !prof metadata is correct after argpromotion<br>
>   <br>
>   define void @caller() #0 {<br>
>     %x = alloca i32<br>
>     store i32 42, i32* %x<br>
> -  call void @promote_i32_ptr(i32* %x), !prof !0<br>
> -; CHECK: call void @promote_i32_ptr(i32 42), !prof ![[PROF:[0-9]]]<br>
> +  call void @promote_i32_ptr(i32* %x), !prof !6<br>
> +; CHECK: call void @promote_i32_ptr(i32 42), !prof ![[PROF:[0-9]+]]<br>
>     ret void<br>
>   }<br>
>   <br>
> -define internal void @promote_i32_ptr(i32* %xp) {<br>
> +; CHECK: define internal void @promote_i32_ptr(i32 %xp.val) !dbg ![[DBG:[0-9]+]] !prof ![[FUNCPROF:[0-9]+]]<br>
> +define internal void @promote_i32_ptr(i32* %xp) !dbg !7 !prof !12 {<br>
>     %x = load i32, i32* %xp<br>
>     call void @use_i32(i32 %x)<br>
>     ret void<br>
> @@ -19,5 +20,22 @@ define internal void @promote_i32_ptr(i3<br>
>   <br>
>   declare void @use_i32(i32)<br>
>   <br>
> +!<a href="http://llvm.dbg.cu" rel="noreferrer" target="_blank">llvm.dbg.cu</a> = !{!0}<br>
> +!llvm.module.flags = !{!3, !4, !5}<br>
> +<br>
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 9.0.0 (trunk 353186) (llvm/trunk 353190)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, nameTableKind: None)<br>
> +!1 = !DIFile(filename: "profile.cc", directory: ".")<br>
> +!2 = !{}<br>
> +!3 = !{i32 2, !"Dwarf Version", i32 4}<br>
> +!4 = !{i32 2, !"Debug Info Version", i32 3}<br>
> +!5 = !{i32 1, !"wchar_size", i32 4}<br>
>   ; CHECK: ![[PROF]] = !{!"branch_weights", i32 30}<br>
> -!0 = !{!"branch_weights", i32 30}<br>
> +!6 = !{!"branch_weights", i32 30}<br>
> +; CHECK: ![[DBG]] = distinct !DISubprogram(name: "promote_i32_ptr"<br>
> +!7 = distinct !DISubprogram(name: "promote_i32_ptr", linkageName: "_ZL15promote_i32_ptrPi", scope: !1, file: !1, line: 2, type: !8, scopeLine: 2, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !0, retainedNodes: !2)<br>
> +!8 = !DISubroutineType(types: !9)<br>
> +!9 = !{null, !10}<br>
> +!10 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !11, size: 64)<br>
> +!11 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)<br>
> +; CHECK: ![[FUNCPROF]] = !{!"function_entry_count", i64 331}<br>
> +!12 = !{!"function_entry_count", i64 331}<br>
> <br>
> <br>
> _______________________________________________<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="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
> <br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail-m_243840717376675865gmail-m_314539943482641541gmail_signature"><div dir="ltr"><div><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:2px solid rgb(213,15,37)">Teresa Johnson |</td><td nowrap style="border-top:2px solid rgb(51,105,232)"> Software Engineer |</td><td nowrap style="border-top:2px solid rgb(0,153,57)"> <a href="mailto:tejohnson@google.com" target="_blank">tejohnson@google.com</a> |</td><td nowrap style="border-top:2px solid rgb(238,178,17)"><br></td></tr></tbody></table></span></div></div></div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail-m_243840717376675865gmail_signature"><div dir="ltr"><div><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:2px solid rgb(213,15,37)">Teresa Johnson |</td><td nowrap style="border-top:2px solid rgb(51,105,232)"> Software Engineer |</td><td nowrap style="border-top:2px solid rgb(0,153,57)"> <a href="mailto:tejohnson@google.com" target="_blank">tejohnson@google.com</a> |</td><td nowrap style="border-top:2px solid rgb(238,178,17)"><br></td></tr></tbody></table></span></div></div></div>
_______________________________________________<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="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div>