summaryrefslogtreecommitdiff
path: root/tnslc/compile/scope.tnsl
diff options
context:
space:
mode:
Diffstat (limited to 'tnslc/compile/scope.tnsl')
-rw-r--r--tnslc/compile/scope.tnsl13
1 files changed, 11 insertions, 2 deletions
diff --git a/tnslc/compile/scope.tnsl b/tnslc/compile/scope.tnsl
index 6e4d44d..1afaeab 100644
--- a/tnslc/compile/scope.tnsl
+++ b/tnslc/compile/scope.tnsl
@@ -106,8 +106,8 @@ struct Scope {
;/
/; mk_set_var (~Var src)
- Var out
-
+ Var out = src`.copy()
+
/; if (src`.is_reg_passed() == true)
out.loc = self._next_reg_slot()
/; if (out.loc == 0)
@@ -117,6 +117,15 @@ struct Scope {
out.loc = self._next_stack_slot()
;/
+ ~int32 p = out.top_ptrc()
+ /; if (p == NULL)
+ out.set(self.cb, src)
+ ;; else if (p` == 0)
+ out.set_ref(self.cb, src)
+ ;; else
+ out.set(self.cb, src)
+ ;/
+
self.vars.push(~out)
;/