ソースを参照

Change AVOID_OVERFLOW to avoid warning about inequality being always true

Pierre Muller 1 年間 前
コミット
acf5675a90
1 ファイル変更2 行追加2 行削除
  1. 2 2
      compiler/riscv32/cgcpu.pas

+ 2 - 2
compiler/riscv32/cgcpu.pas

@@ -70,7 +70,7 @@ unit cgcpu;
 {$ifopt Q+}
   {$define AVOID_OVERFLOW}
   const
-     low_value = low(longint);
+     max_12_bit = 1 shl 12;
 {$endif}
 
 { Range check must be disabled explicitly as conversions between signed and unsigned
@@ -479,7 +479,7 @@ unit cgcpu;
                   tmplo:=cg.GetIntRegister(list,OS_32);
                   carry:=cg.GetIntRegister(list,OS_32);
 
-                  if {$ifdef AVOID_OVERFLOW} (lo(value) <> low_value) and {$endif} is_imm12(-aint(lo(value))) then
+                  if {$ifdef AVOID_OVERFLOW} (abs(value) <= max_12_bit) and {$endif} is_imm12(-aint(lo(value))) then
                     list.concat(taicpu.op_reg_reg_const(A_ADDI,tmplo,regsrc.reglo,-aint(lo(value))))
                   else
                     begin