+ 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);
+ 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);