[llvm-dev] How to get the arguments of a function call in LLVM? (original) (raw)
Dipanjan Das via llvm-dev llvm-dev at lists.llvm.org
Wed Apr 19 09:05:46 PDT 2017
- Previous message: [llvm-dev] API to Differentiate between SSA and non SSA form
- Next message: [llvm-dev] How to get the arguments of a function call in LLVM?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
I want to write an LLVM pass that'll extract the arguments of function calls. If the argument is a constant one, my objective is to recover what that constant is.
The IR looks like
%2 = call noalias i8* @malloc(i64 512) #3
The LLVM pass looks like
bool runOnFunction(Function &F) override {
for (auto& B : F) {
for (auto& I : B) {
if(CallInst* call_inst = dyn_cast<CallInst>(&I)) {
Function* fn = call_inst->getCalledFunction();
StringRef fn_name = fn->getName();
errs() << fn_name << " : " <<
call_inst->getArgOperand(0) << "\n"; for(auto arg = fn->arg_begin(); arg != fn->arg_end(); ++arg) { errs() << *arg << "\n"; } } } }
return false;
}
If I run the pass through opt
, it produces the following
malloc : 0x3df3f40
i64 %0
What does 0x3df3f40
represent? Instead of 164
and 512
, why does it
produce i64
and %0
?
--
Thanks & Regards, Dipanjan -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170419/6aa99251/attachment.html>
- Previous message: [llvm-dev] API to Differentiate between SSA and non SSA form
- Next message: [llvm-dev] How to get the arguments of a function call in LLVM?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]