소스 검색

* FCVT.W.D returns only a 32 bit int

florian 1 년 전
부모
커밋
8dcf4e62b7
1개의 변경된 파일10개의 추가작업 그리고 2개의 파일을 삭제
  1. 10 2
      compiler/riscv/nrvinl.pas

+ 10 - 2
compiler/riscv/nrvinl.pas

@@ -117,7 +117,11 @@ implementation
 
      function trvinlinenode.first_round_real: tnode;
        begin
-         if (current_settings.fputype >= fpu_fd) then
+         if
+{$ifdef RISCV32}
+           is_32bitint(resultdef) and
+{$endif RISCV32}
+           (current_settings.fputype >= fpu_fd) then
            begin
              expectloc:=LOC_FPUREGISTER;
              first_round_real := nil;
@@ -131,7 +135,11 @@ implementation
 
      function trvinlinenode.first_trunc_real: tnode;
        begin
-         if (current_settings.fputype >= fpu_fd) then
+         if
+{$ifdef RISCV32}
+           is_32bitint(resultdef) and
+{$endif RISCV32}
+           (current_settings.fputype >= fpu_fd) then
            begin
              expectloc:=LOC_FPUREGISTER;
              first_trunc_real := nil;