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::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 !