On 4 July 2011 16:30, Philip Herron <redbrain@xxxxxxxxxxx> wrote: > On 4 July 2011 16:13, Jonathan Wakely <jwakely.gcc@xxxxxxxxx> wrote: >> On 4 July 2011 15:28, konica sarker wrote: >>> "A tree is a pointer type, but the object to which it points may be of >>> a variety of types" >>> >>> suppose i have a tree t; >>> can you help me, how to identify the object type of the tree? >> >> From http://gcc.gnu.org/onlinedocs/gccint/Tree-overview.html >> >> "You can tell what kind of node a particular tree is by using the >> TREE_CODE macro." >> >>> what does the function TREE_TYPE() do? >> >> From http://gcc.gnu.org/onlinedocs/gccint/Macros-and-Functions.html >> >> "Many trees store the type of an expression or declaration in this field." >> >> And from gcc/tree.h: >> >> /* In all nodes that are expressions, this is the data type of the expression. >> In POINTER_TYPE nodes, this is the type that the pointer points to. >> In ARRAY_TYPE nodes, this is the type of the elements. >> In VECTOR_TYPE nodes, this is the type of the elements. */ >> #define TREE_TYPE(NODE) __extension__ \ >> (*({__typeof (NODE) const __t = CONTAINS_STRUCT_CHECK (NODE, TS_TYPED); \ >> &__t->typed.type; })) >> > > The way i tend to think of tree's is just DAG's, > http://gcc.gnu.org/wiki/GenericAPI > I started documenting more there, but i will continue to add to that > as its no where near complete. > Also: debug_tree (tree), is a useful function!