[LLVMdev] Extracting the global variables accessed by individual function with function pass

Duncan Sands baldrick at free.fr
Mon Sep 2 04:15:25 PDT 2013


> Is there a way to dump the global variables, which are accessed (read/written
> to) by each function within the LLVM function pass?
> Any pointers on how that info can be extracted in LLVM for each function in the
> application?

you will have to write your own pass to do this.  For each global, visit each
of its uses (via use_begin, use_end).  If the use is a constant (isa<Constant>),
visit each of its uses too (do this recursively until you aren't visiting
constants any more).  If a use isn't a constant, check whether it's parent
(getParent) is the function you are interested in.  The point of recursing on
constant uses is that the global may be used in a constant expression (eg a
constant bitcast) before actually being used by an instruction.

Ciao, Duncan.

More information about the llvm-dev mailing list