X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firnode.h;h=2b6934fbac41a35fe99384caba5c942bc55245b4;hb=e1c33a238578342a072e1c95ff12eefe6d0acd37;hp=033a736a860fbc67de7f842e88a7f45b1befa68d;hpb=b297748ddfe8317ff24c5cbac3b40375acd93ad1;p=libfirm diff --git a/ir/ir/irnode.h b/ir/ir/irnode.h index 033a736a8..2b6934fba 100644 --- a/ir/ir/irnode.h +++ b/ir/ir/irnode.h @@ -435,28 +435,36 @@ void set_Const_type (ir_node *node, ir_type *tp); this flag. */ typedef enum { symconst_type_tag, /**< The SymConst is a type tag for the given type. - Type_or_id_p is type *. */ - symconst_size, /**< The SymConst is the size of the given type. - Type_or_id_p is type *. */ + symconst_symbol is type *. */ + symconst_type_size, /**< The SymConst is the size of the given type. + symconst_symbol is type *. */ + symconst_type_align, /**< The SymConst is the alignment of the given type. + symconst_symbol is type *. */ symconst_addr_name, /**< The SymConst is a symbolic pointer to be filled in by the linker. The pointer is represented by a string. - Type_or_id_p is ident *. */ + symconst_symbol is ident *. */ symconst_addr_ent /**< The SymConst is a symbolic pointer to be filled in by the linker. The pointer is represented by an entity. - Type_or_id_p is entity *. */ + symconst_symbol is entity *. */ } symconst_kind; +/** Returns non-zero if s symconst kind has a type attribute */ +#define SYMCONST_HAS_TYPE(kind) ((kind) <= symconst_type_align) + +/** Returns non-zero if s symconst kind has an ident attribute */ +#define SYMCONST_HAS_ID(kind) ((kind) == symconst_addr_name) + +/** Returns non-zero if s symconst kind has an entity attribute */ +#define SYMCONST_HAS_ENT(kind) ((kind) == symconst_addr_ent) + /** SymConst attribute. * * This union contains the symbolic information represented by the node. */ -union symconst_symbol { +typedef union symconst_symbol { ir_type *type_p; ident *ident_p; entity *entity_p; -}; - -typedef union symconst_symbol symconst_symbol; - +} symconst_symbol; /** Get the kind of the SymConst. */ symconst_kind get_SymConst_kind (const ir_node *node); @@ -1003,14 +1011,11 @@ void set_Raise_exo_ptr (ir_node *node, ir_node *exoptr); * Projection numbers for result of Bound node: use for Proj nodes! */ typedef enum { - pn_Bound_M_regular = 0, /**< The memory result. */ + pn_Bound_M = 0, /**< The memory result. */ pn_Bound_X_except = 1, /**< The control flow result branching to the exception handler */ pn_Bound_res = 2, /**< The checked index. */ - pn_Bound_M_except = 3, /**< The memory result in case the runtime function terminated with - an exception */ - pn_Bound_max = 4 /**< number of projections from a Bound */ + pn_Bound_max = 3 /**< number of projections from a Bound */ } pn_Bound; -#define pn_Bound_M pn_Bound_M_regular /** Returns the memory input of a Bound operation. */ ir_node *get_Bound_mem(ir_node *bound);