Added FuncCall op
[libfirm] / ir / ir / irgraph_t.h
index f970630..0d0740c 100644 (file)
@@ -1,6 +1,14 @@
-/* Copyright (C) 1998 - 2000 by Universitaet Karlsruhe
-* All rights reserved.
-*/
+/*
+ * Project:     libFIRM
+ * File name:   ir/ir/irgraph.c
+ * Purpose:     Entry point to the representation of procedure code -- internal header.
+ * Author:      Martin Trapp, Christian Schaefer
+ * Modified by: Goetz Lindenmaier
+ * Created:
+ * CVS-ID:      $Id$
+ * Copyright:   (c) 1998-2003 Universität Karlsruhe
+ * Licence:     This file protected by GPL -  GNU GENERAL PUBLIC LICENSE.
+ */
 
 /**
 * @file irgraph_t.h
@@ -10,7 +18,6 @@
 * @author Martin Trapp, Christian Schaefer
 */
 
-/* $Id$ */
 
 # ifndef _IRGRAPH_T_H_
 # define _IRGRAPH_T_H_
 # include "pset.h"
 # include "irgraph.h"
 # include "firm_common_t.h"
+# include "irtypeinfo.h"
 
 #define FRAME_TP_SUFFIX "frame_tp"
 
 /** ir_graph holds all information for a procedure */
 struct ir_graph {
+  firm_kind         kind;            /**<  always set to k_ir_graph*/
   /* --  Basics of the representation -- */
   struct entity  *ent;               /**< The entity of this procedure, i.e.,
                                        the type of the procedure and the
@@ -40,7 +49,8 @@ struct ir_graph {
   struct ir_node *args;              /**< methods arguments */
   struct ir_node *bad;              /**< bad node of this ir_graph, the one and
                                         only in this graph */
-  struct ir_node *unknown;           /**< unknown node of this ir_graph */
+  /* GL removed: we need unknown with mode for analyses. */
+  //  struct ir_node *unknown;           /**< unknown node of this ir_graph */
   struct obstack *obst;                     /**< obstack where all of the ir_nodes live */
   struct ir_node *current_block;     /**< block for newly gen_*()-erated
                                        ir_nodes */
@@ -50,6 +60,7 @@ struct ir_graph {
   op_pinned pinned;                  /**< Flag for status of nodes */
   irg_outs_state outs_state;         /**< Out edges. */
   irg_dom_state dom_state;           /**< Dominator information */
+  irg_typeinfo_state typeinfo_state; /**< Validity of type inforamtion */
 
   /* -- Fields for construction -- */
 #if USE_EXPLICIT_PHI_IN_STACK
@@ -78,13 +89,30 @@ struct ir_graph {
 #endif
 };
 
-INLINE long get_irg_graph_nr(ir_graph *irg) ;
+void init_irgraph(void);
 
 /** Make a rudimentary ir graph for the constant code.
    Must look like a correct irg, spare everything else. */
 ir_graph *new_const_code_irg(void);
 
+/**
+ * Set the pinned state of a graph.
+ *
+ * @irg                the IR graph
+ * @p          new pin state
+ */
 INLINE void
 set_irg_pinned (ir_graph *irg, op_pinned p);
 
+/** Returns the obstack associated with the graph. */
+struct obstack *get_irg_obstack(ir_graph *irg);
+
+/**
+ * Returns true if the node n is allocated on the storage of graph irg.
+ *
+ * @param irg  the IR graph
+ * @param n    the IR node
+ */
+int node_is_in_irgs_storage(ir_graph *irg, ir_node *n);
+
 # endif /* _IRGRAPH_T_H_ */