[cfe-dev] Determining macros used in a function or SourceRange (using clang plugin)
Eric Bayer via cfe-dev
cfe-dev at lists.llvm.org
Wed Sep 28 11:59:03 PDT 2016
Thanks Richard,
Question/comment inline.
On 9/28/2016 11:50 AM, Richard Smith wrote:
> On Wed, Sep 28, 2016 at 11:29 AM, Eric Bayer via cfe-dev
> <cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>> wrote:
>
> Oh, one follow on question... If I persist a MacroDefinition* or
> MacroInfo* in a datastructure, will this still exist when
> processing the AST tree or will these have been deleted out from
> under me? Just trying to understand how much info I need to copy
> in a few cases.
>
>
> MacroInfo, MacroDirective and ModuleMacro objects should persist until
> the Preprocessor object is destroyed. You can hold onto them until
> that happens.
That had been my guess, unfortunately as I'm a plugin I am not creating
that myself. I guess my real question is then, at what stage is the
default preprocessor object destroyed in the compiler.
>
> MacroDefinition has value semantics, so if you want to persist a
> MacroDefinition* it's up to you to store the MacroDefinition object
> somewhere. But you should probably just be passing it around by value.
Ohhh, gotcha! Thanks for the tip.
>
> -Eric
>
> On 9/27/2016 6:59 PM, Eric Bayer wrote:
>
> Hi Alex,
>
> Thanks again for all your help. Actually I did manage to make
> this eventually work with a huge amount of Lexer/Token magic.
> Unfortunately I could not actually follow it past 1 level, so
> it looks like an unworkable solution for what I have in mind.
> I had thought the macro definitons were expanded from other
> macros. After digging though the SLocEntries, this is clearly
> not the case and they are expanded at their final uses. This
> means I'm going back to the PPCallbacks and digging in there.
> I think I can get the whole tree without annotating every
> macro I meet. Apparently MacroExpands gets called repeatedly
> at the point the macro gets used.
>
> Kind Regards,
> -Eric
>
>
> _______________________________________________
> 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
> <https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_cfe-2Ddev&d=CwMFaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=JUV4JPCePpFuWnRnH3TEko8ht33mtVYPAwDFFDOf8Jo&m=HHAYm6YF9BGgbzq3dgtAQ1syCDBHK4qIgwM7qGmi7h8&s=N9jDWZHCSPLEGmNFEfGk2XtEP9LRO-gGhCESFwWJmZ8&e=>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20160928/88bceea6/attachment.html>
More information about the cfe-dev
mailing list