I would rather give a hint to change the code - because only for unmanaged 
types the semantic of FillChar is equal to default().

As for performance - I just ran some benchmarks comparing the way FPC does it 
and how Delphi does it. xor a register and mov that into place (Delphi way) is 
faster in all cases I tested. Also once the record is large enough FPC uses rep 
movs, Delphi does rep stos. rep stos has faster timings that rep movs so I 
cannot see how it could be faster given the initial overhead to produce the 
empty temp.

> On 19/04/2022 14:49 J. Gareth Moreton via fpc-devel 
> <fpc-devel@lists.freepascal.org> wrote:
> 
>  
> Interesting - I wasn't aware of this intrinsic!  I'll make a note of 
> that one.
> 
> It might be useful to transform FillChar calls to the Default intrinsic 
> at the node level.
> 
> Gareth aka. Kit
> 
> On 19/04/2022 12:43, Stefan Glienke via fpc-devel wrote:
> > You are the expert but I am not sure how that can be the case given you 
> > only need to zero a register and blast that into the record location 
> > opposed to twice as many mov operations being generated that I have seen 
> > with the record that Gareth originally posted.
> >
> >> On 19/04/2022 13:37 Sven Barth via fpc-devel 
> >> <fpc-devel@lists.freepascal.org> wrote:
> >>
> >>
> >> Stefan Glienke via fpc-devel <fpc-devel@lists.freepascal.org> schrieb am 
> >> Di., 19. Apr. 2022, 12:38:
> >>> If you want to zero small records more efficiently it might be better 
> >>> using Default(t) for that and looking at optimizing the code the compiler 
> >>> generates for that as it seems it produces an empty temp variable which 
> >>> it assigns instead of simply zeroing the record variable where default() 
> >>> is being assigned to.
> >> This was an explicit design choice I made, because it pays of as soon as a 
> >> second such assignment for the same type is made.
> >>
> >> Regards,
> >> Sven
> >> _______________________________________________
> >> fpc-devel maillist - fpc-devel@lists.freepascal.org
> >> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
> > _______________________________________________
> > fpc-devel maillist  -  fpc-devel@lists.freepascal.org
> > https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
> >
> 
> -- 
> This email has been checked for viruses by Avast antivirus software.
> https://www.avast.com/antivirus
> 
> _______________________________________________
> fpc-devel maillist  -  fpc-devel@lists.freepascal.org
> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to