浏览代码

* avoid to call a_loadmm_reg_intreg for mm registers larger than the int registers, resolves #41252

florian 2 月之前
父节点
当前提交
7d0ef33766
共有 1 个文件被更改,包括 1 次插入1 次删除
  1. 1 1
      compiler/ncgcnv.pas

+ 1 - 1
compiler/ncgcnv.pas

@@ -827,7 +827,7 @@ interface
             else
             else
 {$endif cpufloatintregmov}
 {$endif cpufloatintregmov}
 {$ifdef cpumm}
 {$ifdef cpumm}
-            if (resultdef.typ<>floatdef) and (location.loc in [LOC_CMMREGISTER,LOC_MMREGISTER]) then
+            if (resultdef.typ<>floatdef) and (location.loc in [LOC_CMMREGISTER,LOC_MMREGISTER]) and (resultdef.size<=sizeof(AInt)) then
               begin
               begin
                 location_reset(location,LOC_REGISTER,def_cgsize(resultdef));
                 location_reset(location,LOC_REGISTER,def_cgsize(resultdef));
                 location.register:=cg.getintregister(current_asmdata.CurrAsmList,location.size);
                 location.register:=cg.getintregister(current_asmdata.CurrAsmList,location.size);