On Wed, 2023-08-30 at 14:51 +0800, Yujie Yang wrote: > > > LoongArch processors may not support memory accesses without natural > > > alignments. Building libraries with -mstrict-align may help with > > > toolchain binary compatiblity and performance on these implementations > > > (e.g. Loongson 2K1000LA). > > > > > > No significant performance degredation is observed on current mainstream > > > LoongArch processors when the option is enabled. > > > > > > gcc/ChangeLog: > > > > > > * config.gcc: use -mstrict-align for building libraries > > > if --with-strict-align-lib is given. > > > > Isn't this equivalent to --with-default-multilib=mno-strict-align now? > > > > And I still believe the easiest way for 2K1000LA is adding -march=la264 > > support so the user can simply configure with --with-arch=la264. > > Not exactly -- Options given in --with-multilib-default= will not be applied > to multilib variants that have build options specified in > --with-multilib-list, > but --with-strict-align-lib is always effective. > > e.g. for the following configuration: > > --with-multilib-default=mstrict-align > --with-multilib-list=lp64d/la464,lp64s > > The library build options would be: > > base/lp64d variant: -mabi=lp64d -march=la464 (no -mstrict-align appended) > base/lp64s variant: -mabi=lp64s -march=abi-default -mstrict-align > > Sure, you can do it with --with-arch=la264. It's just a convenient > switch that we can use for building generic toolchains.
If you want a generic toolchain, it should default to -mstrict-align as well. Or it will still do unexpected thing for cases like: struct foo { char x; int y; } __attribute__ ((packed)); int get (struct foo *foo) { return foo->y; } So it should be --with-strict-align (it should make the *compiler* default to -mstrict-align). But them it seems --with-arch=la264 is just easier... Or maybe we should add -march=la64-baseline (or another name?) as the "bottom line" of a LA64 CPU. Currently the definition of - march=loongarch64 includes unaligned access and 64-bit FP support, so IMO we should have a baseline definition if we need to support something "below" loongarch64. -- Xi Ruoyao <xry...@xry111.site> School of Aerospace Science and Technology, Xidian University