Browse Source

* small regalloc fix

Jonas Maebe 25 years ago
parent
commit
f648aaf986
1 changed files with 11 additions and 2 deletions
  1. 11 2
      compiler/popt386.pas

+ 11 - 2
compiler/popt386.pas

@@ -1,4 +1,4 @@
-{
+ {
     $Id$
     $Id$
     Copyright (c) 1998-2000 by Florian Klaempfl and Jonas Maebe
     Copyright (c) 1998-2000 by Florian Klaempfl and Jonas Maebe
 
 
@@ -1083,6 +1083,12 @@ Begin
                                  (Paicpu(p)^.opsize = Paicpu(hp1)^.opsize) and
                                  (Paicpu(p)^.opsize = Paicpu(hp1)^.opsize) and
                                  RefsEqual(Paicpu(hp1)^.oper[0].ref^,Paicpu(p)^.oper[1].ref^) then
                                  RefsEqual(Paicpu(hp1)^.oper[0].ref^,Paicpu(p)^.oper[1].ref^) then
                                 Begin
                                 Begin
+                                  allocregbetween(asml,Paicpu(hp1)^.oper[1].reg,p,hp1);
+                                  { allocregbetween doesn't insert this because at }
+                                  { this time, no regalloc info is available in    }
+                                  { the optinfo field, so do it manually (JM)      }
+                                  hp2 := new(paiRegalloc,alloc(Paicpu(hp1)^.oper[1].reg));
+                                  insertllitem(asml,p^.previous,p,hp2);
                                   Paicpu(hp1)^.LoadReg(0,Paicpu(hp1)^.oper[1].reg);
                                   Paicpu(hp1)^.LoadReg(0,Paicpu(hp1)^.oper[1].reg);
                                   Paicpu(hp1)^.LoadRef(1,newreference(Paicpu(p)^.oper[1].ref^));
                                   Paicpu(hp1)^.LoadRef(1,newreference(Paicpu(p)^.oper[1].ref^));
                                   Paicpu(p)^.LoadReg(1,Paicpu(hp1)^.oper[0].reg);
                                   Paicpu(p)^.LoadReg(1,Paicpu(hp1)^.oper[0].reg);
@@ -1906,7 +1912,10 @@ End.
 
 
 {
 {
  $Log$
  $Log$
- Revision 1.90  2000-03-26 10:58:47  jonas
+ Revision 1.91  2000-04-16 16:46:43  jonas
+   * small regalloc fix
+
+ Revision 1.90  2000/03/26 10:58:47  jonas
    * some more allocRegBetween fixes (-al didn't function previously
    * some more allocRegBetween fixes (-al didn't function previously
      if the compiler was compiled with -OG2p3r)
      if the compiler was compiled with -OG2p3r)