# include "typegmod_t.h"
# include "array.h"
/* All this is needed to build the constant node for methods: */
-# include "irprog.h"
+# include "irprog_t.h"
# include "ircons.h"
/*******************************************************************/
/** ENTITY **/
/*******************************************************************/
-INLINE type *get_entity_owner (entity *ent);
+/* redeclared to declare INLINE. */
+INLINE entity *get_entity_overwrites (entity *ent, int pos);
+INLINE entity *get_entity_overwrittenby (entity *ent, int pos);
+INLINE type *get_entity_owner (entity *ent);
INLINE void insert_entity_in_owner (entity *ent) {
type *owner = ent->owner;
current_ir_graph = rem;
} else {
res->variability = uninitialized;
+ res->value = NULL;
+ res->values = NULL;
}
res->peculiarity = existent;
res->volatility = non_volatile;
res->irg = NULL;
+#ifdef DEBUG_libfirm
+ res->nr = get_irp_new_node_nr();
+#endif
+
res->visit = 0;
/* Remember entity in it's owner. */
new->overwrites = NEW_ARR_F(entity *, 1);
new->overwrittenby = NEW_ARR_F(entity *, 1);
}
+#ifdef DEBUG_libfirm
+ new->nr = get_irp_new_node_nr();
+#endif
insert_entity_in_owner (new);
memcpy (new, old, sizeof (entity));
new->name = new_name;
new->ld_name = NULL;
- new->overwrites = DUP_ARR_F(entity *, old->overwrites);
- new->overwrittenby = DUP_ARR_F(entity *, old->overwrittenby);
+ if (is_class_type(new->owner)) {
+ new->overwrites = DUP_ARR_F(entity *, old->overwrites);
+ new->overwrittenby = DUP_ARR_F(entity *, old->overwrittenby);
+ }
+#ifdef DEBUG_libfirm
+ new->nr = get_irp_new_node_nr();
+#endif
insert_entity_in_owner (new);
return new;
}
+
void
free_entity (entity *ent) {
+ free_tv_entity(ent);
free_entity_attrs(ent);
free(ent);
}
+/* Outputs a unique number for this node */
+INLINE long
+get_entity_nr(entity *ent) {
+ assert(ent);
+#ifdef DEBUG_libfirm
+ return ent->nr;
+#else
+ return 0;
+#endif
+}
+
INLINE const char *
get_entity_name (entity *ent) {
assert (ent);