scc

simple c99 compiler
git clone git://git.simple-cc.org/scc
Log | Files | Refs | Submodules | README | LICENSE

commit 94ca1b27fc57c64bf0ee1dc95f1c58555aaf6e2a
parent 990dcf7fb41e4b4d050ffb6080ccf794922dd88d
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:
Msrc/cmd/cc/cc1/cc1.h | 2+-
Msrc/cmd/cc/cc1/code.c | 8++++++--
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