[LLVMdev] How to relate Instructions during vs. after runOnModule for AA?

Christian Convey christian.convey at gmail.com
Mon Jun 22 13:01:37 PDT 2015


Hi all,

I'm playing around with flow-sensitive AA, and it does a hefty amount of
work in its *runOnModule*(...) method.  So I need a reliable way of
relating the *Value* parameters supplied to the alias-query methods, back
to the corresponding objects (Instructions, etc.) available when the
*runOnModule*(...) method ran.  I *really* don't want to redo the analysis
for a given IR instruction if I don't need to.

But I'm not finding much info as to whether or not I can count on my
*runOnModule(...)* and my *alias*(...) methods being shown the same set of
Instruction and Function objects as each other, in cases where the IR
hasn't been modified.

It seems like LLVM IR basic blocks and instructions are only meant to be
identified in one way: by the memory address of whatever *BasicBlock* or
*Instruction* object is currently models it.  I.e., I haven't come across
any other canonical way people use to refer to a given BB or instruction in
the IR, assuming the IR hasn't been modified by any pass in the mean time.

The documentation for *WeakVH* sounds like it may be designed to force the
kind of consistency I'm looking for, but I couldn't quite be sure.

I imagine I could dream up a stable naming scheme for each BB and
instruction in a given function.  But if no one else has found a need to do
that, it seems fishy that I would.

Thanks, Christian
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150622/8c300484/attachment.html>


More information about the llvm-dev mailing list