Bladeren bron

* no more moving the loading of regvars past conditional jumps

Jonas Maebe 20 jaren geleden
bovenliggende
commit
d898b8dfb7
1 gewijzigde bestanden met toevoegingen van 14 en 1 verwijderingen
  1. 14 1
      compiler/i386/csopt386.pas

+ 14 - 1
compiler/i386/csopt386.pas

@@ -241,6 +241,12 @@ var
       var
         hp: tai;
       begin
+        { only regvars are still used at jump instructions }
+        if (cs_regvars in aktglobalswitches) and
+           (p.typ = ait_instruction) and
+           taicpu(p).is_jmp then
+         regsstillvalid := regsstillvalid - ptaiprop(p.optinfo)^.usedregs;
+
         stillValid :=
           (p.typ = ait_instruction) and
           (taicpu(p).opcode <> a_jmp) and
@@ -307,6 +313,10 @@ var
     getPrevSequence := RS_INVALID;
     passedFlagsModifyingInstr := passedFlagsModifyingInstr or
       instrWritesFlags(currentPrev);
+    if (cs_regvars in aktglobalswitches) and
+       (currentprev.typ = ait_instruction) and
+       taicpu(currentprev).is_jmp then
+      regsstillvalid := regsstillvalid - ptaiprop(currentprev.optinfo)^.usedregs;
 
     if not getLastInstruction(currentPrev,hp) then
       exit;
@@ -2186,7 +2196,10 @@ end.
 
 {
   $Log$
-  Revision 1.72  2004-12-28 18:01:40  jonas
+  Revision 1.73  2004-12-30 14:51:22  jonas
+    * no more moving the loading of regvars past conditional jumps
+
+  Revision 1.72  2004/12/28 18:01:40  jonas
     * fixed several regvar related bugs, cycle with -OZp3r doesn't work
       yet though