removed exc.h from libfirm interface
[libfirm] / ir / ir / irgraph.c
index e39554b..c8d9024 100644 (file)
@@ -1,12 +1,14 @@
-/* Copyright (C) 1998 - 2000 by Universitaet Karlsruhe
-* All rights reserved.
-*
-* Authors: Martin Trapp, Christian Schaefer
-*
-*
-*/
-
-/* $Id$ */
+/*
+ * 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.
+ */
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
@@ -107,6 +109,7 @@ new_ir_graph (entity *ent, int n_loc)
   res->pinned = pinned;
   res->outs_state = no_outs;
   res->dom_state = no_dom;
+  res->typeinfo_state = irg_typeinfo_none;
 
   /** Type information for the procedure of the graph **/
   res->ent = ent;
@@ -156,11 +159,13 @@ new_ir_graph (entity *ent, int n_loc)
 
 /* Make a rudimentary ir graph for the constant code.
    Must look like a correct irg, spare everything else. */
-ir_graph *new_const_code_irg() {
+ir_graph *new_const_code_irg(void) {
   ir_graph *res;
   ir_node *projX;
 
-  res = (ir_graph *) malloc (sizeof (ir_graph));
+  res = (ir_graph *) malloc (sizeof(*res));
+  memset(res, 0, sizeof(*res));
+
   current_ir_graph = res;
   res->n_loc = 1;      /* Only the memory. */
   res->visited = 0;     /* visited flag, for the ir walker */
@@ -185,6 +190,7 @@ ir_graph *new_const_code_irg() {
   res->bad = new_ir_node (NULL, res, res->start_block, op_Bad, mode_T, 0, NULL);
   res->unknown = new_ir_node (NULL, res, res->start_block, op_Unknown, mode_T, 0, NULL);
   res->start   = new_Start ();
+
   /* Proj results of start node */
   projX        = new_Proj (res->start, mode_X, pns_initial_exec);
   set_store (new_Proj (res->start, mode_M, pns_global_store));
@@ -208,6 +214,7 @@ ir_graph *new_const_code_irg() {
    graph, nor the entity standing for this graph. */
 void free_ir_graph (ir_graph *irg) {
   set_entity_irg(irg->ent, NULL);
+  irg->kind = k_BAD;
   free(irg->obst);
 #if USE_EXPLICIT_PHI_IN_STACK
   free_Phi_in_stack(irg->Phi_in_stack);