[cfe-dev] How to retrieve a user defined attribute from a DeclGroup?

Raphael Isemann via cfe-dev cfe-dev at lists.llvm.org
Tue Jul 18 08:31:25 PDT 2017


If you have a FunctionDecl FD, you can just do something like this to
get the AnnotateAttr back:

if (clang::AnnotateAttr *Annot = D->getAttr<AnnotateAttr>())
  printf("Found an annotate attribute!");
else
  printf("This FunctionDecl has no AnnotateAttr");

- Raphael


2017-07-18 17:05 GMT+02:00 Marcel Schaible via cfe-dev <cfe-dev at lists.llvm.org>:
> Hi,
>
> I am struggling with a propably stupid simple problem:
>
> In my plugin I have attributted the ast for a function decl with my own
> attribute:
>
>
> Something like that:
>     class AnnotateFunctionsConsumer : public ASTConsumer {
>
>     public:
>         bool HandleTopLevelDecl(DeclGroupRef DG) override {
>             for (auto D : DG)
>                 if (FunctionDecl *FD = dyn_cast<FunctionDecl>(D))
> FD->addAttr(AnnotateAttr::CreateImplicit(FD->getASTContext(),
>                         "MyOwnAttr"));
>             return true;
>         }
>     };
>
> In another part of my tool I want to retrieve this attribute inside of a
> AstConsumer and perform some transformations.
>
> What is the proper way for doing this? Is FD->getAttr the intended function
> for this and if yes how to call in the above mentiond example?
>
> Thanks
>
> Marcel
>
> _______________________________________________
> 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