[cfe-dev] Problem with USR generation
Mikhail Ramalho via cfe-dev
cfe-dev at lists.llvm.org
Fri Dec 8 09:18:51 PST 2017
We're having some problems with the name generation for ParamVarDecls in
our tool, can anyone give us some help?
A bit of context:
We use libTooling to generate the AST of a given program that we later
convert to our format and do a number of analyses.
We also define a bunch of functions in every TU, so we don't get 'implicit
function declaration' warnings/errors  by adding them to the
preprocessor's predefines .
We want to use clang to generate the name of every declaration
(VarDecl, ParmVar, FunctionDecl and maybe FieldDecl as well), and it seems
to work fine for everything except the code we just added to the
FunctionDecl 0x3ad9620 <esbmc_intrinsics.h:3:1, col:61> col:6
__ESBMC_assert 'void (_Bool, const char *)'
|-ParmVarDecl 0x3a84c48 <col:21, col:27> col:27 assertion '_Bool'
`-ParmVarDecl 0x3a84cc0 <col:38, col:50> col:50 description 'const char *'
Name: c:@F at __ESBMC_assert
ParmVarDecl 0x3a84c48 <esbmc_intrinsics.h:3:21, col:27> col:27 assertion
ParmVarDecl 0x3a84cc0 <esbmc_intrinsics.h:3:38, col:50> col:50 description
'const char *'
bool ret = clang::index::generateUSRForDecl(&d, declUSR); (void)ret;
and ret is false, meaning it actually failed.
At first, we thought it was because of the missing filename, so we added to
"# 1 \"esbmc_intrinsics.h\" 1\n"
But it's still not working.
I had a look at the code maybe it's related to the printLoc function ?
It fails if it can't find the fileEntry in the SourceManager.
Any clue how to make it work? I'm currently trying to add a file named
esbmc_intrinsics.h to the VFS and see if it fixes the issue.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the cfe-dev