Browse Source

* sparc64 needs a helper for overflow checked 64 bit division operations

git-svn-id: trunk@36658 -
florian 8 năm trước cách đây
mục cha
commit
a9a0ca6649
1 tập tin đã thay đổi với 10 bổ sung1 xóa
  1. 10 1
      compiler/sparcgen/ncpumat.pas

+ 10 - 1
compiler/sparcgen/ncpumat.pas

@@ -30,7 +30,8 @@ interface
 
     type
       tSparcmoddivnode = class(tmoddivnode)
-         procedure pass_generate_code;override;
+        procedure pass_generate_code;override;
+        function use_moddiv64bitint_helper : boolean; override;
       end;
 
       tSparcshlshrnode = class(tcgshlshrnode)
@@ -67,6 +68,14 @@ implementation
 *****************************************************************************}
 
 {$ifdef sparc64}
+    function tSparcmoddivnode.use_moddiv64bitint_helper: boolean;
+      begin
+        { sparc64 has no overflow checked 64 bit div }
+        result:=(is_64bitint(left.resultdef) or is_64bitint(right.resultdef)) and
+          (cs_check_overflow in current_settings.localswitches);
+      end;
+
+
     procedure tSparcmoddivnode.pass_generate_code;
       const
                     { 64 bit   signed  overflow }