From edaee6f392b10c593a274fd61e998e24df7967bc Mon Sep 17 00:00:00 2001 From: florian Date: Sat, 9 Mar 2024 22:50:39 +0100 Subject: [PATCH] * do not copy sets in fpc_varset_(un)set if source and dest are the same --- rtl/inc/genset.inc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/rtl/inc/genset.inc b/rtl/inc/genset.inc index 6b06ff8d4b..aba3d45bca 100644 --- a/rtl/inc/genset.inc +++ b/rtl/inc/genset.inc @@ -94,7 +94,8 @@ procedure fpc_varset_set(const source;var dest; b,size : ptrint); compilerproc; type tbsetarray = bitpacked array[0..high(sizeint)-1] of 0..1; begin - move(source,dest,size); + if @source<>@dest then + move(source,dest,size); tbsetarray(dest)[b]:=1; end; {$endif ndef FPC_SYSTEM_HAS_FPC_VARSET_SET_BYTE} @@ -109,7 +110,8 @@ procedure fpc_varset_unset(const source;var dest; b,size : ptrint); compilerproc type tbsetarray = bitpacked array[0..high(sizeint)-1] of 0..1; begin - move(source,dest,size); + if @source<>@dest then + move(source,dest,size); tbsetarray(dest)[b]:=0; end; {$endif ndef FPC_SYSTEM_HAS_FPC_VARSET_UNSET_BYTE}