[LLVMdev] Separate loop condition and loop body

Benoit Boissinot bboissin+llvm at gmail.com
Mon May 10 11:35:08 PDT 2010


On Mon, May 10, 2010 at 8:05 PM, Trevor Harmon <Trevor.W.Harmon at nasa.gov> wrote:
> On May 10, 2010, at 8:43 AM, Xinfinity wrote:
>
>> Is it possible to get the list of BasicBlocks building the condition
>> of a loop and the list of BasicBlocks that form the body?
>
> Based on my (limited) experience with Loop and LoopInfo, this isn't
> possible. (But don't take my word for it.)
>
>> 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 think the problem here is that LLVM's CFG is low-level enough such
> that the distinction between the loop header expression and the loop
> body is lost.
>
> Why exactly do you need to identify the blocks that form the loop
> header expression? I'm wondering if you could find some workaround
> that doesn't require this...
>
To me it looks like any basic block from the loop body with a
successor not in the loop body is a BB "building the condition" (an
"exit" block).
If you already have the loop body, it should be pretty easy to find
out about those nodes.

cheers,

Benoit



More information about the llvm-dev mailing list