- add ir_ir_graph() function
authorSebastian Felis <felis@ipd.info.uni-karlsruhe.de>
Mon, 14 Jul 2003 10:04:14 +0000 (10:04 +0000)
committerSebastian Felis <felis@ipd.info.uni-karlsruhe.de>
Mon, 14 Jul 2003 10:04:14 +0000 (10:04 +0000)
- set kind of graph to k_ir_graph on construction

[r1478]

ir/ir/irgraph.c
ir/ir/irgraph.h

index 1c8a741..8e9125a 100644 (file)
@@ -95,6 +95,7 @@ new_ir_graph (entity *ent, int n_loc)
   res->Phi_in_stack = new_Phi_in_stack();  /* A stack needed for automatic Phi
                                 generation */
 #endif
+  res->kind = k_ir_graph;
   res->obst      = (struct obstack *) xmalloc (sizeof (struct obstack));
   obstack_init (res->obst);
   res->value_table = new_identities (); /* value table for global value
@@ -167,6 +168,7 @@ ir_graph *new_const_code_irg() {
 #if USE_EXPLICIT_PHI_IN_STACK
   res->Phi_in_stack = NULL;
 #endif
+  res->kind = k_ir_graph;
   res->obst      = (struct obstack *) xmalloc (sizeof (struct obstack));
   obstack_init (res->obst);
   res->phase_state = phase_building;
@@ -218,6 +220,15 @@ void free_ir_graph (ir_graph *irg) {
    {attr type} get_irg_{attribute name} (ir_graph *irg);
    void set_irg_{attr name} (ir_graph *irg, {attr type} {attr}); */
 
+int
+is_ir_graph(void *thing) {
+  assert(thing);
+  if (get_kind(thing) == k_ir_graph)
+    return 1;
+  else
+    return 0;
+}
+
 /* Outputs a unique number for this node */
 
 INLINE long
index a779049..b61f09a 100644 (file)
@@ -100,6 +100,18 @@ ir_graph *new_ir_graph (entity *ent, int n_loc);
 void free_ir_graph (ir_graph *irg);
 
 /* --- access routines for all ir_graph attributes --- */
+
+/**
+ *   Checks whether a pointer points to a ir graph.
+ *
+ *   @param thing     an arbitrary pointer
+ *
+ *   @return
+ *       true if the thing is a ir graph, else false
+ */
+int
+is_ir_graph(void *thing);
+
 entity  *get_irg_ent (ir_graph *irg);
 void     set_irg_ent (ir_graph *irg, entity *ent);