[llvm-dev] How to get information about data dependencies?

Michael Kruse via llvm-dev llvm-dev at lists.llvm.org
Tue Jul 7 14:24:41 PDT 2020


Am Di., 7. Juli 2020 um 10:39 Uhr schrieb Stefanos Baziotis
<stefanos.baziotis at gmail.com>:
> Their most important difference is that DA is used for compile-time / static checks while LAA is mainly used for generating run-time checks.

Note that when the development of LAA started
(https://github.com/llvm/llvm-project/commit/d517976758c8674bdcd4c74457f7a83f20e432c5)
it also did static checks only, even though DA already existed in the
code base (https://github.com/llvm/llvm-project/blob/d517976758c8674bdcd4c74457f7a83f20e432c5/llvm/lib/Analysis/DependenceAnalysis.cpp).

> Now, more to their core, DA is based on strong theoretical background and has a phenomenally clean implementation
> (basically, if you have understood the paper, which itself is written as a textbook chapter, since it kind of is, you have understood
> almost all DA).
> LAA on the other hand is a very hacky implementation and takes quite some time just to understand what it tries to do.
> It's hard to read. Note though that I know too little to criticize. This is just how it seems to me.
>
> It doesn't seem that strange to me that LAA had to be developed since if you see its test-suite, i.e. the problems it had to solve,
> for a lot of them, DA just gives up while LAA generates run-time checks. Now, as to why it had to be implemented
> in the way it was done, I would very much like to learn.
>
> Now, as for unifying them, if we mean something other than just putting them in the same file, I don't think it can happen.
> IMHO they're way more apart than it initially seems.

Thanks for sharing your analysis.

Michael


More information about the llvm-dev mailing list