<div dir="ltr"><div><div><font color="#000000" face="arial, helvetica, sans-serif">Hello,</font></div><div><font color="#000000" face="arial, helvetica, sans-serif"><br></font></div><div><font color="#000000" face="arial, helvetica, sans-serif">I want to print the arguments passed to a function. But clang returns Parameter names used in the function definition. Here is my code:</font></div><div><font color="#000000" face="arial, helvetica, sans-serif"><br></font></div><div><font color="#000000" face="arial, helvetica, sans-serif">if (CallExpr *call = dyn_cast<CallExpr>(st)) </font></div><div><font color="#000000" face="arial, helvetica, sans-serif">{ </font></div><div><font color="#000000" face="arial, helvetica, sans-serif">    LangOptions LangOpts;</font></div><div><font color="#000000" face="arial, helvetica, sans-serif">    LangOpts.CPlusPlus = true;</font></div><div><font color="#000000" face="arial, helvetica, sans-serif">    PrintingPolicy Policy(LangOpts);</font></div><div><font color="#000000" face="arial, helvetica, sans-serif"><br></font></div><div><font color="#000000" face="arial, helvetica, sans-serif">    for(int i=0, j=call->getNumArgs(); i<j; i++)</font></div><div><font color="#000000" face="arial, helvetica, sans-serif">    {</font></div><div><font color="#000000" face="arial, helvetica, sans-serif">        std::string TypeS;</font></div><div><font color="#000000" face="arial, helvetica, sans-serif">        raw_string_ostream raw(TypeS);</font></div><div><font color="#000000" face="arial, helvetica, sans-serif">        call->getArg(i)->printPretty(raw, 0, Policy);</font></div><div><font color="#000000" face="arial, helvetica, sans-serif">        errs() << raw.str() << "\n";</font></div><div><font color="#000000" face="arial, helvetica, sans-serif">    }</font></div><div><font color="#000000" face="arial, helvetica, sans-serif">}</font></div><div><font color="#000000" face="arial, helvetica, sans-serif">Example: </font></div><div><font color="#000000" face="arial, helvetica, sans-serif">int iArgument = 123;</font></div><div><font color="#000000" face="arial, helvetica, sans-serif">char cArgument = 'c';</font></div><div><font color="#000000" face="arial, helvetica, sans-serif">foo(iArgument, cArgument);</font></div><div><font color="#000000" face="arial, helvetica, sans-serif">For this code, it should print iArgument and cArgument, but it is printing the names of the parameters given in function definition.</font></div><div><font color="#000000" face="arial, helvetica, sans-serif"><br></font></div><div><font color="#000000" face="arial, helvetica, sans-serif">Please tell what might be the problem.</font></div><div><font color="#000000" face="arial, helvetica, sans-serif"><br></font></div><div><font color="#000000" face="arial, helvetica, sans-serif">Also, I am able to get the arguments' name when I am using a simple C++ code. But when I start using another library's API (for that I am specifying compile_commands.json file), this presents problems.</font></div><div><font color="#000000" face="arial, helvetica, sans-serif"><br></font></div><div><font color="#000000" face="arial, helvetica, sans-serif">-- </font></div><div><font color="#000000" face="arial, helvetica, sans-serif">Regards,</font></div><div><font color="#000000" face="arial, helvetica, sans-serif">Dhriti Khanna</font></div><div><font color="#000000" face="arial, helvetica, sans-serif">PhD Scholar</font></div><div><font color="#000000" face="arial, helvetica, sans-serif">IIIT Delhi</font></div></div>
</div>