added new licence header
[libfirm] / ir / ir / irgraph.c
index 3258376..3e1eda3 100644 (file)
@@ -1,13 +1,31 @@
+/*
+ * Copyright (C) 1995-2007 University of Karlsruhe.  All right reserved.
+ *
+ * This file is part of libFirm.
+ *
+ * This file may be distributed and/or modified under the terms of the
+ * GNU General Public License version 2 as published by the Free Software
+ * Foundation and appearing in the file LICENSE.GPL included in the
+ * packaging of this file.
+ *
+ * Licensees holding valid libFirm Professional Edition licenses may use
+ * this file in accordance with the libFirm Commercial License.
+ * Agreement provided with the Software.
+ *
+ * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+ * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+
 /*
  * 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
+ * Modified by: Goetz Lindenmaier, Michael Beck
  * Created:
  * CVS-ID:      $Id$
- * Copyright:   (c) 1998-2003 Universität Karlsruhe
- * Licence:     This file protected by GPL -  GNU GENERAL PUBLIC LICENSE.
+ * Copyright:   (c) 1998-2007 Universität Karlsruhe
  */
 
 #ifdef HAVE_CONFIG_H
@@ -37,6 +55,7 @@
 #include "irgwalk.h"
 #include "iredges_t.h"
 #include "type_t.h"
+#include "irmemory.h"
 
 #define INITIAL_IDX_IRN_MAP_SIZE 1024
 
@@ -130,7 +149,7 @@ void free_Phi_in_stack(Phi_in_stack *s);
    and optimization.
 */
 ir_graph *
-new_r_ir_graph (entity *ent, int n_loc)
+new_r_ir_graph (ir_entity *ent, int n_loc)
 {
   ir_graph *res;
   ir_node  *first_block;
@@ -200,10 +219,12 @@ new_r_ir_graph (entity *ent, int n_loc)
   set_irp_typeinfo_inconsistent();           /* there is a new graph with typeinfo_none. */
   res->callee_info_state   = irg_callee_info_none;
   res->loopinfo_state      = loopinfo_none;
-  res->execfreq_state      = exec_freq_none;
   res->class_cast_state    = ir_class_casts_transitive;
   res->extblk_state        = ir_extblk_info_none;
+  res->execfreq_state      = exec_freq_none;
   res->fp_model            = fp_model_precise;
+  res->adr_taken_state     = ir_address_taken_not_computed;
+  res->mem_disambig_opt    = aa_opt_inherited;
 
   /*-- Type information for the procedure of the graph --*/
   res->ent = ent;
@@ -263,7 +284,7 @@ new_r_ir_graph (entity *ent, int n_loc)
 
 
 ir_graph *
-new_ir_graph(entity *ent, int n_loc)
+new_ir_graph(ir_entity *ent, int n_loc)
 {
   ir_graph *res = new_r_ir_graph(ent, n_loc);
   add_irp_irg(res);          /* remember this graph global. */
@@ -366,7 +387,7 @@ void free_ir_graph (ir_graph *irg) {
   if (irg->frame_type)  free_type(irg->frame_type);
   if (irg->value_table) del_identities(irg->value_table);
   if (irg->ent) {
-    peculiarity pec = get_entity_peculiarity (irg->ent);
+    ir_peculiarity pec = get_entity_peculiarity (irg->ent);
     set_entity_peculiarity (irg->ent, peculiarity_description);
     set_entity_irg(irg->ent, NULL);  /* not set in const code irg */
     set_entity_peculiarity (irg->ent, pec);
@@ -564,13 +585,13 @@ void
   _set_irg_current_block(irg, node);
 }
 
-entity *
+ir_entity *
 (get_irg_entity)(const ir_graph *irg) {
   return _get_irg_entity(irg);
 }
 
 void
-(set_irg_entity)(ir_graph *irg, entity *ent) {
+(set_irg_entity)(ir_graph *irg, ir_entity *ent) {
   _set_irg_entity(irg, ent);
 }
 
@@ -870,6 +891,52 @@ void *get_irg_loc_description(ir_graph *irg, int n) {
   return irg->loc_descriptions ? irg->loc_descriptions[n] : NULL;
 }
 
+#ifndef NDEBUG
+void set_using_block_visited(ir_graph *irg) {
+       assert(irg->using_block_visited == 0);
+       irg->using_block_visited = 1;
+}
+
+void clear_using_block_visited(ir_graph *irg) {
+       assert(irg->using_block_visited == 1);
+       irg->using_block_visited = 0;
+}
+
+int using_block_visited(const ir_graph *irg) {
+       return irg->using_block_visited;
+}
+
+
+void set_using_visited(ir_graph *irg) {
+       assert(irg->using_visited == 0);
+       irg->using_visited = 1;
+}
+
+void clear_using_visited(ir_graph *irg) {
+       assert(irg->using_visited == 1);
+       irg->using_visited = 0;
+}
+
+int using_visited(const ir_graph *irg) {
+       return irg->using_visited;
+}
+
+
+void set_using_irn_link(ir_graph *irg) {
+       assert(irg->using_irn_link == 0);
+       irg->using_irn_link = 1;
+}
+
+void clear_using_irn_link(ir_graph *irg) {
+       assert(irg->using_irn_link == 1);
+       irg->using_irn_link = 0;
+}
+
+int using_irn_link(const ir_graph *irg) {
+       return irg->using_irn_link;
+}
+#endif
+
 /* Returns a estimated node count of the irg. */
 unsigned (get_irg_estimated_node_cnt)(const ir_graph *irg) {
   return _get_irg_estimated_node_cnt(irg);