87 lines
2.9 KiB
Diff
87 lines
2.9 KiB
Diff
|
|
From da22606529688b125e6e08589a6dfe741b8dd18d Mon Sep 17 00:00:00 2001
|
||
|
|
From: Yang Yujie <yangyujie@loongson.cn>
|
||
|
|
Date: Mon, 28 Aug 2023 10:20:12 +0800
|
||
|
|
Subject: [PATCH 060/124] LoongArch: add new configure option
|
||
|
|
--with-strict-align-lib
|
||
|
|
|
||
|
|
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.
|
||
|
|
* doc/install.texi: likewise.
|
||
|
|
|
||
|
|
Signed-off-by: Peng Fan <fanpeng@loongson.cn>
|
||
|
|
Signed-off-by: ticat_fp <fanpeng@loongson.cn>
|
||
|
|
---
|
||
|
|
gcc/config.gcc | 16 +++++++++++++++-
|
||
|
|
gcc/doc/install.texi | 4 ++++
|
||
|
|
2 files changed, 19 insertions(+), 1 deletion(-)
|
||
|
|
|
||
|
|
diff --git a/gcc/config.gcc b/gcc/config.gcc
|
||
|
|
index 62525c296..16bbaea45 100644
|
||
|
|
--- a/gcc/config.gcc
|
||
|
|
+++ b/gcc/config.gcc
|
||
|
|
@@ -4966,7 +4966,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 \
|
||
|
|
@@ -5163,6 +5163,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
|
||
|
|
@@ -5324,6 +5335,9 @@ case "${target}" in
|
||
|
|
;;
|
||
|
|
esac
|
||
|
|
|
||
|
|
+ # Use mstrict-align for building libraries if --with-strict-align-lib is given.
|
||
|
|
+ loongarch_multilib_list_make="${loongarch_multilib_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
|
||
|
|
diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
|
||
|
|
index 1fc5f0bfa..a8851e8bd 100644
|
||
|
|
--- a/gcc/doc/install.texi
|
||
|
|
+++ b/gcc/doc/install.texi
|
||
|
|
@@ -1353,6 +1353,10 @@ Multiple @var{option}s may appear consecutively while @var{arch} may only
|
||
|
|
appear in the beginning or be omitted (which means @option{-march=abi-default}
|
||
|
|
is applied when building the libraries).
|
||
|
|
|
||
|
|
+@item --with-strict-align-lib
|
||
|
|
+On LoongArch targets, build all enabled multilibs with @option{-mstrict-align}
|
||
|
|
+(Not enabled by default).
|
||
|
|
+
|
||
|
|
@item --with-multilib-generator=@var{config}
|
||
|
|
Specify what multilibs to build. @var{config} is a semicolon separated list of
|
||
|
|
values, possibly consisting of a single value. Currently only implemented
|
||
|
|
--
|
||
|
|
2.33.0
|
||
|
|
|