[LLVMdev] llvm alloca dependencies

Alexandru Ionut Diaconescu alexandruionutdiaconescu at gmail.com
Mon Jan 21 03:22:39 PST 2013

Hello everyone !

I am trying to determine for certain Load instructions from my pass their
corresponding Alloca instructions (that can be in other previous blocks).
The chain can be something like : `TargetLoad(var) -> other stores/loads
that use var (or dependencies on var) -> alloca(var).` , linked on several
basic blocks. Do you know how can I do it?

I tried to use the methods from DependenceAnalysis and
MemoryDependenceAnalysis, but the results were not correct. For instance,
`MemoryDependenceAnalysis::getDependency` should be good with option "Def",
but works only for stores, not for loads. Also I have a segfault when
trying to use `MemoryDependenceAnalysis::getNonLocalPointerDependency` or
`MemoryDependenceAnalysis::getPointerDependencyFrom` . When I try to check
my result using MemDepResult::getDef(), the result for Load instructions is
the same instruction ! So its depending on itself, that being weird since
it is using a variable that is previously defined in the code.

I also was no able to use DependenceAnalysis::depends() or getSrc() etc.

The alternative of making the intersection for identifying common parts
between all the variables used by target_load_instructions and all the
allocated variables is not an option. Because there might be something like
: `alloca(a) ... c=a*b+4 .... load(c)`.

Thank you for any suggestion !
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130121/435f7914/attachment.html>

More information about the llvm-dev mailing list