浏览代码

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 7 年之前
父节点
当前提交
16a6951dda
共有 1 个文件被更改,包括 2 次插入1 次删除
  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);