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

Aaron Ballman via cfe-dev cfe-dev at lists.llvm.org
Sun Aug 7 12:22:08 PDT 2016


On Sun, Aug 7, 2016 at 9:06 AM, Dhriti Khanna via cfe-dev
<cfe-dev at lists.llvm.org> wrote:
> 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.

I cannot reproduce this issue. Are you testing with ToT, or some other
version of Clang?

> 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.

Can you give some steps to reproduce? Is it possible that the other
library's API is what's causing the problem?

~Aaron

>
> --
> Regards,
> Dhriti Khanna
> PhD Scholar
> IIIT Delhi
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>



More information about the cfe-dev mailing list