瀏覽代碼

* fixed alias/colouring > 255

peter 22 年之前
父節點
當前提交
f44380e4a9
共有 3 個文件被更改,包括 24 次插入34 次删除
  1. 12 10
      compiler/rgobj.pas
  2. 7 22
      compiler/sparc/cpubase.pas
  3. 5 2
      compiler/sparc/cpupara.pas

+ 12 - 10
compiler/rgobj.pas

@@ -172,7 +172,7 @@ unit rgobj;
         colour   : Tsuperregister;
         colour   : Tsuperregister;
         movelist : Pmovelist;
         movelist : Pmovelist;
         adjlist  : Psuperregisterworklist;
         adjlist  : Psuperregisterworklist;
-        degree   : byte;
+        degree   : TSuperregister;
       end;
       end;
       Preginfo=^TReginfo;
       Preginfo=^TReginfo;
 
 
@@ -553,7 +553,7 @@ implementation
          maxreginfo:=first_imaginary;
          maxreginfo:=first_imaginary;
          maxreginfoinc:=16;
          maxreginfoinc:=16;
          for i:=0 to first_imaginary-1 do
          for i:=0 to first_imaginary-1 do
-           reginfo[i].degree:=255;
+           reginfo[i].degree:=high(tsuperregister);
          worklist_moves:=Tlinkedlist.create;
          worklist_moves:=Tlinkedlist.create;
          { Usable registers }
          { Usable registers }
          fillchar(usable_registers,sizeof(usable_registers),0);
          fillchar(usable_registers,sizeof(usable_registers),0);
@@ -947,8 +947,7 @@ implementation
     procedure trgobj.decrement_degree(m:Tsuperregister);
     procedure trgobj.decrement_degree(m:Tsuperregister);
 
 
     var adj : Psuperregisterworklist;
     var adj : Psuperregisterworklist;
-        d : byte;
-        n : tsuperregister;
+        d,n : tsuperregister;
         i : integer;
         i : integer;
     begin
     begin
       d:=reginfo[m].degree;
       d:=reginfo[m].degree;
@@ -986,13 +985,12 @@ implementation
     procedure trgobj.simplify;
     procedure trgobj.simplify;
 
 
     var adj : Psuperregisterworklist;
     var adj : Psuperregisterworklist;
-        min : byte;
         p,n : Tsuperregister;
         p,n : Tsuperregister;
-        i   : integer;
+        min,i : integer;
     begin
     begin
       {We the element with the least interferences out of the
       {We the element with the least interferences out of the
        simplifyworklist.}
        simplifyworklist.}
-      min:=$ff;
+      min:=high(integer);
       p:=0;
       p:=0;
       n:=0;
       n:=0;
       i:=simplifyworklist.head;
       i:=simplifyworklist.head;
@@ -1403,7 +1401,8 @@ implementation
           n:=coalescednodes.buf[i];
           n:=coalescednodes.buf[i];
           k:=get_alias(n);
           k:=get_alias(n);
           reginfo[n].colour:=reginfo[k].colour;
           reginfo[n].colour:=reginfo[k].colour;
-          include(used_in_proc,reginfo[k].colour);
+          if reginfo[k].colour<maxcpuregister then
+            include(used_in_proc,reginfo[k].colour);
           coalescednodes.next(i);
           coalescednodes.next(i);
         end;
         end;
 {$ifdef ra_debug}
 {$ifdef ra_debug}
@@ -1633,7 +1632,7 @@ implementation
       {Precoloured nodes should have an infinite degree, which we can approach
       {Precoloured nodes should have an infinite degree, which we can approach
        by 255.}
        by 255.}
       for i:=0 to first_imaginary-1 do
       for i:=0 to first_imaginary-1 do
-        reginfo[i].degree:=255;
+        reginfo[i].degree:=high(tsuperregister);
       for i:=first_imaginary to maxreg-1 do
       for i:=first_imaginary to maxreg-1 do
         reginfo[i].degree:=0;
         reginfo[i].degree:=0;
 {      exclude(unusedregs,RS_STACK_POINTER_REG);}
 {      exclude(unusedregs,RS_STACK_POINTER_REG);}
