<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri,Arial,Helvetica,sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
MLIR  is sufficiently expressive to capture general multidimensional <br>
array references without lose of information.  Fortran pointers<br>
may require speicial handling, as non-contiguous memory may be<br>
described - forward or backward in each dimension.<br>
    p => A(I1:I2:-3, J1:j2, K1:k2:K3)<br>
Fortran also permits empty arrays: call S(A(1:0)).<br>
<br>
The BIG design chooses include:<br>
  1. Augment LLVM IR to provide a more general GEP; continue loop restructuring<br>
      work in LLVM; MLIR may be used for additional high-level optimization.<br>
OR<br>
   2. Create a middle-LLVM that works on MLIR; do all loop restructuring here;<br>
       phase out existing LLVM loop restructuring .<br>
OR<br>
   3. adopt MLIR in LLVM ... (a bridge too far).<br>
<br>
In my mind, delinearization is a side issue.  The central problem is retaining<br>
subscript information needed for loop restructuring.  Broad agreement is<br>
clearly needed up front.<br>
</div>
</body>
</html>