[llvm-dev] Delinearization validity checks in DependenceAnalysis

Bardia Mahjour via llvm-dev llvm-dev at lists.llvm.org
Wed May 29 10:38:39 PDT 2019


Hi Siddharth,

I'd be interested in taking a look at your proposal once it becomes
available.

Thanks,

Bardia Mahjour
Compiler Optimizations
Hydra Squad Lead
IBM Toronto Software Lab
bmahjour at ca.ibm.com (905) 413-2336





From:	Siddharth Bhat via llvm-dev <llvm-dev at lists.llvm.org>
To:	Hubert Tong <hubert.reinterpretcast at gmail.com>
Cc:	"llvm-dev at lists.llvm.org" <llvm-dev at lists.llvm.org>, SAHIL
            GIRISH YERAWAR <cs15btech11044 at iith.ac.in>, nd <nd at arm.com>,
            Michael Ferguson <mferguson at cray.com>
Date:	2019/05/29 04:46 AM
Subject:	[EXTERNAL] Re: [llvm-dev] Delinearization validity checks in
            DependenceAnalysis
Sent by:	"llvm-dev" <llvm-dev-bounces at lists.llvm.org>



Hello,

After Sahil's GSoC 2018 project on integrating Chapel into Polly, and
running into similar issues with delinearization multiple times before, we
began drafting up an RFC to introduce these kinds of
"multidimensional accesses" directly into LLVM to lower languages such as
Fortran which have these "multi-dimensional" semantics.

The RFC is still work-in-progress, but feedback would be appreciated. We're
trying to work out some of the rough edges out before posting it.

Thanks,
~Siddharth.


On Sat, May 25, 2019 at 12:31 AM Hubert Tong via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
  On Fri, May 24, 2019 at 3:55 PM Michael Kruse via llvm-dev <
  llvm-dev at lists.llvm.org> wrote:
   [CC bollu, mferguson, shil]

   Am Do., 23. Mai 2019 um 17:13 Uhr schrieb Bardia Mahjour <
   bmahjour at ca.ibm.com>:
     Thanks David and Michael for the clarification.

     I think I understand the rational behind those checks in
     delinearization now.

     > Some other languages have stronger guarantees about their array
     dimensions accesses being in range. But this being a flat C array,
     there is nothing out-of-bounds going on.

     Hmm...perhaps some information about these guarantees can come from
     the IR that the front-ends produce. I'm wondering if the 'inrange'
     keyword (or maybe a new keyword) can be used for this purpose?



   If the source is C/C++, the inrange keyword cannot be used because of
   the language's semantics (see below).

   Also, GetElementPtr will always only work with constant-sized array. A
   student from last year's GSoC (CC'd) is working on such an extension
   (with intended use by Chapel).

     I had a discussion about this syntax with some C standard experts and
     there seems to be disagreements on whether an out-of-bound access with
     respect to an individual dimension is defined behaviour or not. I do
     not mean to start that discussion here, especially because there may
     be code in the field relying on certain interpretation of the
     standard, but just want to mention that option-control maybe a good
     way to deal with complications like this.



   For clarification: In C, subscripts themselves have no semantics, they
   are defined as syntactic sugar:

   C18, 6.5.2.1,  §2
   > The definition of the subscript operator[] is that E1[E2] is
   identical to(*((E1)+(E2)))

   Using arithmetic properties, &A[1][0] == (char*)A + 2 == &A[0][2] (for
   an array declared "char A[2][2]"). The indirection operator (*) is only
   undefined if it yields to an access to an invalid address (C18, note
   104).
  Yes, the addresses are equal, but you make a point of talking about the
  indirection operator.
  Subclause 6.5.6 says: If the result points one past the last element of
  the array object, it shall not be used as the operand of a unary *
  operator that is evaluated.

  &A[0][2] produces a result that points one past the last element of the
  array A[0].


   Michael

   _______________________________________________
   LLVM Developers mailing list
   llvm-dev at lists.llvm.org
   https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
  _______________________________________________
  LLVM Developers mailing list
  llvm-dev at lists.llvm.org
  https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
  _______________________________________________
  LLVM Developers mailing list
  llvm-dev at lists.llvm.org
  https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_llvm-2Ddev&d=DwIGaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=aihobyOnVzXW7OPSK1-NiSYQkq7oP3ZSUVc4BemvrVo&m=Y7lhygDMHZeFzRFQy8RKwGxz4WAxyqbvKbEAYBRBEVk&s=Pl5VFk1WvH4tHoB2poMm-Jt3avCmb2Nr7qamFZodZ6A&e=



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190529/4e7d9c33/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: graycol.gif
Type: image/gif
Size: 105 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190529/4e7d9c33/attachment.gif>


More information about the llvm-dev mailing list