[LLVMdev] Separate loop condition and loop body

Xinfinity xinfinity_a at yahoo.com
Mon May 10 08:43:36 PDT 2010


Hi,

Is it possible to get the list of BasicBlocks building the condition of a
loop and the list of BasicBlocks that form the body? My first approach was
to iterate over the list of all Basicblocks of a loop and separate the
header as the condition and the remaining as the body of the loop. However,
this is not correct for instance in the case of a while loop in the form:
while( A & B) do
{  body  }

My aim is to manipulate for loops, while and do-while loops unitary, but I
did not find an easy way to do this. I tried also to apply passes like
"Canonicalize natural loops", "Canonicalize Induction Variables" or "Natural
Loop Construction" such that the loops were represented in the same form.
Still I do not find a one-to-one link between the loop condition, body and
end,  and the BasicBlocks returned by the getHeader, getLoopLatch etc.

My next strategy would be to modify the front-end, clang, and attach
metadata to indicate whether the BasicBlock is part of the condition or of
the body of the loop.

I would very much appreciate if you could suggest an easier way to
differentiate between the parts of the loop.

Thank you,
Alexandra
-- 
View this message in context: http://old.nabble.com/Separate-loop-condition-and-loop-body-tp28512281p28512281.html
Sent from the LLVM - Dev mailing list archive at Nabble.com.




More information about the llvm-dev mailing list