[fpc-devel] Where to set proper alignment default of const strings?
pascaldragon at googlemail.com
Wed Nov 28 20:45:14 CET 2018
Am 28.11.2018 um 19:51 schrieb Michael Ring:
> The more I dig the more I ask myself if not the rtl routine is to
> blame for the issue in the first place because it only takes alignment
> of the destination into account when doing it's job.
> Aligncount is calculated base on destination (which is RAM), for this
> reason the last line always crashes because psrc can be unaligned.
> I most likely completely misunderstand the meaning of
> FPC_REQUIRES_PROPER_ALIGNMENT but usually ram can be written byte
> aligned but flash has often limitations on read access so alignment
> should look for psrc as this can come from flash.
> Unless of course FPC_REQUIRES_PROPER_ALIGNMENT is primarily meant for
> speed improovement only, then it would make sense to look at pdest to
> try to optimize write performance by having as much aligned access as
> possible.I only found an old discussion in lazarus list from 2011 on
> this topic, where it looks like structs were manually aligned in
> lazarus, but I did not look too deep into the patches.
The purpose of the FPC_REQUIRES_PROPER_ALIGNMENT is mainly for compiler
generated data structures like the RTTI which uses packed records on
targets where the define is not set (e.g. x86).
More information about the fpc-devel