BugFix: wrong op called
[libfirm] / ir / tr / entity.h
index 0866736..e6299ff 100644 (file)
@@ -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.
 #define _ENTITY_H_
 
 #include "firm_types.h"
-#include "ident.h"
-#include "type.h"
 #include "dbginfo.h"
-#include "irgraph.h"
 
 #include "tr_inheritance.h"
 
@@ -130,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.
@@ -141,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
@@ -155,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
@@ -196,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 {
@@ -339,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);
@@ -357,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);
@@ -374,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
@@ -512,7 +509,7 @@ 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. */
@@ -533,20 +530,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
@@ -582,7 +579,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;
@@ -595,7 +591,9 @@ 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;
 
 #endif /* _ENTITY_H_ */