[llvm-dev] How to get the arguments of a function call in LLVM?
Abid Malik via llvm-dev
llvm-dev at lists.llvm.org
Thu Jan 16 10:11:56 PST 2020
Hello,
I am using the following to capture the values of the arguments in a call
function:
for (auto &BB : F) {
for (auto &II : BB) {
if (CallInst *c = dyn_cast <CallInst> (&II)){
if ( Function *func =
c->getCalledFunction()){
if ( func->getName()
=="__kmpc_for_static_init_4" ||
func->getName() ==
"__kmpc_for_static_fini" )
{
errs() << func->getName();
errs() << "\n";
for(auto arg =
func->arg_begin(); arg != func->arg_end(); ++arg) {
errs() << *arg <<
"\n";
if(auto* ci =
dyn_cast<ConstantInt>(arg))
errs() <<
ci->getValue() << "\n";
}
}
}
}
}
}
I am looking for two specific calls for OMP in the *.ll file. For the
following:
call void @__kmpc_for_static_init_4(%struct.ident_t* @0, i32 %17, i32 34,
i32* %8, i32* %5, i32* %6, i32* %7, i32 1, i32 1)
I am able to see it and get the following:
__kmpc_for_static_init_4
%struct.ident_t* %0
i32 %1
i32 %2
i32* %3
i32* %4
i32* %5
i32* %6
i32 %7
i32 %8
The three arguments ( third ( schedule) and the last two; loop increment
and chunk size are constant). The innermost loop should get them but it
seems the test command fails on these three arguments. Also, the argument
variable are different from the actual variable from the *.ll file.
Any comments.
Thanks,
--
Abid M. Malik
******************************************************
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200116/e0746845/attachment.html>
More information about the llvm-dev
mailing list