Loop data-dependence analysis

Hello,

I am very new in LLVM and I am trying to understand how to use it in my project.

I would like to write a Pass (?) that analyzes the loops in a program and says if the loop has a data dependence and what kind of data dependence.
Do you guys have any suggestion how do to it?

Thanks.
Best Regards,
Simone Atzeni

Hello,

I am very new in LLVM and I am trying to understand how to use it in my project.

I would like to write a Pass (?) that analyzes the loops in a program and says if the loop has a data dependence and what kind of data dependence.

Do you guys have any suggestion how do to it?

Thanks.

Best Regards,
Simone Atzeni

Hi Simone,

there are two existing approaches:

lib/Analysis/DependenceAnalysis.cpp uses a set of classical tests (GCD test). This pass is not used by any actual transformation code to my understanding also because it is incorrect in certain corner cases (Preston Briggs) should now the details and might also be able to guide you on how to improve it.

polly.llvm.org as a high-level loop transformation infrastructure includes a rather general dependence analysis that allows precise dependence checks for any set of affine-linear access functions.
See: tools/polly/lib/Analysis/Dependences.cpp

Cheers,
Tobias