summaryrefslogtreecommitdiff
path: root/decls_cgen.c
diff options
context:
space:
mode:
Diffstat (limited to 'decls_cgen.c')
-rw-r--r--decls_cgen.c9
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;
}
}