<div dir="ltr">Hi Eugene<span style="color:rgb(31,73,125);font-family:"Courier New";font-size:13.3333px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">,</span><br><div class="gmail_extra"><br><div class="gmail_quote">On 25 April 2018 at 22:39, Epshteyn, Eugene via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@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">





<div lang="EN-US" link="blue" vlink="purple">
<div class="m_-984700677894734789WordSection1">
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:#1f497d">Hello,<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:#1f497d">I believe these descriptors are specific to flang, not to LLVM.  You should probably ask your question on flang-dev list.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:#1f497d">Thank you,<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:#1f497d">--Eugene</span></p></div></div></blockquote><div><br></div><div>Thanks I will check with flang dev list. </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="EN-US" link="blue" vlink="purple"><div class="m_-984700677894734789WordSection1"><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:#1f497d"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><a name="m_-984700677894734789______replyseparator"></a><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> llvm-dev [mailto:<a href="mailto:llvm-dev-bounces@lists.llvm.org" target="_blank">llvm-dev-bounces@<wbr>lists.llvm.org</a>]
<b>On Behalf Of </b>Venkataramanan Kumar via llvm-dev<br>
<b>Sent:</b> Wednesday, April 25, 2018 8:44 AM<br>
<b>To:</b> <a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<b>Subject:</b> [llvm-dev] Help on understanding assume shape array processing and array descriptors in LLVM IR<u></u><u></u></span></p><div><div class="h5">
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<p class="MsoNormal"><span style="font-size:9.5pt;font-family:"Arial",sans-serif;color:#222222;background:white">Hi,</span><span style="font-size:9.5pt;font-family:"Arial",sans-serif;color:#222222"><br>
<br>
<span style="background:white">I am trying to understand how assume shaped arrays are received and</span><br>
<span style="background:white">processed in LLVM IR.  I am using "flang" for my front end.</span><br>
<br>
<span style="background:white">There seems to be an array descriptor received as implicit argument</span><br>
<span style="background:white">for every assume shaped array.</span><br>
<br>
<span style="background:white">For my test routine:</span><br>
<br>
<span style="background:white">---snip--</span><br>
<span style="background:white">   SUBROUTINE test(a,b,Li,Lj,Istr,Iend,Jstr,<wbr>Jend)</span><br>
<span style="background:white">     INTEGER, INTENT(IN) :: Li,Lj</span><br>
<span style="background:white">     INTEGER, INTENT(IN) :: Istr, Iend, Jstr,Jend</span><br>
<span style="background:white">     INTEGER :: i, j</span><br>
<span style="background:white">     REAL*8, INTENT(INOUT)   :: a(Li:,Lj:)</span><br>
<span style="background:white">     REAL*8, INTENT(IN)      :: b(Li:,Lj:)</span><br>
<span style="background:white">--snip--</span><br>
<br>
<span style="background:white">I got the below LLVM IR, the parameters received.</span><br>
<br>
<span style="background:white">--snip--</span><br>
<span style="background:white">; Function Attrs: norecurse nounwind</span><br>
<span style="background:white">define void @test_(i64* noalias nocapture %a, i64* noalias nocapture</span><br>
<span style="background:white">readonly %b, i64* noalias nocapture readonly %li, i64* noalias</span><br>
<span style="background:white">nocapture readonly %lj, i64* noalias nocapture readonly %istr, i64*</span><br>
<span style="background:white">noalias nocapture readonly %iend, i64* noalias nocapture readonly</span><br>
<span style="background:white">%jstr, i64* noalias nocapture readonly %jend, i64* noalias nocapture</span><br>
<span style="background:white">readonly %"a$sd", i64* noalias nocapture readonly %"b$sd")</span><br>
<span style="background:white">local_unnamed_addr #0 !dbg !5 {</span><br>
<span style="background:white">--snip--</span><br>
<br>
<span style="background:white">Here "a$sd" and "b$sd" looks like array descriptors and received as</span><br>
<span style="background:white">implicit parameters.</span><br>
<br>
<span style="background:white">I found this article which explains how gfortran implements:</span><br>
</span><a href="http://thinkingeek.com/2017/01/14/gfortran-array-descriptor/" target="_blank"><span style="font-size:9.5pt;font-family:"Arial",sans-serif;color:#1155cc;background:white">http://thinkingeek.com/2017/<wbr>01/14/gfortran-array-<wbr>descriptor/</span></a><span style="font-size:9.5pt;font-family:"Arial",sans-serif;color:#222222"><br>
<br>
<span style="background:white">Can Someone throw some light on LLVM's array descriptors and how they</span><br>
<span style="background:white">are processed ?</span><br>
<br>
<span style="background:white">regards,</span><br>
<span style="background:white">Venkat.</span></span> <u></u><u></u></p>
</div>
</div></div></div>
</div>

<br>______________________________<wbr>_________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org">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/<wbr>mailman/listinfo/llvm-dev</a><br>
<br></blockquote></div><br></div></div>