another instance of wrong block in new_Proj
[libfirm] / ir / ir / irgraph.c
index deb76bd..feb0844 100644 (file)
@@ -259,11 +259,9 @@ ir_graph *new_r_ir_graph(ir_entity *ent, int n_loc) {
        set_irg_frame           (res, new_Proj(start, mode_P_data, pn_Start_P_frame_base));
        set_irg_tls             (res, new_Proj(start, mode_P_data, pn_Start_P_tls));
        set_irg_args            (res, new_Proj(start, mode_T,      pn_Start_T_args));
-       set_irg_value_param_base(res, new_Proj(start, mode_P_data, pn_Start_P_value_arg_base));
        initial_mem             = new_Proj(start, mode_M, pn_Start_M);
        set_irg_initial_mem(res, initial_mem);
 
-       add_immBlock_pred(start_block, projX);
        set_store(initial_mem);
 
        res->index       = get_irp_new_irg_idx();
@@ -271,11 +269,6 @@ ir_graph *new_r_ir_graph(ir_entity *ent, int n_loc) {
        res->graph_nr    = get_irp_new_node_nr();
 #endif
 
-       /*
-        * The code generation needs it. leave it in now.
-        * Use of this edge is matter of discussion, unresolved. Also possible:
-        * add_immBlock_pred(res->start_block, res->start_block), but invalid typed.
-        */
        mature_immBlock(res->current_block);
 
        /*-- Make a block to start with --*/
@@ -359,7 +352,6 @@ ir_graph *new_const_code_irg(void)
        /* Proj results of start node */
        set_irg_initial_mem(res, new_Proj(start, mode_M, pn_Start_M));
        projX = new_Proj(start, mode_X, pn_Start_X_initial_exec);
-       add_immBlock_pred(start_block, projX);
        mature_immBlock(start_block);
 
        body_block = new_immBlock();
@@ -584,6 +576,10 @@ int get_irg_idx(const ir_graph *irg) {
        return irg->index;
 }
 
+ir_node *(get_idx_irn)(ir_graph *irg, unsigned idx) {
+       return _get_idx_irn(irg, idx);
+}
+
 ir_node *
 (get_irg_start_block)(const ir_graph *irg) {
        return _get_irg_start_block(irg);
@@ -695,16 +691,6 @@ void
        _set_irg_args(irg, node);
 }
 
-ir_node *
-(get_irg_value_param_base)(const ir_graph *irg) {
-       return _get_irg_value_param_base(irg);
-}
-
-void
-(set_irg_value_param_base)(ir_graph *irg, ir_node *node) {
-       _set_irg_value_param_base(irg, node);
-}
-
 ir_node *
 (get_irg_bad)(const ir_graph *irg) {
        return _get_irg_bad(irg);
@@ -755,6 +741,13 @@ void
        _set_irg_frame_type(irg, ftp);
 }
 
+/* Returns the value parameter type of an IR graph. */
+ir_type *get_irg_value_param_type(ir_graph *irg) {
+       ir_entity *ent = get_irg_entity(irg);
+       ir_type   *mtp = get_entity_type(ent);
+       return get_method_value_param_type(mtp);
+}
+
 int
 get_irg_n_locs(ir_graph *irg) {
        if (get_opt_precise_exc_context())
@@ -1080,3 +1073,18 @@ size_t register_additional_graph_data(size_t size) {
 
        return additional_graph_data_size += size;
 }
+
+void (set_irg_state)(ir_graph *irg, ir_graph_state_t state)
+{
+       _set_irg_state(irg, state);
+}
+
+void (clear_irg_state)(ir_graph *irg, ir_graph_state_t state)
+{
+       _clear_irg_state(irg, state);
+}
+
+int (is_irg_state)(const ir_graph *irg, ir_graph_state_t state)
+{
+       return _is_irg_state(irg, state);
+}