summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/main.c b/main.c
index e1db66d..1f1241d 100644
--- a/main.c
+++ b/main.c
@@ -341,7 +341,7 @@ void parse_args_list(Lexer *l, Proc *proc) {
Node *find_return(Node *n) {
if (n->op == N_RETURN) return n;
for (int i = 0; i < n->out.len; i++) {
- Node *r = find_return(n->out.data[i]);
+ Node *r = find_return(OUT(n, i));
if (r) return r;
}
return NULL;
@@ -354,7 +354,7 @@ void proc_opt_fwd(Proc *p, Lexer *l, Node *n) {
switch (n->op) {
case N_START:
for (int i = 0; i < n->out.len; i++) {
- proc_opt_fwd(p, l, n->out.data[i]);
+ proc_opt_fwd(p, l, OUT(n, i));
}
break;
case N_IF_ELSE:
@@ -362,15 +362,15 @@ void proc_opt_fwd(Proc *p, Lexer *l, Node *n) {
//lex_error_at(l, n->src_pos, LE_ERROR, S("not all codepaths return"));
}
for (int i = 0; i < n->out.len; i++) {
- Node *r = find_return(n->out.data[i]);
+ Node *r = find_return(OUT(n, i));
if (!r) {
- lex_error_at(l, n->out.data[i]->src_pos, LE_ERROR, S("not all codepaths return"));
+ lex_error_at(l, OUT(n, i)->src_pos, LE_ERROR, S("not all codepaths return"));
}
- proc_opt_fwd(p, l, n->out.data[i]);
+ proc_opt_fwd(p, l, OUT(n, i));
}
break;
case N_PROJ:
- proc_opt_fwd(p, l, n->out.data[0]);
+ proc_opt_fwd(p, l, OUT(n, 0));
break;
case N_REGION:
/* cull empty if else */
@@ -382,14 +382,14 @@ void proc_opt_fwd(Proc *p, Lexer *l, Node *n) {
assert(OUT(n, 0)->op != N_PHI);
assert(IN(OUT(n, 0), 0) == n);
Node *new_ctrl = CTRL(CTRL(CTRL(n)));
- Node *out = n->out.data[0];
+ Node *out = OUT(n, 0);
node_set_in(g, out, 0, new_ctrl);
proc_opt_fwd(p, l, new_ctrl);
return;
}
for (int i = 0; i < n->out.len; i++) {
- if (n->out.data[i]->op != N_PHI) {
- proc_opt_fwd(p, l, n->out.data[i]);
+ if (OUT(n, i)->op != N_PHI) {
+ proc_opt_fwd(p, l, OUT(n, i));
}
}
break;
@@ -406,7 +406,7 @@ void proc_opt(Proc *p, Lexer *l) {
}
}
for (int i = 0; i < g->start->out.len; i++) {
- Node *n = g->start->out.data[i];
+ Node *n = OUT(g->start, i);
if (n->op == N_LIT && n->out.len < 1) {
node_kill(n, g);
i--;
@@ -613,7 +613,7 @@ void node_print(Node *n, Proc *p) {
break;
}
} else if (n->op == N_PROJ) {
- Str d = type_desc(&n->in.data[0]->val.tuple.data[n->val.i].type, &p->scratch);
+ Str d = type_desc(&IN(n, 0)->val.tuple.data[n->val.i].type, &p->scratch);
printf("\t%d [label=\"%.*s(%ld)\", shape=record]", n->id, (int)d.n, d.s, n->val.i);
} else if (n->op == N_UNINIT) {
Str s = type_desc(&n->type, &p->scratch);
@@ -623,12 +623,12 @@ void node_print(Node *n, Proc *p) {
}
printf("\n");
for (int i = 0; i < n->out.len; i++) {
- Node *o = n->out.data[i];
+ Node *o = OUT(n, i);
if (o->op == N_LIT) {
printf("\t%d -> %d [style=dashed]\n", n->id, o->id);
} else {
int j;
- for (j = 0; j < o->in.len && o->in.data[j] != n; j++);
+ for (j = 0; j < o->in.len && IN(o, j) != n; j++);
if (j == 0) {
printf("\t%d -> %d [color=red,headlabel=%d]\n", n->id, o->id, j);
} else {
@@ -637,7 +637,7 @@ void node_print(Node *n, Proc *p) {
}
}
for (int i = 0; i < n->out.len; i++) {
- node_print(n->out.data[i], p);
+ node_print(OUT(n, i), p);
}
}