X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Ftr%2Fentity.h;h=c319920cd1d3d221be5ce2c3e068353056851c3c;hb=f274dcf35aa0d3f4748387dbddfe50e8d7d44951;hp=413380421445e3f026bdc1947a07db78b051eeee;hpb=a4c6383cbe1279dc924dd38adf8b30e66151fa76;p=libfirm diff --git a/ir/tr/entity.h b/ir/tr/entity.h index 413380421..c319920cd 100644 --- a/ir/tr/entity.h +++ b/ir/tr/entity.h @@ -42,9 +42,9 @@ * - ident *ld_name: Unique name of this entity, i.e., the mangled * name. E.g., for a class `A' with field `a' this * is the ident for `A_a'. - * - type *type: The type of this entity, e.g., a method type, a + * - ir_type *type: The type of this entity, e.g., a method type, a * basic type of the language or a class itself. - * - type *owner: The class this entity belongs to. In case of local + * - ir_type *owner: The class this entity belongs to. In case of local * variables the method they are defined in. * - int offset: Offset in bits for this entity. Fixed when layout * of owner is determined. @@ -127,7 +127,7 @@ typedef struct entity entity; * value is a pointer to the method. * Visibility is local, offset -1, and it is not volatile. */ -entity *new_entity (type *owner, ident *name, type *tp); +entity *new_entity (ir_type *owner, ident *name, ir_type *tp); /** * Creates a new entity. @@ -138,7 +138,7 @@ entity *new_entity (type *owner, ident *name, type *tp); * value is a pointer to the method. * Visibility is local, offset -1, and it is not volatile. */ -entity *new_d_entity (type *owner, ident *name, type *tp, dbg_info *db); +entity *new_d_entity (ir_type *owner, ident *name, ir_type *tp, dbg_info *db); /** * Copies the entity if the new_owner is different from the @@ -152,7 +152,7 @@ entity *new_d_entity (type *owner, ident *name, type *tp, dbg_info *db); * itself and not to the origin. Right now we have to change * the peculiarity and then set a new atomic value by hand. */ -entity *copy_entity_own (entity *old, type *new_owner); +entity *copy_entity_own (entity *old, ir_type *new_owner); /** * Copies the entity if the new_name is different from the @@ -193,20 +193,20 @@ void set_entity_ld_ident (entity *ent, ident *ld_ident); const char *get_entity_ld_name (entity *ent); /** Returns the owner of the entity. */ -type *get_entity_owner (entity *ent); +ir_type *get_entity_owner (entity *ent); /** Sets the owner field in entity to owner. Don't forget to add ent to owner!! */ -void set_entity_owner (entity *ent, type *owner); +void set_entity_owner (entity *ent, ir_type *owner); /** Asserts if the type owner is either a compound type or an array */ -void assert_legal_owner_of_ent(type *owner); +void assert_legal_owner_of_ent(ir_type *owner); /** Returns the type of an entity. */ -type *get_entity_type (entity *ent); +ir_type *get_entity_type (entity *ent); /** Sets the type of an entity. */ -void set_entity_type (entity *ent, type *tp); +void set_entity_type (entity *ent, ir_type *tp); /** The allocation type. */ typedef enum { @@ -336,7 +336,7 @@ int is_irn_const_expression(ir_node *n); * Copies a firm subgraph that complies to the restrictions for * constant expressions to current_block in current_ir_graph. */ -ir_node *copy_const_value(ir_node *n); +ir_node *copy_const_value(dbg_info *dbg, ir_node *n); /* Set has no effect for existent entities of type method. */ ir_node *get_atomic_ent_value(entity *ent); @@ -354,7 +354,7 @@ typedef struct compound_graph_path compound_graph_path; #endif /* _COMPOUND_GRAPH_PATH_TYPEDEF_ */ /** Creates a new compound graph path. */ -compound_graph_path *new_compound_graph_path(type *tp, int length); +compound_graph_path *new_compound_graph_path(ir_type *tp, int length); /** Returns non-zero if an object is a compound graph path */ int is_compound_graph_path(void *thing); @@ -371,7 +371,7 @@ int get_compound_graph_path_array_index(compound_graph_path *gr, int pos); void set_compound_graph_path_array_index(compound_graph_path *gr, int pos, int index); /** Checks whether the path up to pos is correct. If the path contains a NULL, - * assumes the path is not complete and returns 'true'. */ + * assumes the path is not complete and returns non-zero. */ int is_proper_compound_graph_path(compound_graph_path *gr, int pos); /* A value of a compound entity is a pair of a value and the description of the @@ -509,10 +509,12 @@ int is_compound_entity(entity *ent); - they have the same type (the same C-struct) - ...? */ -bool equal_entity(entity *ent1, entity *ent2); +int equal_entity(entity *ent1, entity *ent2); /** Outputs a unique number for this entity if libfirm is compiled for - debugging, (configure with --enable-debug) else returns 0. */ + * debugging, (configure with --enable-debug) else returns the address + * of the type cast to long. + */ long get_entity_nr(entity *ent); /** Returns the entities visited count. */ @@ -530,20 +532,20 @@ int entity_visited(entity *ent); /** Returns true if this entity was not visited. */ int entity_not_visited(entity *ent); -/** Returns the mask of the additional graph properties. */ -unsigned get_entity_additional_properties(const entity *ent); +/** + * Returns the mask of the additional entity properties. + * The properties are automatically inherited from the irg if available + * or from the method type if they were not set using + * set_entity_additional_properties() or + * set_entity_additional_property(). + */ +unsigned get_entity_additional_properties(entity *ent); /** Sets the mask of the additional graph properties. */ void set_entity_additional_properties(entity *ent, unsigned property_mask); /** Sets one additional graph property. */ -void set_entity_additional_property(entity *ent, unsigned flag); - -/** Returns the calling convention of an entities graph. */ -unsigned get_entity_calling_convention(const entity *ent); - -/** Sets the calling convention of an entities graph. */ -void set_entity_calling_convention(entity *ent, unsigned cc_mask); +void set_entity_additional_property(entity *ent, mtp_additional_property flag); /** * @page unknown_entity @@ -579,7 +581,6 @@ void set_entity_calling_convention(entity *ent, unsigned cc_mask); * overwrittenby = NULL * irg = NULL * link = NULL - * */ /* A variable that contains the only unknown entity. */ extern entity *unknown_entity; @@ -592,7 +593,13 @@ typedef enum acc_bits { ptr_access_none = 0, /**< no access */ ptr_access_read = 1, /**< read access */ ptr_access_write = 2, /**< write access */ - ptr_access_rw = ptr_access_read|ptr_access_write /**< read AND write access */ + ptr_access_rw = ptr_access_read|ptr_access_write, /**< read AND write access */ + ptr_access_store = 4, /**< the pointer is stored */ + ptr_access_all = ptr_access_rw|ptr_access_store /**< all possible access */ } ptr_access_kind; +#define IS_READ(a) ((a) & ptr_access_read) +#define IS_WRITTEN(a) ((a) & ptr_access_write) +#define IS_STORED(a) ((a) & ptr_access_store) + #endif /* _ENTITY_H_ */