* - 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.
#define _ENTITY_H_
#include "firm_types.h"
-#include "ident.h"
-#include "type.h"
#include "dbginfo.h"
-#include "irgraph.h"
#include "tr_inheritance.h"
* 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.
* 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
* 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
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 {
* 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);
#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);
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
- 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. */
/** 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
* overwrittenby = NULL
* irg = NULL
* link = NULL
- *
*/
/* A variable that contains the only unknown entity. */
extern entity *unknown_entity;
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;
#endif /* _ENTITY_H_ */