[cfe-dev] Getting meta-data into Clang's AST

Sean Hunt rideau3 at gmail.com
Fri Jul 9 00:54:25 PDT 2010


On 07/08/2010 03:01 AM, Jan Bierbaum wrote:
> But to make use of the C++0x style attributes you have to use the
> -std=c++0x option, correct?

Currently, yes. Also note that the implementation is a little outdated; 
there were changes to the way attributes are parsed in the most recent 
draft and those are not reflected in the source.

> Is it possible to add custom attributes to Clang without changing it's
> code? Are there any hooks? I'm trying to build on top of the binary
> distribution of LLVM and Clang just using their libs. Up to now I found
> hooks in the preprocessor to add pragma and comment handlers but nothing
> for attributes.

No. Adding custom attribute hooks is a good idea, and I'll consider it 
after I finish my current attribute rewrite.

> When I just add some custom attributes to the source they are parse
> without any error but then just discarded. All I need is to have them in
> the AST besides the built-in ones.

To do this much, you would need to currently add the attribute to 
include/clang/Basic/Attr.td, include/clang/AST/Attr.h, 
include/clang/Parse/AttributeList.h, lib/Parse/AttributeList.cpp, and 
lib/Sema/SemaDeclAttr.cpp, I believe. If you want them to use the C++0x 
syntax, you would additionally need to look at 
lib/Parse/ParseDeclCXX.cpp, near the bottom.

My project is to simplify this process somewhat, but it's currently 
somewhat stuck awaiting reply from the GCC devs about their attribute 
syntax.

Sean



More information about the cfe-dev mailing list