Browse Source

clear temporary pointer variables

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@7315 8c9fc860-2736-0410-a75d-ab315db34111
felixf 7 years ago
parent
commit
c311bfd8ab
1 changed files with 8 additions and 0 deletions
  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);