aboutsummaryrefslogtreecommitdiff
path: root/bootstrap/cgen.c
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2022-08-13 10:38:27 +0200
committerlemon <lsof@mailbox.org>2022-08-13 10:38:27 +0200
commit7d4cb5bb96b061ed8708889b75e4d50757d9b3f2 (patch)
treeb57fdfa2dd7d61b888930d45c5f8f6f873db39ff /bootstrap/cgen.c
parent62132ecc8d032ef251d6b54177414a9ba29e8610 (diff)
set template
Diffstat (limited to 'bootstrap/cgen.c')
-rw-r--r--bootstrap/cgen.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/bootstrap/cgen.c b/bootstrap/cgen.c
index b164905..14f36f1 100644
--- a/bootstrap/cgen.c
+++ b/bootstrap/cgen.c
@@ -554,7 +554,9 @@ liftdecl(struct decl *decl) {
case Dfn:
if ((decl->fn.body || (decl->container && !decl->externp)) && !*decl->_cname) {
if (decl->container)
- *decl->_cname = xasprintf("__m%s_%s%d", decl->container->agg.name, decl->fn.name, decl->fn.id);
+ *decl->_cname = xasprintf("__m%s_%s%d",
+ decl->container->agg.name ? decl->container->agg.name : "_",
+ decl->fn.name, decl->fn.id);
else
*decl->_cname = xasprintf("__f%s_%d", decl->fn.name, decl->fn.id);
genfn(decl->externp, *decl->_cname, &decl->fn);
@@ -841,6 +843,8 @@ cgen(FILE *fp, const struct comfile *cf) {
visittypes(defctype, NULL);
for (int i = 0; i < cf->decls.n; ++i) {
+ if (cf->decls.d[i]->t != Dfn && cf->decls.d[i]->t != Dstatic)
+ liftdecl(cf->decls.d[i]);
gendecl(cf->decls.d[i], 1);
}
}