aboutsummaryrefslogtreecommitdiff
path: root/src/compiler/decl.zc
diff options
context:
space:
mode:
authorGravatar zinc <zinc@downsta.ir> 2026-10-14 18:22:04 +0330
committerGravatar zinc <zinc@downsta.ir> 2026-10-14 20:03:38 +0330
commit459b7661aaa0d65d01be064bd4b9976c4f045a5c (patch)
treeeccb0738631fc52e5116fb238c2f7f961784ff36 /src/compiler/decl.zc
parentzy: nonzero exit on compile errors (diff)
bounds: body scan, loop-entry hoisting, pointer proofs from requested size, --explain-checks v1 (non-o3 code)
Diffstat (limited to 'src/compiler/decl.zc')
-rw-r--r--src/compiler/decl.zc3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/compiler/decl.zc b/src/compiler/decl.zc
index 87281ad..1c72ba0 100644
--- a/src/compiler/decl.zc
+++ b/src/compiler/decl.zc
@@ -133,6 +133,7 @@ int prescan(int kind, int obj) {
// compile a whole unit from stdin
int unit_stdin() {
int src = readsrc();
+ xc_src = src + 0; // a plain copy of the address, not a second owner
module_name = 0; module_imports = 0;
prescan(3, src);
src_push(3, src, 0, 0);
@@ -381,7 +382,7 @@ int fndef(int chk, int rty, int ret, int n) {
sflag[s] = sflag[s] | F_DEF;
fixall(sfix[s], here); sfix[s] = 0;
fn_begin(chk, ret);
- lt = lt_begin(sval[s], sname[s], lfl);
+ lt = lt_begin(sval[s], sname[s], lfl); xc_fn = sname[s];
finsym = s; finfer = !ret;
effect_current = effect_record(s); rt.fill_w(effect_current, 0, 50); effect_current[0] = 1; if (!chk || stubgen) effect_current[0] = 2; effect_current[1] = np;
i = 0; while (i < np) { if (pt[i] == 2) { effect_current[2 + i] = EF_CONSUME; effect_current[26 + i] = EF_CONSUME; } i++; }