浏览代码

clear temporary pointer variables

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@7315 8c9fc860-2736-0410-a75d-ab315db34111
felixf 7 年之前
父节点
当前提交
c311bfd8ab
共有 1 个文件被更改,包括 8 次插入0 次删除
  1. 8 0
      source/FoxIntermediateBackend.Mod

+ 8 - 0
source/FoxIntermediateBackend.Mod

@@ -6640,6 +6640,14 @@ TYPE
 					reference.SetType(variable.type.resolved);
 					reference.SetAssignable(TRUE);
 					Assign(reference,variable.initializer);
+				ELSIF temporary THEN
+					IF SemanticChecker.IsPointerType(variable.type) THEN
+						Symbol(variable, operand);
+						MakeMemory(tmp,operand.op,addressType,0);
+						ReleaseOperand(operand);
+						Emit(Mov(position,tmp, nil ) );
+						ReleaseIntermediateOperand(tmp);
+					END;
 				END;
 				InitFields(type, operand.op,0);
 				ReleaseOperand(operand);