Better checking in set_entity_irg; added stickyness
authorFlorian Liekweg <liekweg@ipd.info.uni-karlsruhe.de>
Fri, 25 Jun 2004 13:36:34 +0000 (13:36 +0000)
committerFlorian Liekweg <liekweg@ipd.info.uni-karlsruhe.de>
Fri, 25 Jun 2004 13:36:34 +0000 (13:36 +0000)
[r3214]

ir/tr/entity.c

index 1467457..81390ff 100644 (file)
@@ -95,6 +95,7 @@ new_entity (type *owner, ident *name, type *type)
   }
   res->peculiarity   = peculiarity_existent;
   res->volatility    = volatility_non_volatile;
+  res->stickyness    = stickyness_unsticky;
   res->ld_name       = NULL;
   if (is_class_type(owner)) {
     res->overwrites    = NEW_ARR_F(entity *, 0);
@@ -446,6 +447,22 @@ const char *get_peculiarity_name(peculiarity var)
 #undef X
 }
 
+/** Get the entity's stickyness */
+ent_stickyness get_entity_stickyness (entity *ent)
+{
+  assert (ent && is_entity (ent));
+
+  return (ent->stickyness);
+}
+
+/** Set the entity's stickyness */
+void set_entity_stickyness (entity *ent, ent_stickyness stickyness)
+{
+  assert (ent && is_entity (ent));
+
+  ent->stickyness = stickyness;
+}
+
 /* Set has no effect for existent entities of type method. */
 ir_node *
 get_atomic_ent_value(entity *ent)
@@ -840,7 +857,9 @@ set_entity_irg(entity *ent, ir_graph *irg) {
    * Methode selbst nicht mehr aufgerufen werden kann, die Entität
    * aber erhalten bleiben soll. */
   /* assert(irg); */
-  assert(ent->peculiarity == peculiarity_existent);
+  assert((irg  && ent->peculiarity == peculiarity_existent) ||
+         (!irg && ent->peculiarity == peculiarity_description) ||
+         (!irg && ent->peculiarity == peculiarity_inherited));
   ent->irg = irg;
 }