1 Star 0 Fork 94

胡宇彪 / gcc

forked from src-openEuler / gcc 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
LoongArch-add-new-configure-option-with-strict-align.patch 2.89 KB
一键复制 编辑 原始数据 按行查看 历史
ticat_fp 提交于 2024-03-26 09:26 . LoongArch: update from gcc upstream
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
1
https://gitee.com/huyubiao/gcc.git
git@gitee.com:huyubiao/gcc.git
huyubiao
gcc
gcc
master

搜索帮助