Hi,
How do I access the loop variables in a loop.
for(i = 0; i < N; i++)
for(j = 0; j < M; j++)
A[i][j+k] = i + j;
Is there anyway for me to know that in A[i][j+k], i & j are loop variables
whereas k is not!
Regards,
Prasenjit Chakraborty
Performance Modeling and Analysis
IBM Systems & Technology Lab
Hi,
You can use the getInductionVariable() on each loop,and maintain a smallvect of all induction variables that you have come across.
Also remember to run some passes to hoist loop independent entities out of the loop.
Cheers
Dhruv
The ScalarEvolution analysis can help here. If you've already identified
i, j, and k yourself, you can call getSCEV on them and use the
isLoopInvariant and hasComputableLoopEvolution member functions.
ScalarEvolution doesn't yet help in identifying the indices used in
each dimension of a multi-dimensional array reference in the way that a
traditional dependence analysis would want to see them, though that's
a future goal.
Dan
I have not identified i, j or k. The whole point is I want to know that
there are variables i & j which are loop variables.
Calling getInductionVariab;le() returns NULL, reason being I don't see any
PHINode in the loop.
Regards,
Prasenjit Chakraborty
Performance Modeling and Analysis
IBM Systems & Technology Lab
Dan Gohman
<gohman@apple.com
> To
Prasenjit
10/12/2009 11:13 Chakraborty/India/IBM@IBMIN
PM cc
llvmdev@cs.uiuc.edu
Subject
Re: [LLVMdev] Accessing Loop
Variables
Hi,
How do I access the loop variables in a loop.
for(i = 0; i < N; i++)
for(j = 0; j < M; j++)
A[i][j+k] = i + j;
Is there anyway for me to know that in A[i][j+k], i & j are loop
variables
whereas k is not!
The ScalarEvolution analysis can help here. If you've already identified
i, j, and k yourself, you can call getSCEV on them and use the
isLoopInvariant and hasComputableLoopEvolution member functions.
ScalarEvolution doesn't yet help in identifying the indices used in
each dimension of a multi-dimensional array reference in the way that a
traditional dependence analysis would want to see them, though that's
a future goal.
Dan