pierre пре 25 година
родитељ
комит
d0399b4e55
1 измењених фајлова са 15 додато и 6 уклоњено
  1. 15 6
      compiler/cgai386.pas

+ 15 - 6
compiler/cgai386.pas

@@ -2600,6 +2600,8 @@ procedure mov_reg_to_dest(p : ptree; s : topsize; reg : tregister);
       end;
 
 
+   { DO NOT RELY on the fact that the ptree is not yet swaped
+     because of inlining code PM }
     procedure firstcomplex(p : ptree);
       var
          hp : ptree;
@@ -2608,7 +2610,11 @@ procedure mov_reg_to_dest(p : ptree; s : topsize; reg : tregister);
          if (p^.treetype in [orn,andn]) and
             (p^.left^.resulttype^.deftype=orddef) and
             (porddef(p^.left^.resulttype)^.typ in [bool8bit,bool16bit,bool32bit]) then
-           p^.swaped:=false
+           begin
+             { p^.swaped:=false}
+             if p^.swaped then
+               internalerror(234234);
+           end
          else
            if (p^.left^.registers32<p^.right^.registers32) and
            { the following check is appropriate, because all }
@@ -2620,10 +2626,10 @@ procedure mov_reg_to_dest(p : ptree; s : topsize; reg : tregister);
               hp:=p^.left;
               p^.left:=p^.right;
               p^.right:=hp;
-              p^.swaped:=true;
-            end
-         else
-           p^.swaped:=false;
+              p^.swaped:=not p^.swaped;
+            end;
+         {else
+           p^.swaped:=false; do not modify }
       end;
 
 
@@ -3962,7 +3968,10 @@ procedure mov_reg_to_dest(p : ptree; s : topsize; reg : tregister);
 end.
 {
   $Log$
-  Revision 1.106  2000-05-26 20:16:00  jonas
+  Revision 1.107  2000-06-05 20:39:05  pierre
+   * fix for inline bug
+
+  Revision 1.106  2000/05/26 20:16:00  jonas
     * fixed wrong register deallocations in several ansistring related
       procedures. The IDE's now function fine when compiled with -OG3p3r