-/* 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.
+ * 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.h
* @author Martin Trapp, Christian Schaefer
*/
-/* $Id$ */
#include "irop.h"
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);
type *get_irg_frame_type (ir_graph *irg);
void set_irg_frame_type (ir_graph *irg, type *ftp);
-/* To test for a frame type */
-int is_frame_type(type *ftp);
+/* To test for a frame type. O(#irgs) if ftp is class type. */
+int is_frame_type (type *ftp);
ir_node *get_irg_start_block (ir_graph *irg);
void set_irg_start_block (ir_graph *irg, ir_node *node);
void set_irg_cstore (ir_graph *irg, ir_node *node);
/* end oblivious */
+/* node that represents frame pointer */
ir_node *get_irg_frame (ir_graph *irg);
void set_irg_frame (ir_graph *irg, ir_node *node);
+/* node that represents global pointer */
ir_node *get_irg_globals (ir_graph *irg);
void set_irg_globals (ir_graph *irg, ir_node *node);
int get_irg_n_locs (ir_graph *irg);
+INLINE long get_irg_graph_nr(ir_graph *irg);
+
/********************************************************************************/
/* States of an ir_graph. */
/********************************************************************************/