<div dir="ltr">Well, they are from address space zero, just like all allocas and other stack memory, right?</div><br><div class="gmail_quote"><div dir="ltr">On Tue, Sep 25, 2018 at 1:45 PM Pan, Wei via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@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">





<div lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="m_-4200403015045397291WordSection1">
<p class="MsoNormal"><span style="color:black">Hello,<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:black">With the following reduced test case, cmd “opt -always-inline t.ll” crashes after inlining. Notice that byval argument %a will be remapped to %1 below, and consequently produces an illegal store.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:black">%1 = alloca i32, align 4<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">store i32 * %1, i32 addrspace(1)** %a.addr, align 8<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:black">Looks like Inliner assumes that byval arguments are from address space 0. Or this is just a bug in inliner?<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:black">Thanks,<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">Wei<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:black">t.ll:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:black">define i32 @foo(i32 addrspace(1)* %x) {<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">entry:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">  %y = call i32 @bar(i32 addrspace(1)* %x)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">  ret i32 %y<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">}<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:black">define internal i32 @bar(i32 addrspace(1)* byval %a) alwaysinline {<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">  %a.addr = alloca i32 addrspace(1)*, align 8<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">  store i32 addrspace(1)* %a, i32 addrspace(1)** %a.addr, align 8<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">  %a1 = load i32 addrspace(1)*  , i32 addrspace(1)** %a.addr, align 8<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">  %b = load i32, i32 addrspace(1)* %a1, align 4<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">  ret i32 %b<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">}<u></u><u></u></span></p>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>

_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div>