[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