On Wed, 2023-08-30 at 09:58 +0800, Yang Yujie 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.

> ---
>  gcc/config.gcc | 16 +++++++++++++++-
>  1 file changed, 15 insertions(+), 1 deletion(-)
> 
> diff --git a/gcc/config.gcc b/gcc/config.gcc
> index 4fae672a3b7..ed70fa63268 100644
> --- a/gcc/config.gcc
> +++ b/gcc/config.gcc
> @@ -4892,7 +4892,7 @@ case "${target}" in
>                 ;;
>  
>         loongarch*-*)
> -               supported_defaults="abi arch tune fpu simd multilib-
> default"
> +               supported_defaults="abi arch tune fpu simd multilib-
> default strict-align-lib"
>  
>                 # Local variables
>                 unset \
> @@ -5089,6 +5089,17 @@ case "${target}" in
>                         ;;
>                 esac
>  
> +               # Build libraries with -mstrict-align if --with-
> strict-align-lib is given.
> +               case ${with_strict_align_lib} in
> +               yes) strict_align_opt="/mstrict-align" ;;
> +               ""|no)  ;;
> +               *)
> +                       echo "Unknown option: --with-strict-align-
> lib=${with_strict_align_lib}" 1>&2
> +                       exit 1
> +                       ;;
> +               esac
> +
> +
>                 # Handle --with-multilib-default
>                 if echo "${with_multilib_default}" \
>                 | grep -E -e '[[:space:]]' -e '//' -e '/$' -e '^/' >
> /dev/null 2>&1; then
> @@ -5250,6 +5261,9 @@ case "${target}" in
>                                         ;;
>                         esac
>  
> +                       # Use mstrict-align for building libraries if
> --with-strict-align-lib is given.
> +                       loongarch_multilib_list_make="${loongarch_mult
> ilib_list_make}${strict_align_opt}"
> +
>                         # Check for repeated configuration of the same
> multilib variant.
>                         if echo "${elem_abi_base}/${elem_abi_ext}" \
>                          | grep -E "^(${all_abis%|})$" >/dev/null
> 2>&1; then

-- 
Xi Ruoyao <xry...@xry111.site>
School of Aerospace Science and Technology, Xidian University

Reply via email to