[LLVMdev] How to get the const argument data from Function?

Zhen Zhang izgzhen at gmail.com
Tue Jul 28 18:21:06 PDT 2015


Hi,

I am doing a project involving checking a called specific function’s
argument. Suppose that the function is int f(const char* str).

When I am analyzing such a snippet:

f("hello")

, then compiled by Clang, I will have the “hello” as a *Constant Array* in
the IR code. My goal is to call APIs of LLVM to get the “hello” from IR
code.

Now suppose the I got the llvm::Function* fn from some Module, so I can get
the access the ArgumentList by iterator const_arg_iterator it.

However, the iterator now I got is of type llvm::ilist_iterator<const
llvm::Argument>::const_iterator. When I am trying to cast it into
`llvm::ilist_iterator<const
llvm::ConstantArray>::const_iterator, it can’t success. But if I get the
raw pointer out of it, the program will simply crash.

While Argument inherits Value, ConstantArray inherits Value as well. But *how
should I cast one into another*? It is worth nothing that, hen I used
getType()->getTypeID(), it is ConstantArrayVal, and that seems to be the
right direction.

Thanks for any help!

- Zhen
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150729/9535c88a/attachment.html>


More information about the llvm-dev mailing list