+void add_irp_type(ir_type *typ) {
+ assert(typ != NULL);
+ assert(irp);
+ ARR_APP1 (ir_type *, irp->types, typ);
+}
+
+/* Remove type form the list of types in irp. */
+void remove_irp_type(ir_type *typ) {
+ int i;
+ assert(typ);
+
+ for (i = ARR_LEN(irp->types) -1; i >= 0; i--) {
+ if (irp->types[i] == typ) {
+ for(; i < (ARR_LEN(irp->types)) - 1; i++) {
+ irp->types[i] = irp->types[i+1];
+ }
+ ARR_SETLEN(ir_type *, irp->types, (ARR_LEN(irp->types)) - 1);
+ break;
+ }
+ }
+}
+
+int (get_irp_n_types) (void) {
+ return _get_irp_n_types();
+}
+
+ir_type *(get_irp_type) (int pos) {
+ return _get_irp_type(pos);
+}
+
+void set_irp_type(int pos, ir_type *typ) {
+ assert(irp && typ);
+ assert(pos < (ARR_LEN((irp)->types)));
+ irp->types[pos] = typ;
+}
+
+/* Returns the number of all modes in the irp. */
+int (get_irp_n_modes)(void) {
+ return _get_irp_n_modes();
+}
+
+/* Returns the mode at position pos in the irp. */
+ir_mode *(get_irp_mode)(int pos) {
+ return _get_irp_mode(pos);
+}
+
+/* Adds mode to the list of modes in irp. */
+void add_irp_mode(ir_mode *mode) {
+ assert(mode != NULL);
+ assert(irp);
+ ARR_APP1(ir_mode *, irp->modes, mode);
+}
+
+/* Adds opcode to the list of opcodes in irp. */
+void add_irp_opcode(ir_op *opcode) {
+ assert(opcode != NULL);
+ assert(irp);
+ assert(opcode->code == (unsigned) ARR_LEN(irp->opcodes) && "new_ir_op() called in wrong order");
+ ARR_APP1(ir_op *, irp->opcodes, opcode);
+}
+
+/* Removes opcode from the list of opcodes and shrinks the list by one. */
+void remove_irp_opcode(ir_op *opcode) {
+ int i;
+
+ assert(opcode);
+ for (i = ARR_LEN(irp->opcodes) -1; i >= 0; i--) {
+ if (irp->opcodes[i] == opcode) {
+ for (; i < (ARR_LEN(irp->opcodes)) - 1; i++) {
+ irp->opcodes[i] = irp->opcodes[i+1];
+ }
+ ARR_SETLEN(ir_op *, irp->opcodes, (ARR_LEN(irp->opcodes)) - 1);
+ break;
+ }
+ }
+}
+
+/* Returns the number of all opcodes in the irp. */
+int (get_irp_n_opcodes)(void) {
+ return _get_irp_n_opcodes();
+}
+
+/* Returns the opcode at position pos in the irp. */
+ir_op *(get_irp_opcode)(int pos) {
+ return _get_irp_opcode(pos);
+}
+
+/* Sets the generic function pointer of all opcodes to NULL */
+void clear_irp_opcodes_generic_func(void) {
+ int i;
+
+ for (i = get_irp_n_opcodes() - 1; i >= 0; --i) {
+ ir_op *op = get_irp_opcode(i);
+ op->ops.generic = (op_func)NULL;
+ }
+}
+
+/*- File name / executable name or the like -*/
+void set_irp_prog_name(ident *name) {
+ irp->name = name;
+}
+int irp_prog_name_is_set(void) {
+ return irp->name != new_id_from_str(INITAL_PROG_NAME);
+}
+ident *get_irp_prog_ident(void) {
+ return irp->name;
+}
+const char *get_irp_prog_name(void) {
+ return get_id_str(irp->name);
+}
+
+
+ir_graph *(get_const_code_irg)(void) {
+ return _get_const_code_irg();
+}
+
+irg_phase_state get_irp_phase_state(void) {
+ return irp->phase_state;
+}
+
+void set_irp_phase_state(irg_phase_state s) {
+ irp->phase_state = s;
+}
+
+irg_outs_state get_irp_ip_outs_state(void) {
+ return irp->outs_state;
+}
+
+void set_irp_ip_outs_inconsistent(void) {
+ irp->outs_state = outs_inconsistent;
+}
+
+void set_irp_ip_outedges(ir_node ** ip_outedges) {
+ irp->ip_outedges = ip_outedges;
+}
+
+ir_node** get_irp_ip_outedges(void) {
+ return irp->ip_outedges;
+}
+
+
+irg_callee_info_state get_irp_callee_info_state(void) {
+ return irp->callee_info_state;
+}
+
+void set_irp_callee_info_state(irg_callee_info_state s) {
+ irp->callee_info_state = s;
+}
+
+/* Returns a new, unique exception region number. */
+ir_exc_region_t (get_irp_next_region_nr)(void) {
+ return _get_irp_next_region_nr();