<div dir="ltr">Thanks for the info. Let me clarify something that might have caused confusion: When I said 2D arrays above, I meant<br>double pointers, which is another beast on its own. Basically my example states that e.g. a[0][1] and a[0][2] could easily<br>point to the same exact memory.<br><br>Now, returning the discussion to _static arrays_, which is more realistic anyway in high-performance code, I think I would<br>be very happy to see GEP with dynamic sizes. In my current work, I depend on SCEV Delinearization to recover the<br>indices (I guess many people have had to do that, for no actual reason).<br><br>> We also had a discussion whether `A[i][j]` can be lowered to a<br>> GetElementPtr with `inrange` keyword for the subscripts, including for<br>> statically sized arrays.<br><br>To lower it to _one_ GEP, wouldn't that require GEPs with dynamic sizes?<br><br>Also, to be sure we're on the same page, this is beneficial because, as in the RFC example, if we have<br>A[x1][y1] and A[x2][y2] and x1 != x2 and y1 != y2, then the two don't alias. Actually, if `inrange` works<br>as expected, even if one of the conditions holds, the two don't alias.<br><br>- Stefanos</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Στις Τρί, 21 Ιουλ 2020 στις 12:18 π.μ., ο/η Michael Kruse <<a href="mailto:llvmdev@meinersbur.de">llvmdev@meinersbur.de</a>> έγραψε:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Am Mi., 15. Juli 2020 um 14:18 Uhr schrieb David Greene via llvm-dev<br>
<<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>>:<br>
> Stefanos Baziotis via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> writes:<br>
><br>
> > Well... I tried that and it doesn't seem to be very useful<br>
> > unfortunately.  The C/C++ way that arrays are defined is probably why<br>
> > DA is not that useful. Namely that a row can alias with another row in<br>
> > 2D arrays. The theory behind DA is quite powerful if we knew that they<br>
> > don't alias. Right now, it just gives up.<br>
><br>
> Note that the situation is very different in flang, where good<br>
> dependence analysis becomes much more critical.<br>
<br>
There was an RFC on the mailing list to support a GetElementPtr with<br>
dynamic array sizes:<br>
<a href="http://lists.llvm.org/pipermail/llvm-dev/2019-July/134063.html" rel="noreferrer" target="_blank">http://lists.llvm.org/pipermail/llvm-dev/2019-July/134063.html</a><br>
<br>
We also had a discussion whether `A[i][j]` can be lowered to a<br>
GetElementPtr with `inrange` keyword for the subscripts, including for<br>
statically sized arrays.<br>
<br>
Michael<br>
</blockquote></div>