2
0
Эх сурвалжийг харах

* problems with -Or fixed: tdef.isfpuregable was wrong!

florian 26 жил өмнө
parent
commit
63ceb87e8f

+ 13 - 2
compiler/ag386att.pas

@@ -207,7 +207,15 @@ unit ag386att;
     begin
       case o.typ of
         top_reg :
-          getopstr:=att_reg2str[o.reg];
+          begin
+{$ifdef debug}
+             if not(o.reg) in tregister then
+               getopstr:=''
+             else
+{$endif}
+
+             getopstr:=att_reg2str[o.reg];
+          end;
         top_ref :
           getopstr:=getreferencestring(o.ref^);
         top_const :
@@ -861,7 +869,10 @@ unit ag386att;
 end.
 {
   $Log$
-  Revision 1.12  1999-08-25 16:03:46  peter
+  Revision 1.13  1999-09-02 17:07:38  florian
+    * problems with -Or fixed: tdef.isfpuregable was wrong!
+
+  Revision 1.12  1999/08/25 16:03:46  peter
     * symbol name is now written using separate asmwrite() calls to overcome
       > 255 char strings
 

+ 5 - 2
compiler/cg386mat.pas

@@ -739,7 +739,7 @@ implementation
                  LOC_CFPUREGISTER:
                    begin
                       emit_reg(A_FLD,S_NO,
-                        correct_fpuregister(p^.right^.location.register,fpuvaroffset));
+                        correct_fpuregister(p^.left^.location.register,fpuvaroffset));
                       inc(fpuvaroffset);
                       p^.location.loc:=LOC_FPU;
                       emit_none(A_FCHS,S_NO);
@@ -939,7 +939,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.31  1999-08-19 13:08:50  pierre
+  Revision 1.32  1999-09-02 17:07:38  florian
+    * problems with -Or fixed: tdef.isfpuregable was wrong!
+
+  Revision 1.31  1999/08/19 13:08:50  pierre
    * emit_??? used
 
   Revision 1.30  1999/08/04 13:45:23  florian

+ 6 - 3
compiler/cgai386.pas

@@ -873,7 +873,7 @@ procedure mov_reg_to_dest(p : ptree; s : topsize; reg : tregister);
       begin
          if needed>usablereg32 then
            begin
-              if (p^.location.loc in [LOC_REGISTER,LOC_CREGISTER]) then
+              if (p^.location.loc=LOC_REGISTER) then
                 begin
                    if isint64 then
                      begin
@@ -937,7 +937,7 @@ procedure mov_reg_to_dest(p : ptree; s : topsize; reg : tregister);
       begin
          if needed>usablereg32 then
            begin
-              if (p^.location.loc in [LOC_REGISTER,LOC_CREGISTER]) then
+              if (p^.location.loc=LOC_REGISTER) then
                 begin
                    if isint64(p^.resulttype) then
                      begin
@@ -3294,7 +3294,10 @@ procedure mov_reg_to_dest(p : ptree; s : topsize; reg : tregister);
 end.
 {
   $Log$
-  Revision 1.36  1999-09-01 09:26:23  peter
+  Revision 1.37  1999-09-02 17:07:38  florian
+    * problems with -Or fixed: tdef.isfpuregable was wrong!
+
+  Revision 1.36  1999/09/01 09:26:23  peter
     * fixed temp allocation for arrayconstructor
 
   Revision 1.35  1999/08/30 12:00:44  pierre

+ 5 - 2
compiler/symdef.inc

@@ -513,7 +513,7 @@
    function tdef.is_fpuregable : boolean;
 
      begin
-        is_fpuregable:=not(pfloatdef(@self)^.typ in [f32bit,f16bit]);
+        is_fpuregable:=(deftype=floatdef) and not(pfloatdef(@self)^.typ in [f32bit,f16bit]);
      end;
 
 {****************************************************************************
@@ -3737,7 +3737,10 @@ Const local_symtable_index : longint = $8001;
 
 {
   $Log$
-  Revision 1.159  1999-08-27 10:52:19  pierre
+  Revision 1.160  1999-09-02 17:07:40  florian
+    * problems with -Or fixed: tdef.isfpuregable was wrong!
+
+  Revision 1.159  1999/08/27 10:52:19  pierre
     + simplify_ppu code added :
       sets all registers used at PPU writing
     * tprocdef mangledname writing is CRC relevant