From f56587bddd2c7b983e9ead0a55dd74b4f8fef43a Mon Sep 17 00:00:00 2001 From: Pierre Muller Date: Wed, 3 Apr 2024 23:41:50 +0200 Subject: [PATCH] Use correct check for unsigned size in a_op64_{const/reg}_reg_reg_checkoverflow methods --- compiler/sparc/cgcpu.pas | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/compiler/sparc/cgcpu.pas b/compiler/sparc/cgcpu.pas index afd5feff45..d1ad02e4a9 100644 --- a/compiler/sparc/cgcpu.pas +++ b/compiler/sparc/cgcpu.pas @@ -258,6 +258,7 @@ interface procedure tcg64sparc.a_op64_const_reg_reg_checkoverflow(list: TAsmList;op:TOpCG;size : tcgsize;value : int64;regsrc,regdst : tregister64;setflags : boolean;var ovloc : tlocation); var op1,op2:TAsmOp; + fl:TSparcFlags; begin case op of OP_NEG, @@ -277,7 +278,13 @@ interface if setflags then begin ovloc.loc:=LOC_FLAGS; - ovloc.resflags.Init(NR_ICC,F_VS); + if size=OS_S64 then + fl:=F_VS + else if size=OS_64 then + fl:=F_B + else + internalerror(2024040301); + ovloc.resflags.Init(NR_ICC,fl); end else ovloc.loc:=LOC_INVALID; @@ -287,6 +294,7 @@ interface procedure tcg64sparc.a_op64_reg_reg_reg_checkoverflow(list: TAsmList;op:TOpCG;size : tcgsize;regsrc1,regsrc2,regdst : tregister64;setflags : boolean;var ovloc : tlocation); var op1,op2:TAsmOp; + fl:TSparcFlags; begin case op of OP_NEG, @@ -302,7 +310,13 @@ interface if setflags then begin ovloc.loc:=LOC_FLAGS; - ovloc.resflags.Init(NR_ICC,F_VS); + if size=OS_S64 then + fl:=F_VS + else if size=OS_64 then + fl:=F_B + else + internalerror(2024040301); + ovloc.resflags.Init(NR_ICC,fl); end else ovloc.loc:=LOC_INVALID;