- assert (pos < (ARR_LEN((irp)->graphs) - 1));
- /* Strangely the first element of the array is NULL. Why?? */
- irp->graphs[pos+1] = irg;
+ assert (pos < (ARR_LEN((irp)->graphs)));
+ irp->graphs[pos] = irg;
+}
+
+/* Gets the number of graphs _and_ pseudo graphs. */
+int get_irp_n_allirgs(void) {
+ /* We can not call get_irp_n_irgs, as we end up in a recursion ... */
+ return ARR_LEN((irp)->graphs) + get_irp_n_pseudo_irgs();
+}
+
+/* Returns the ir graph at position pos of all graphs (including
+ pseudo graphs). Visits first graphs, then pseudo graphs. */
+ir_graph *get_irp_allirg(int pos) {
+ int n_irgs = ARR_LEN((irp)->graphs);
+ assert(0 <= pos);
+ if (pos < n_irgs) {
+ return (irp)->graphs[pos];
+ } else {
+ return get_irp_pseudo_irg(pos-n_irgs);
+ }