[LLVMdev] how to eliminate dead infinite loops?
Andrew Clinton
andrew at sidefx.com
Tue Nov 23 09:22:05 PST 2010
Most of my programs contain loops that the LoopDeletion pass is unable
to remove. It appears that the following code in LoopDeletion.cpp:152
is the culprit:
ScalarEvolution& SE = getAnalysis<ScalarEvolution>();
const SCEV *S = SE.getMaxBackedgeTakenCount(L);
if (isa<SCEVCouldNotCompute>(S))
return Changed;
So, LoopDeletion thinks my loops might be infinite so it does not delete
them - even if they do not write to any of the function return values.
Is there a way to flag a loop as non-infinite? Or will I need to create
my own modified loop deletion pass that can eliminate potentially
infinite loops. Is it correct just to remove the above code to allow
deletion of infinite loops?
Andrew
More information about the llvm-dev
mailing list