end block can not be optimized away any more.
[libfirm] / ir / ir / irgraph.c
index a433ad0..357996f 100644 (file)
@@ -6,6 +6,10 @@
 **
 */
 
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
 # include "ircons.h"
 # include "irgraph_t.h"
 # include "irprog.h"
@@ -31,7 +35,7 @@ Phi_in_stack *new_Phi_in_stack();
    and optimization.
 */
 ir_graph *
-new_ir_graph (entity *ent, int params)
+new_ir_graph (entity *ent, int n_loc)
 {
   ir_graph *res;
   ir_node *first_block;
@@ -43,7 +47,7 @@ new_ir_graph (entity *ent, int params)
 
   /** Internal information for graph construction either held in the graph or
   *** initialized for each graph. **/
-  res->params = params + 1;  /* number of local variables that are never
+  res->n_loc = n_loc + 1;  /* number of local variables that are never
                                 dereferenced in this graph plus one for
                                the store. This is not the number of parameters
                                 to the procedure!  */
@@ -65,10 +69,10 @@ new_ir_graph (entity *ent, int params)
   set_entity_irg(ent, res);
 
   /** Nodes needed in every graph **/
-  res->end_block = new_Block ();
+  res->end_block = new_immBlock ();
   res->end       = new_End ();
 
-  res->start_block = new_Block ();
+  res->start_block = new_immBlock ();
   res->start   = new_Start ();
   res->bad     = new_ir_node (res, res->start_block, op_Bad, mode_T, 0, NULL);
 
@@ -80,14 +84,15 @@ new_ir_graph (entity *ent, int params)
   res->args    = new_Proj (res->start, mode_T, pns_args);
 
   add_in_edge(res->start_block, projX);
-  // The code generation needs it. leave it in now.
-  // Use of this edge is matter of discussion, unresolved. Also possible:
-  // add_in_edge(res->start_block, res->start_block), but invalid typed.
-
+  /*
+   * The code generation needs it. leave it in now.
+   * Use of this edge is matter of discussion, unresolved. Also possible:
+   * add_in_edge(res->start_block, res->start_block), but invalid typed.
+   */
   mature_block (res->current_block);
 
   /** Make a block to start with **/
-  first_block = new_Block ();
+  first_block = new_immBlock ();
   add_in_edge (first_block, projX);
 
   return res;
@@ -221,6 +226,7 @@ set_irg_current_block (ir_graph *irg, ir_node *node)
 entity *
 get_irg_ent (ir_graph *irg)
 {
+  assert(irg && irg->ent);
   return irg->ent;
 }
 
@@ -231,15 +237,15 @@ set_irg_ent (ir_graph *irg, entity *ent)
 }
 
 int
-get_irg_params (ir_graph *irg)
+get_irg_n_loc (ir_graph *irg)
 {
-  return irg->params;
+  return irg->n_loc;
 }
 
 void
-set_irg_params (ir_graph *irg, int params)
+set_irg_n_loc (ir_graph *irg, int n_loc)
 {
-  irg->params = params;
+  irg->n_loc = n_loc;
 }
 
 unsigned long