Hello. "lang_hooks" - what this? where is declared? Thanks!
2011/10/5 Iyer, Balaji V <balaji.v.i...@intel.com> > > Hello, > For most of the things you are looking for, please look for a function > called build_decl. It is used in several places inside GCC. Let me give you a > small example, > > If you do the following: > > tree x = build_decl (UNKNOWN_LOCATION, VAR_DECL, get_identifer("ii"), > integer_type_node) > > you will declare a variable called "ii" of type "integer." > > Similarly, to create a new internal structure, if do something like this: > > tree struct_frame = lang_hooks.make_type (RECORD_TYPE); > tree struct_field = build_decl (UNKNOWN_LOCATION, FIELD_DECL, > get_identifier("variable"), integer_type_node) > TREE_CHAIN(struct_field) = struct_frame > > You will create the following internal structure > > struct { > int variable; > } > > I hope this helps you get started. > > Thanks, > > Balaji V .Iyer. > > -----Original Message----- > From: niXman [mailto:i.nix...@gmail.com] > Sent: Monday, October 03, 2011 6:51 PM > To: gcc@gcc.gnu.org > Subject: The AST tree modification. Edited. > > Hi everybody! > It is necessary to implement a plug-in for GCC designed to collect the > information on types of translation unit, and generate static const array of > types rtti_ex _ on its base; ////////////////////////////////////// > enum class type_ { > char_, uchar_, short_, ushort_, int_, uint_, long_, ulong_, > int64_, uint64_, array_, pointer_, double_, long_double_, float_, > class_ > }; > > struct rtti_ex_ { // <<<<<<<<<<<<<<<<<<<<<<<<< > const char* name; > const type_ type; > const size_t size; > const size_t align; > const size_t offset; > }; > > // generated from plugin. > static const rtti_ex_ rtti_ex_array_[] = { > {...}, > {...}, > {...} > }; > ///////////////////////////////////// > > There aren't any problems with information collection from AST. There is a > complexity with AST modification: > 1. How to declare a variable? > 2. How to declare the typedef? > 3. How to declare a structure? > 4. How to declare an array of structures? > I suppose that there should be a function like: tree make_subtree (const > char* source); which result I could insert in the corresponding node. But I > haven't found it. > > Please, give me some links on this subject. It is very desirable, if you > could give some links with examples. > > Thanks.