commit 0a0f72b6ea64b0db8e42c52b315ab01f6a17dccd
parent 56e1036fdea82afeb978df88023a58807d055ba2
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date: Mon, 1 Nov 2021 15:58:57 +0100
cc1: Improve prtree()
Prtree() is usually used as a debug mechanism. For this reason is
better if it can return the same parameter that it receives, because
using it in this way means that it can be used as a replacement of
functions that return a node pointer.
Diffstat:
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/cmd/cc/cc1/cc1.h b/src/cmd/cc/cc1/cc1.h
@@ -458,7 +458,7 @@ extern void setloc(char *fname, unsigned line);
#define accept(t) ((yytoken == (t)) ? next() : 0)
/* code.c */
-extern void prtree(char *s, Node *np);
+extern Node *prtree(char *s, Node *np);
extern void emit(int, void *);
extern Node *node(int op, Type *tp, Node *left, Node *rigth);
extern Node *varnode(Symbol *sym);
diff --git a/src/cmd/cc/cc1/code.c b/src/cmd/cc/cc1/code.c
@@ -164,14 +164,18 @@ emitnode(Node *np)
(*opcode[np->op])(np->op, np);
}
-void
+Node *
prtree(char *s, Node *np)
{
+ FILE *tmp = outfp;
+
outfp = stderr;
fprintf(outfp, "DBG prtree %s", s);
emitnode(np);
putc('\n', outfp);
- outfp = stdout;
+ outfp = tmp;
+
+ return np;
}
void