[cfe-dev] Clang returns Parameter names instead of Arguments

Dhriti Khanna via cfe-dev cfe-dev at lists.llvm.org
Sun Aug 7 06:06:41 PDT 2016


Hello,

I want to print the arguments passed to a function. But clang returns
Parameter names used in the function definition. Here is my code:

if (CallExpr *call = dyn_cast<CallExpr>(st))
{
    LangOptions LangOpts;
    LangOpts.CPlusPlus = true;
    PrintingPolicy Policy(LangOpts);

    for(int i=0, j=call->getNumArgs(); i<j; i++)
    {
        std::string TypeS;
        raw_string_ostream raw(TypeS);
        call->getArg(i)->printPretty(raw, 0, Policy);
        errs() << raw.str() << "\n";
    }
}
Example:
int iArgument = 123;
char cArgument = 'c';
foo(iArgument, cArgument);
For this code, it should print iArgument and cArgument, but it is printing
the names of the parameters given in function definition.

Please tell what might be the problem.

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.

-- 
Regards,
Dhriti Khanna
PhD Scholar
IIIT Delhi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20160807/2beff9ca/attachment.html>


More information about the cfe-dev mailing list