aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYunQiang Su <yunqiang@isrc.iscas.ac.cn>2024-09-05 15:14:43 +0800
committerYunQiang Su <syq@gcc.gnu.org>2024-09-05 16:45:46 +0800
commit3162abfb5098934e6ed9d4307a86a84d28823612 (patch)
tree064ace1ed3c63f97085e2652f385f6d658b8e6d5
parent811204f52a111af24ba4b00df9e947a44c4c1161 (diff)
downloadgcc-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.cc2
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 ());