[LLVMdev] LLVM and OpenMP

Wojciech Matyjewicz wmatyjewicz at fastmail.fm
Fri Jan 18 06:28:36 PST 2008

>> Yup, just get the array accesses under scev form, and set a constraint
>> system from these.  Once you set up the constraint systems for the
>> dependence distance vectors, you're almost done.  You can look at how
>> this is set up in gcc trunk tree-data-ref.c, and search for omega.
>> I would recommend the omega test: get the c++ code for omega lib from
>> http://www.cs.umd.edu/projects/omega/
> Regardless of which solver you use, you should keep a clean interface  
> between your constraint representation and the solver.  I like Omega a  
> lot and it is a fine choice for the first solver.  Although it is very  
> powerful, even it cannot handle symbolic loop strides.  Perhaps more  
> importantly for common uses, for many trivial cases (A[x] and A[x+1]),  
> setting up the Omega data structures to invoke the solver can be too  
> heavyweight.  It could be worthwhile to add one or more simple solvers  
> (see the Allen and Kennedy textbook for examples) before falling back  
> on Omega.

Sebastian, Vikram, thank you for the advices.

My initial plan was to implement the methods from the Allen and Kennedy
book. I'll see if I find time to add the Omega solver as a fallback,
too. I am not very familiar with GCC internals, but having taken a look
at tree-data-ref.c, it seems it would be the same approach as there.


More information about the llvm-dev mailing list