Explorar o código

patched a problem when a temporary variable with register was tried to be reused as temporary variable on the stack

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@8139 8c9fc860-2736-0410-a75d-ab315db34111
felixf %!s(int64=7) %!d(string=hai) anos
pai
achega
16a6951dda
Modificáronse 1 ficheiros con 2 adicións e 1 borrados
  1. 2 1
      source/FoxIntermediateBackend.Mod

+ 2 - 1
source/FoxIntermediateBackend.Mod

@@ -1277,7 +1277,7 @@ TYPE
 			FOR i := 0 TO pos-1 DO
 				IF ~(Occupied(i)) THEN
 					var := GetVariable(i);
-					IF CompatibleType(type, var.type) & (var.untraced = untraced) (*& ~(var.type.NeedsTrace())*) THEN
+					IF (~var.useRegister) & CompatibleType(type, var.type) & (var.untraced = untraced) (*& ~(var.type.NeedsTrace())*) THEN
 						pos := i;
 						Occupy(i); 
 						RETURN var;
@@ -7176,6 +7176,7 @@ TYPE
 				ASSERT(~register); 
 				
 				variable(SyntaxTree.Variable).SetOffset(v.offsetInBits);
+				ASSERT(v.offsetInBits # 0);
 				
 				scope.InsertVariable(variable(SyntaxTree.Variable), v);
 				scope.EnterSymbol(variable, duplicate);