From c0cae45d92992ac6c4a784f9d4e4537e42481127 Mon Sep 17 00:00:00 2001 From: Leo Tenenbaum Date: Fri, 27 Mar 2020 23:07:05 -0400 Subject: made statement members pointers --- decls_cgen.c | 49 ++++++++++++++++++++++++++----------------------- 1 file changed, 26 insertions(+), 23 deletions(-) (limited to 'decls_cgen.c') diff --git a/decls_cgen.c b/decls_cgen.c index 46db767..1cb5393 100644 --- a/decls_cgen.c +++ b/decls_cgen.c @@ -131,22 +131,23 @@ static void cgen_sdecls_stmt(CGenerator *g, Statement *s) { cgen_sdecls_decl(g, s->decl); break; case STMT_EXPR: - cgen_sdecls_expr(g, &s->expr); + cgen_sdecls_expr(g, s->expr); break; - case STMT_RET: - if (s->ret.flags & RET_HAS_EXPR) - cgen_sdecls_expr(g, &s->ret.expr); - break; - case STMT_INCLUDE: - - if (s->inc.inc_file && (s->inc.inc_file->flags & INC_FILE_CGEND_SDECLS)) { + case STMT_RET: { + Return *r = s->ret; + if (r->flags & RET_HAS_EXPR) + cgen_sdecls_expr(g, &r->expr); + } break; + case STMT_INCLUDE: { + Include *i = s->inc; + if (i->inc_file && (i->inc_file->flags & INC_FILE_CGEND_SDECLS)) { /* already generated */ } else { - if (s->inc.inc_file) s->inc.inc_file->flags |= INC_FILE_CGEND_SDECLS; - arr_foreach(s->inc.stmts, Statement, sub) + if (i->inc_file) i->inc_file->flags |= INC_FILE_CGEND_SDECLS; + arr_foreach(i->stmts, Statement, sub) cgen_sdecls_stmt(g, sub); } - break; + } break; case STMT_BREAK: if (!s->referring_to->c.break_lbl) { s->referring_to->c.break_lbl = ++g->lbl_counter; @@ -163,7 +164,7 @@ static void cgen_sdecls_stmt(CGenerator *g, Statement *s) { cgen_sdecls_stmt(g, s->defer); break; case STMT_USE: - cgen_sdecls_expr(g, &s->use); + cgen_sdecls_expr(g, s->use); break; } } @@ -372,21 +373,23 @@ static void cgen_decls_stmt(CGenerator *g, Statement *s) { cgen_decls_decl(g, s->decl); break; case STMT_EXPR: - cgen_decls_expr(g, &s->expr); + cgen_decls_expr(g, s->expr); break; - case STMT_RET: - if (s->ret.flags & RET_HAS_EXPR) - cgen_decls_expr(g, &s->ret.expr); - break; - case STMT_INCLUDE: - if (s->inc.inc_file && (s->inc.inc_file->flags & INC_FILE_CGEND_DECLS)) { + case STMT_RET: { + Return *r = s->ret; + if (r->flags & RET_HAS_EXPR) + cgen_decls_expr(g, &r->expr); + } break; + case STMT_INCLUDE: { + Include *i = s->inc; + if (i->inc_file && (i->inc_file->flags & INC_FILE_CGEND_DECLS)) { /* already generated */ } else { - if (s->inc.inc_file) s->inc.inc_file->flags |= INC_FILE_CGEND_DECLS; - arr_foreach(s->inc.stmts, Statement, sub) + if (i->inc_file) i->inc_file->flags |= INC_FILE_CGEND_DECLS; + arr_foreach(i->stmts, Statement, sub) cgen_decls_stmt(g, sub); } - break; + } break; case STMT_BREAK: case STMT_CONT: case STMT_MESSAGE: @@ -395,7 +398,7 @@ static void cgen_decls_stmt(CGenerator *g, Statement *s) { cgen_decls_stmt(g, s->defer); break; case STMT_USE: - cgen_sdecls_expr(g, &s->use); + cgen_sdecls_expr(g, s->use); break; } } -- cgit v1.2.3