* do not copy sets in fpc_varset_(un)set if source and dest are the same

This commit is contained in:
florian 2024-03-09 22:50:39 +01:00
parent c47fc710ba
commit edaee6f392

View File

@ -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}