Problem with USR generation

Hi all,

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 [0] by adding them to the preprocessor’s predefines [1].

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 preprocessor, i.e.:

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@__ESBMC_assert

Hi all,

Apparently the problem was that USRGen couldn’t handle line directives.

I submitted a patch to fix it [0] but changes the format of the generated USR.

Any feedback is welcome.

[0] https://reviews.llvm.org/D42966

Thank you,