diff options
author | YunQiang Su <yunqiang@isrc.iscas.ac.cn> | 2024-09-05 15:14:43 +0800 |
---|---|---|
committer | YunQiang Su <syq@gcc.gnu.org> | 2024-09-05 16:45:46 +0800 |
commit | 3162abfb5098934e6ed9d4307a86a84d28823612 (patch) | |
tree | 064ace1ed3c63f97085e2652f385f6d658b8e6d5 | |
parent | 811204f52a111af24ba4b00df9e947a44c4c1161 (diff) | |
download | gcc-3162abfb5098934e6ed9d4307a86a84d28823612.zip gcc-3162abfb5098934e6ed9d4307a86a84d28823612.tar.gz gcc-3162abfb5098934e6ed9d4307a86a84d28823612.tar.bz2 |
RISC-V: Lookup reversely in riscv_select_multilib_by_abi
When use --print-multi-os-dir or -print-multi-directory, gcc outputs
different values with full -march option and the base one only.
$ ./gcc/xgcc --print-multi-os-dir -mabi=lp64d -march=rv64gc
lib64/lp64d
$ ./gcc/xgcc --print-multi-os-dir -mabi=lp64d -march=rv64gc_zba
.
The reason is that in multilib.h, the fallback value of multilib
is listed as the 1st one in `multilib_raw[]`.
gcc
* common/config/riscv/riscv-common.cc(riscv_select_multilib_by_abi):
look up reversely as the fallback path is listed as the 1st one.
-rw-r--r-- | gcc/common/config/riscv/riscv-common.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/common/config/riscv/riscv-common.cc b/gcc/common/config/riscv/riscv-common.cc index 62c6e1d..2c1ce7f 100644 --- a/gcc/common/config/riscv/riscv-common.cc +++ b/gcc/common/config/riscv/riscv-common.cc @@ -2079,7 +2079,7 @@ riscv_select_multilib_by_abi ( const std::string &riscv_current_abi_str, const std::vector<riscv_multi_lib_info_t> &multilib_infos) { - for (size_t i = 0; i < multilib_infos.size (); ++i) + for (ssize_t i = multilib_infos.size (); i >= 0; --i) if (riscv_current_abi_str == multilib_infos[i].abi_str) return xstrdup (multilib_infos[i].path.c_str ()); |