aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorYang Yujie <yangyujie@loongson.cn>2023-08-28 10:20:12 +0800
committerLulu Cheng <chenglulu@loongson.cn>2023-09-05 11:48:05 +0800
commit18e2e589eefc9ac96a75ff890cf883f754b163e4 (patch)
tree5e2fc4d62335ecd148131915e358ba25fe0d8563 /gcc
parentf095da2c5a452df7a7e184e0dcb5bb1538dd9086 (diff)
downloadgcc-18e2e589eefc9ac96a75ff890cf883f754b163e4.zip
gcc-18e2e589eefc9ac96a75ff890cf883f754b163e4.tar.gz
gcc-18e2e589eefc9ac96a75ff890cf883f754b163e4.tar.bz2
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.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config.gcc16
-rw-r--r--gcc/doc/install.texi4
2 files changed, 19 insertions, 1 deletions
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 543b0ba..89af167 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_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 bbc58cb..31f2234 100644
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -1416,6 +1416,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