[LLVMdev] Function Pass - Control Flow with uses-iterator

Eli Friedman eli.friedman at gmail.com
Tue Jul 5 14:00:28 PDT 2011


On Tue, Jul 5, 2011 at 1:46 PM, Benjamin Müller
<mueller.benjamin1 at googlemail.com> wrote:
> Hey there,
> i have a BasicBlock and in this BB i am going over it finding out the "uses"
> of each instruction to find out the dataflow, but how do i find out the
> control flow?
> or like how do i know that the next load function loads from a previous
> store function - i cant find this out with the uses iterator because of the
> SSA form.
>
> 1. %In2 = alloca float, align 4 (uses: instr. 12 and 13)
> ..
> ..
> 12. store % float %5, float* In2 (uses: nothing)
> 13. %6 = load float* %In2 (uses : ...)
>
> so instruction nr. 12 should tell me that its being used in 13.
> Is this possible?

Take a look at llvm/Analysis/MemoryDependenceAnalysis.h ; it can do
computations similar to what you're looking for.

-Eli




More information about the llvm-dev mailing list