浏览代码

* Register allocator bugfix for h2pas

daniel 22 年之前
父节点
当前提交
889bd81bdb
共有 1 个文件被更改,包括 9 次插入4 次删除
  1. 9 4
      compiler/rgobj.pas

+ 9 - 4
compiler/rgobj.pas

@@ -1736,8 +1736,9 @@ unit rgobj;
         for i:=1 to length(adj^) do
           begin
             m:=adj^[i];
-            if (pos(m,selectstack) or pos(m,coalescednodes))=0 then
-               decrement_degree(Tsuperregister(m));
+            if ((pos(m,selectstack) or pos(m,coalescednodes))=0) and
+                not (Tsuperregister(m) in [first_supreg..last_supreg]) then
+              decrement_degree(Tsuperregister(m));
           end;
     end;
 
@@ -1882,7 +1883,8 @@ unit rgobj;
                  lists while the degree does not change (add_edge will increase it).
                  Instead, we will decrement manually. (Only if the degree has been
                  increased.)}
-                if decrement and (degree[Tsuperregister(t)]>0) then
+                if decrement and not (Tsuperregister(t) in [first_supreg..last_supreg])
+                   and (degree[Tsuperregister(t)]>0) then
                   dec(degree[Tsuperregister(t)]);
               end;
           end;
@@ -2563,7 +2565,10 @@ end.
 
 {
   $Log$
-  Revision 1.66  2003-08-17 16:59:20  jonas
+  Revision 1.67  2003-08-23 10:46:21  daniel
+    * Register allocator bugfix for h2pas
+
+  Revision 1.66  2003/08/17 16:59:20  jonas
     * fixed regvars so they work with newra (at least for ppc)
     * fixed some volatile register bugs
     + -dnotranslation option for -dnewra, which causes the registers not to