How to get Scalar Evolution information of a loop in a Function Pass (original) (raw)
Hi everyone,
I am writing a function pass where I need to know the tripcount of each loop. I try to get the ScalarEvolution using the following code:
unsigned getLoopTripcount(llvm::Function &F, llvm::LoopInfo &LI, llvm::Loop *loop)
{
llvm::ScalarEvolutionWrapperPass sewp = llvm::ScalarEvolutionWrapperPass();
llvm::ScalarEvolution &se = sewp.getSE();
unsigned tripcount = se.getSmallConstantTripCount(loop);
return tripcount;
}
Which leads to a segmentation fault.
I also tried a bunch of stuff like:
llvm::ScalarEvolution *SE = &FAM.getResult<llvm::ScalarEvolution>(F);
which does not even compile .
Can someone give me some pointers on what I am getting wrong?
Thanks
Found it. Looks like I was close. This works:
llvm::ScalarEvolution &SE = FAM.getResult<llvm::ScalarEvolutionAnalysis(F);
unsigned tripcount = SE.getSmallConstantTripCount(loop);