diff options
Diffstat (limited to 'decls_cgen.c')
-rw-r--r-- | decls_cgen.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/decls_cgen.c b/decls_cgen.c index ebf6ed1..c04e433 100644 --- a/decls_cgen.c +++ b/decls_cgen.c @@ -200,8 +200,13 @@ static void cgen_decls_stmt(CGenerator *g, Statement *s) { cgen_decls_expr(g, &s->ret.expr); break; case STMT_INCLUDE: - arr_foreach(s->inc.stmts, Statement, sub) - cgen_decls_stmt(g, sub); + if (s->inc.inc_file && (s->inc.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) + cgen_decls_stmt(g, sub); + } break; } } |