RISC-V: Fix bug of TARGET_COMPUTE_MULTILIB implemented in riscv.
Commit Message
MAX_MATCH_SCORE is not assigned anywhere except initialized to 0,
causing BEST_MATCH_MULTI_LIB to always be 0 or -1, which will
cause the result of TARGET_COMPUTE_MULTILIB hook to fail.
gcc/ChangeLog:
* common/config/riscv/riscv-common.cc:
---
gcc/common/config/riscv/riscv-common.cc | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
Comments
Good catch! thanks for fixing that, committed to trunk :)
On Thu, Feb 2, 2023 at 7:46 PM Jin Ma <jinma@linux.alibaba.com> wrote:
>
> MAX_MATCH_SCORE is not assigned anywhere except initialized to 0,
> causing BEST_MATCH_MULTI_LIB to always be 0 or -1, which will
> cause the result of TARGET_COMPUTE_MULTILIB hook to fail.
>
> gcc/ChangeLog:
>
> * common/config/riscv/riscv-common.cc:
> ---
> gcc/common/config/riscv/riscv-common.cc | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/gcc/common/config/riscv/riscv-common.cc b/gcc/common/config/riscv/riscv-common.cc
> index 616e2f897b9..787674003cb 100644
> --- a/gcc/common/config/riscv/riscv-common.cc
> +++ b/gcc/common/config/riscv/riscv-common.cc
> @@ -1700,7 +1700,10 @@ riscv_compute_multilib (
>
> /* Record highest match score multi-lib setting. */
> if (match_score > max_match_score)
> - best_match_multi_lib = i;
> + {
> + best_match_multi_lib = i;
> + max_match_score = match_score;
> + }
> }
>
> if (best_match_multi_lib == -1)
> --
> 2.17.1
>
@@ -1700,7 +1700,10 @@ riscv_compute_multilib (
/* Record highest match score multi-lib setting. */
if (match_score > max_match_score)
- best_match_multi_lib = i;
+ {
+ best_match_multi_lib = i;
+ max_match_score = match_score;
+ }
}
if (best_match_multi_lib == -1)