[PATCH] D36791: [Polly][Bug fix] Wrong dependences filtering during Fully Indexed expansion

Bonfante Nicolas via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 18 08:09:19 PDT 2017


niosega added inline comments.


================
Comment at: lib/Transform/MaximalStaticExpansion.cpp:166
+
+        // Filter out Statement to Statement dependences.
+        if (!Map.can_curry())
----------------
Meinersbur wrote:
> niosega wrote:
> > Meinersbur wrote:
> > > niosega wrote:
> > > > Meinersbur wrote:
> > > > > Why? How can this happen?
> > > > I don't know why but when I am asking AL_Reference or AL_Access dependencies, I also get Statement to Statement dependencies in the union_map. So I need to filter these out. Am I doing something wrong in the dependencies retrieval call ?
> > > I think this is due to the broken dependency info in case there are reduction candidates. Did you switch off reduction detection?
> > With -polly-dependences-use-reductions=false in the opt command line, I still have the Statement to Statement dependencies.
> > 
> Can you check whether these are the same as the reference-level dependencies (i.e. without the tag)?
> 
> In any case, AL_Access and AL_Reference are very broken. We'll have to fix that one day.
For the following source code :
```
void mse(double A[Ni], double B[Nj], double C[Nj], double D[Nj]) {
  int i,j;
  for (j = 0; j < Ni; j++) {
    for (int i = 0; i<Nj; i++)
      B[i] = i;
    for (int i = 0; i<Nj; i++)
      D[i] = i;
    A[j] = B[j];
    C[j] = D[j];
  }
}
```

I have these AL_Ref deps :
```
Stmt_for_body9[i0, i0] -> Stmt_for_end15[i0] : 0 <= i0 <= 9999; 
Stmt_for_body4[i0, i0] -> Stmt_for_end15[i0] : 0 <= i0 <= 9999;
 [Stmt_for_body4[i0, i0] -> MemRef_B[]] -> [Stmt_for_end15[i0] -> MemRef_B[]] : 0 <= i0 <= 9999; 
[Stmt_for_body9[i0, i0] -> MemRef_D[]] -> [Stmt_for_end15[i0] -> MemRef_D[]] : 0 <= i0 <= 9999 
```

And these AL_Statement deps :
```
Stmt_for_body9[i0, i0] -> Stmt_for_end15[i0] : 0 <= i0 <= 9999; 
Stmt_for_body4[i0, i0] -> Stmt_for_end15[i0] : 0 <= i0 <= 9999 
```

The dependencies seems to be correct and coherent.


Repository:
  rL LLVM

https://reviews.llvm.org/D36791





More information about the llvm-commits mailing list