[cfe-dev] Clang returns Parameter names instead of Arguments
Alexander Droste via cfe-dev
cfe-dev at lists.llvm.org
Mon Aug 8 11:54:22 PDT 2016
Hi Dhriti,
when applying analysis scripts on an MPI project,
I experienced problems in case mpicc|mpic++ is denoted
as the used compiler in the compile_commands.json file.
From my experience this is what CMake does if
-DCMAKE_EXPORT_COMPILE_COMMANDS=1 is used for an MPI project.
A possible workaround could be to use the scan-build intercept script
as described here: https://github.com/0ax1/MPI-Checker/tree/master/examples,
to generate the compilation database.
-Alex
On 08.08.16 20:34, Dhriti Khanna via cfe-dev wrote:
> I am working with clang version 3.8. I have a MPI program which is causing the
> problem. Version 4.9.3 of mpiCC. I guess you will be able to reproduce the
> problem with a simple mpi program.
>
> Also, I use this compile_commands.json file:
> [
> {
> "directory": "~/Dropbox/CLANG_MPI_LLVM/MPI",
> "command": "mpiCC -I/usr/include/mpi BasicMPIProgram.cpp",
> "file": "~/Dropbox/CLANG_MPI_LLVM/MPI/BasicMPIProgram.cpp"
> }
> ]
>
> And this to run the clang tool on a mpi source file: ./tool -p
> ~/Dropbox/CLANG_MPI_LLVM/MPI BasicMPIProgram.cpp
>
>
>
>
> On Mon, Aug 8, 2016 at 12:52 AM, Aaron Ballman <aaron at aaronballman.com
> <mailto:aaron at aaronballman.com>> wrote:
>
> On Sun, Aug 7, 2016 at 9:06 AM, Dhriti Khanna via cfe-dev
> <cfe-dev at lists.llvm.org <mailto: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 <mailto:cfe-dev at lists.llvm.org>
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
> <http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev>
> >
>
>
>
>
> --
> 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