@@ -1820,7 +1819,10 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.94  2003-11-07 15:58:32  florian
+  Revision 1.95  2003-11-10 19:05:50  peter
+    * fixed alias/colouring > 255
+
+  Revision 1.94  2003/11/07 15:58:32  florian
     * Florian's culmutative nr. 1; contains:
     * Florian's culmutative nr. 1; contains:
       - invalid calling conventions for a certain cpu are rejected
       - invalid calling conventions for a certain cpu are rejected
       - arm softfloat calling conventions
       - arm softfloat calling conventions

+ 7 - 22
compiler/sparc/cpubase.pas

@@ -71,26 +71,8 @@ uses
       { Available Registers }
       { Available Registers }
       {$i rspcon.inc}
       {$i rspcon.inc}
 
 
-      { Integer Super registers first and last }
-{$warning Supreg shall be $00-$1f}
-      first_int_supreg = $00;
-      last_int_supreg = $1f;
-
       first_int_imreg = $20;
       first_int_imreg = $20;
-      last_int_imreg = $fe;
-
-      { Float Super register first and last }
-      first_fpu_supreg    = $00;
-      last_fpu_supreg     = $1f;
-
-      first_fpu_imreg     = $20;
-      last_fpu_imreg      = $fe;
-
-      { MM Super register first and last }
-      first_mmx_supreg    = RS_INVALID;
-      last_mmx_supreg     = RS_INVALID;
-      first_mmx_imreg     = RS_INVALID;
-      last_mmx_imreg      = RS_INVALID;
+      first_fpu_imreg = $20;
 
 
 {$warning TODO Calculate bsstart}
 {$warning TODO Calculate bsstart}
       regnumber_count_bsstart = 128;
       regnumber_count_bsstart = 128;
@@ -196,7 +178,7 @@ uses
       pparareference = ^tparareference;
       pparareference = ^tparareference;
       tparareference = packed record
       tparareference = packed record
          index       : tregister;
          index       : tregister;
-         offset      : aword;
+         offset      : longint;
       end;
       end;
 
 
     const
     const
@@ -479,7 +461,7 @@ implementation
 
 
     uses
     uses
       rgBase,verbose;
       rgBase,verbose;
-    
+
     const
     const
       std_regname_table : TRegNameTAble = (
       std_regname_table : TRegNameTAble = (
         {$i rspstd.inc}
         {$i rspstd.inc}
@@ -568,7 +550,10 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.56  2003-11-01 19:27:54  peter
+  Revision 1.57  2003-11-10 19:05:50  peter
+    * fixed alias/colouring > 255
+
+  Revision 1.56  2003/11/01 19:27:54  peter
     * 1.9.0
     * 1.9.0
 
 
   Revision 1.55  2003/10/31 08:47:13  mazen
   Revision 1.55  2003/10/31 08:47:13  mazen

+ 5 - 2
compiler/sparc/cpupara.pas

@@ -94,7 +94,7 @@ implementation
 
 
     function tsparcparamanager.get_volatile_registers_fpu(calloption : tproccalloption):TCpuRegisterSet;
     function tsparcparamanager.get_volatile_registers_fpu(calloption : tproccalloption):TCpuRegisterSet;
       begin
       begin
-        result:=[first_fpu_supreg..last_fpu_supreg];;
+        result:=[RS_F0..RS_F31];
       end;
       end;
 
 
 
 
@@ -294,7 +294,10 @@ begin
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.34  2003-10-24 11:25:32  mazen
+  Revision 1.35  2003-11-10 19:05:50  peter
+    * fixed alias/colouring > 255
+
+  Revision 1.34  2003/10/24 11:25:32  mazen
   -unused units removed from uses clause
   -unused units removed from uses clause
   *fix related to rg which was removed
   *fix related to rg which was removed