RISC-V: Fix bug of TARGET_COMPUTE_MULTILIB implemented in riscv.

Message ID 20230202114604.2059-1-jinma@linux.alibaba.com
State Committed
Commit a02aacf55a35876ddc1e534778dc37fae29054f6
Headers
Series RISC-V: Fix bug of TARGET_COMPUTE_MULTILIB implemented in riscv. |

Commit Message

Jin Ma Feb. 2, 2023, 11:46 a.m. UTC
  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

Kito Cheng Feb. 2, 2023, 1:30 p.m. UTC | #1
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
>
  

Patch

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)