Browse Source

Patched forgotten push of lr

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@6525 8c9fc860-2736-0410-a75d-ab315db34111
felixf 9 years ago
parent
commit
8832b64386
1 changed files with 3 additions and 0 deletions
  1. 3 0
      source/FoxIntermediateBackend.Mod

+ 3 - 0
source/FoxIntermediateBackend.Mod

@@ -2639,6 +2639,9 @@ TYPE
 			Basic.SuffixSegmentedName (name, Basic.MakeString ("@Reset"));
 			Basic.SuffixSegmentedName (name, Basic.MakeString ("@Reset"));
 			context := SwitchContext(IntermediateCode.NewSection(module.allSections, Sections.CodeSection, name,NIL,TRUE));
 			context := SwitchContext(IntermediateCode.NewSection(module.allSections, Sections.CodeSection, name,NIL,TRUE));
 			IF dump # NIL THEN dump := section.comments END;
 			IF dump # NIL THEN dump := section.comments END;
+			IF backend.hasLinkRegister THEN
+				Emit(Push(-1, lr));
+			END;
 			Emit(Push(position,fp));
 			Emit(Push(position,fp));
 			Emit(Mov(position,fp, IntermediateCode.Memory(addressType,sp,ToMemoryUnits(system,addressType.sizeInBits * 2))));
 			Emit(Mov(position,fp, IntermediateCode.Memory(addressType,sp,ToMemoryUnits(system,addressType.sizeInBits * 2))));
 			ResetVariables(scope);
 			ResetVariables(scope);