[PATCH] D100331: [Dependence Analysis] Fix ExactSIV producing wrong analysis

Michael Kruse via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 26 14:34:02 PDT 2021


Meinersbur accepted this revision.
Meinersbur added a comment.
This revision is now accepted and ready to land.

I am approving this patch seeing that it is a significant improvement.

For `exact0`, you both seem to agree that it should be handled in a separate patch.



================
Comment at: llvm/test/Analysis/DependenceAnalysis/Coupled.ll:554
 ; CHECK: da analyze - none!
-; CHECK: da analyze - flow [<]!
+; CHECK: da analyze - flow [=|<]!
 ; CHECK: da analyze - confused!
----------------
Looks correct. Only intersection of accessed elements is when 3*i-18 = 18-i = i, which solves to i = 9.


================
Comment at: llvm/test/Analysis/DependenceAnalysis/ExactSIV.ll:19
 ; CHECK: da analyze - none!
-; CHECK: da analyze - flow [>]!
+; CHECK: da analyze - flow [<=|<]!
 ; CHECK: da analyze - confused!
----------------
Meinersbur wrote:
> artemrad wrote:
> > bmahjour wrote:
> > > The `<=` part is correct, but I'm not sure about the `|<` part. The dependence is loop carried for the most part (except when i = 9). I think this might be because we treat the existence of an `EQ` as signifying loop independent dependence, which should probably be reconsidered in a separate patch.
> > You are correct, that is exactly the reason for `|<`. I have another patch down the line to fix this confusing notation.  
> This is marked as done, but I don't see being it addressed.
`|<` is printed when `isLoopIndependent()` returns true. If "loop independent" means the absence of loop-carried dependences, then `|<` is wrong; i=5..8 are loop-carried.

What is your improved notation?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D100331/new/

https://reviews.llvm.org/D100331



More information about the llvm-commits mailing list