Mohammad Norouzi via llvm-dev
2017-Mar-10 15:41 UTC
[llvm-dev] get function parameters (not arguments)
Sorry i'm using the following code: F = (cast<CallInst>(BI))->getCalledFunction(); for (auto& A : F->getArgumentList()) { errs() << "------- " << A.getName() << " " << "11" << "\n"; } But how can I get the parameters (as e and f in the example)? Thank you and best, Mo On Fri, Mar 10, 2017 at 4:25 PM, Tim Northover <t.p.northover at gmail.com> wrote:> On 10 March 2017 at 15:12, Mohammad Norouzi via llvm-dev > <llvm-dev at lists.llvm.org> wrote: > > for (auto& A : (cast<CallInst>(BI))->arg_operands ()) errs() << > A.dump(); > > > > but I get a and b instead. > > This sounds really weird. If you're analyzing a CallInst in main, %a > and %b shouldn't even be available. Can you show us your actual IR and > output? > > Cheers. > > Tim. >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170310/9069b2e4/attachment.html>
Tim Northover via llvm-dev
2017-Mar-10 15:44 UTC
[llvm-dev] get function parameters (not arguments)
On 10 March 2017 at 15:41, Mohammad Norouzi <mnmomn at gmail.com> wrote:> Sorry i'm using the following code: > > F = (cast<CallInst>(BI))->getCalledFunction(); > for (auto& A : F->getArgumentList()) { > errs() << "------- " << A.getName() << " " << "11" << > "\n"; > } > > But how can I get the parameters (as e and f in the example)?The code you originally posted (using cast<CallInst>(BI)->arg_operands()) should iterate through the arguments to the call. Cheers. Tim.
Mohammad Norouzi via llvm-dev
2017-Mar-10 15:49 UTC
[llvm-dev] get function parameters (not arguments)
I tried the original posted code again: for (auto& A : cast<CallInst>(BI)->arg_operands()) errs() << "--- " << A->getName() << "\n"; but it prints empty (only ---)! Thank you and best, Mo On Fri, Mar 10, 2017 at 4:44 PM, Tim Northover <t.p.northover at gmail.com> wrote:> On 10 March 2017 at 15:41, Mohammad Norouzi <mnmomn at gmail.com> wrote: > > Sorry i'm using the following code: > > > > F = (cast<CallInst>(BI))->getCalledFunction(); > > for (auto& A : F->getArgumentList()) { > > errs() << "------- " << A.getName() << " " << "11" << > > "\n"; > > } > > > > But how can I get the parameters (as e and f in the example)? > > The code you originally posted (using > cast<CallInst>(BI)->arg_operands()) should iterate through the > arguments to the call. > > Cheers. > > Tim. >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170310/3dd4861b/attachment.html>