[cfe-dev] Clang, macros and declarations

Eli Friedman eli.friedman at gmail.com
Tue Aug 13 15:13:25 PDT 2013


On Tue, Aug 13, 2013 at 11:17 AM, George Kastrinis <
george.kastrinis at logicblox.com> wrote:

> Hi all,
>
> We are working on a Clang plugin, and we wan to have a way to uniquely
> identify every declaration in a C++ program. We tried using the following.
> (presumed location start, presumed location end, spelling location start,
> spelling location end, declaration kind)
>
> But we still have a problem.
>
> For example, in /usr/include/x86_64-linux-gnu/bits/cmathcalls.h, line 101
> a macro called _MATHCALL is used. If you look at /usr/include/complex.h,
> line 65 where the macro is defined, you will see that the macro uses other
> macros inside and create two functions (e.g. cpowf and __cpowf)
>
> I tried using spelling locations, presumed locations,
> SourceManager::getExpansionLoc on the spelling location. All give the same
> locations for cpowf and __cpowf.
>
> Is there any way to achieve what I try to do here?
>

If you really need to serialize SourceLocations, you really need to encode
the entire macro expansion stack.
 SourceManager::getImmediateMacroCallerLoc might be helpful here.

-Eli
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20130813/ac2987ea/attachment.html>


More information about the cfe-dev mailing list