ソースを参照

* fixed spilling of fpu registers

git-svn-id: trunk@2090 -
Jonas Maebe 19 年 前
コミット
41d6d85084
1 ファイル変更16 行追加2 行削除
  1. 16 2
      compiler/powerpc/aasmcpu.pas

+ 16 - 2
compiler/powerpc/aasmcpu.pas

@@ -397,13 +397,27 @@ uses cutils, cclasses;
 
     function spilling_create_load(const ref:treference;r:tregister): tai;
       begin
-        result:=taicpu.op_reg_ref(A_LWZ,r,ref);
+        case getregtype(r) of
+          R_INTREGISTER:
+            result:=taicpu.op_reg_ref(A_LWZ,r,ref);
+          R_FPUREGISTER:
+            result:=taicpu.op_reg_ref(A_LFD,r,ref);
+          else
+            internalerror(2005123101);
+        end;
       end;
 
 
     function spilling_create_store(r:tregister; const ref:treference): tai;
       begin
-        result:=taicpu.op_reg_ref(A_STW,r,ref);
+        case getregtype(r) of
+          R_INTREGISTER:
+            result:=taicpu.op_reg_ref(A_STW,r,ref);
+          R_FPUREGISTER:
+            result:=taicpu.op_reg_ref(A_STFD,r,ref);
+          else
+            internalerror(2005123102);
+        end;
       end;