[llvm-dev] Using Scalar Evolution to Identify Expressions Evolving in terms of Loop induction variables
Sharif, Hashim via llvm-dev
llvm-dev at lists.llvm.org
Thu Nov 30 20:50:26 PST 2017
Hi,
I am using Scalar Evolution to extract access expressions (for load and store instructions) in terms of the loop induction variables.
I observe that the Scalar Evolution analysis is returning more expressions than I expect - including ones that are not defined
in terms of the loop induction variable. For instance in the following code:
for(unsigned long int bid = 0; bid < no_of_queries; bid++){
unsigned long int currNode = no_of_nodes / 2;
// process levels of the tree
for(int i = 0; i < logN; i++){
if((knodes[currNode].key) > keys[bid]){
currNode = knodes[currNode].left_id;
}
else if ((knodes[currNode].key) < keys[bid]){
currNode = knodes[currNode].right_id;
}
else{
break;
}
}
}
I expect to extract a SCEV expression for the variable *keys*, however, using ScalarEvolution I also get an expression
(using SE->getSCEV) for *knodes*. Since *knodes* does not evolve in terms of the loop induction variable I wasn't expecting to receive a SCEV
expression for it. Can anyone please point out how SCEV expressions evolving in terms of the loop induction variable
can be distinguished from expressions that are not.
-Hashim
University of Illinois at Urbana-Champaign
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20171201/77fee89a/attachment.html>
More information about the llvm-dev
mailing list