[cfe-dev] "__device_builtin__" attribute ignored by clang AST matcher

David Rector via cfe-dev cfe-dev at lists.llvm.org
Wed Jul 29 17:14:11 PDT 2020



> On Jul 29, 2020, at 10:07 AM, Aaron Ballman via cfe-dev <cfe-dev at lists.llvm.org> wrote:
> 
> On Wed, Jul 29, 2020 at 8:47 AM Oliver Zhang via cfe-dev
> <cfe-dev at lists.llvm.org> wrote:
>> 
>> Hi,
>> 
>> I'd like to use the clang AST matcher to match the "__device_builtin__" attribute (ie, "__attribute__((device_builtin))") in pre-processed cuda code, but it seems that the matcher just ignores the attribute. (In clang/Sema/AttrParsedAttrKinds.inc, "AttributeCommonInfo::IgnoredAttribute" is returned upon __device_builtin__.)
>> 
>> Can anyone please provide any information on how to customize the matcher to match the ignored attribute?
> 
> I suspect you cannot match against the ignored attribute because
> ignored attributes are not typically retained by the AST:
> https://godbolt.org/z/4v574o

FWIW, I think it should be retained.  If we are already retaining loads of type sugar nodes, which like ignored attributes have no effect on semantics, why not just make it a policy to keep a representation of all written syntax in the AST?

In fact, I would even go so far as to say macro expansions should be represented in the AST, or at least any with balanced delimiters — we could have Decl & Stmt & Expr "sugar" nodes akin to what a TypedefType is for Types.  But I grant that would be a bigger step.

> 
> Or are you finding that the AST has the attribute but it's not
> matching (perhaps because of handling  __device_builtin__ vs
> device_builtin differently in the AST matchers)?
> 
> ~Aaron
> 
>> 
>> Thanks,
>> Oliver
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev



More information about the cfe-dev mailing list