瀏覽代碼

* also raise internal errors in trgcpu.do_all_register_allocation for unexpected subregister types

git-svn-id: branches/wasm@47718 -
nickysn 4 年之前
父節點
當前提交
2b8ab731c8
共有 1 個文件被更改,包括 16 次插入8 次删除
  1. 16 8
      compiler/wasm32/rgcpu.pas

+ 16 - 8
compiler/wasm32/rgcpu.pas

@@ -404,17 +404,25 @@ implementation
                     wbt := registertobastype(ra.reg);
                     wbt := registertobastype(ra.reg);
                     case getregtype(ra.reg) of
                     case getregtype(ra.reg) of
                       R_INTREGISTER:
                       R_INTREGISTER:
-                        if getsubreg(ra.reg)=R_SUBD then
-                          size:=4
-                        else
-                          size:=8;
+                        case getsubreg(ra.reg) of
+                          R_SUBD:
+                            size:=4;
+                          R_SUBQ:
+                            size:=8;
+                          else
+                            internalerror(2020120803);
+                        end;
                       R_ADDRESSREGISTER:
                       R_ADDRESSREGISTER:
                         size:=4;
                         size:=4;
                       R_FPUREGISTER:
                       R_FPUREGISTER:
-                        if getsubreg(ra.reg)=R_SUBFS then
-                          size:=4
-                        else
-                          size:=8;
+                        case getsubreg(ra.reg) of
+                          R_SUBFS:
+                            size:=4;
+                          R_SUBFD:
+                            size:=8;
+                          else
+                            internalerror(2020120804);
+                        end;
                       else
                       else
                         internalerror(2010122912);
                         internalerror(2010122912);
                     end;
                     end;