91 lines
3.0 KiB
Diff
91 lines
3.0 KiB
Diff
|
From 6e7e5943619a2c20d93fc7089c885483786558bc Mon Sep 17 00:00:00 2001
|
|||
|
From: Pan Li <pan2.li@intel.com>
|
|||
|
Date: Fri, 12 Apr 2024 16:38:18 +0800
|
|||
|
Subject: [PATCH] RISC-V: Fix Werror=sign-compare in riscv_validate_vector_type
|
|||
|
MIME-Version: 1.0
|
|||
|
Content-Type: text/plain; charset=utf8
|
|||
|
Content-Transfer-Encoding: 8bit
|
|||
|
|
|||
|
This patch would like to fix the Werror=sign-compare similar to below:
|
|||
|
|
|||
|
gcc/config/riscv/riscv.cc: In function âvoid
|
|||
|
riscv_validate_vector_type(const_tree, const char*)â:
|
|||
|
gcc/config/riscv/riscv.cc:5614:23: error: comparison of integer
|
|||
|
expressions of different signedness: âintâ and âunsigned intâ
|
|||
|
[-Werror=sign-compare]
|
|||
|
5614 | if (TARGET_MIN_VLEN < required_min_vlen)
|
|||
|
|
|||
|
The TARGET_MIN_VLEN is *int* by default but the required_min_vlen
|
|||
|
returned from riscv_vector_required_min_vlen is **unsigned**. Thus,
|
|||
|
adjust the related function and reference variable(s) to int type
|
|||
|
to avoid such kind of Werror.
|
|||
|
|
|||
|
The below test suite is passed for this patch.
|
|||
|
* The rv64gcv fully regression tests.
|
|||
|
|
|||
|
gcc/ChangeLog:
|
|||
|
|
|||
|
* config/riscv/riscv.cc (riscv_vector_float_type_p): Take int
|
|||
|
as the return value instead of unsigned.
|
|||
|
(riscv_vector_element_bitsize): Ditto.
|
|||
|
(riscv_vector_required_min_vlen): Ditto.
|
|||
|
(riscv_validate_vector_type): Take int type for local variable(s).
|
|||
|
|
|||
|
Signed-off-by: Pan Li <pan2.li@intel.com>
|
|||
|
---
|
|||
|
gcc/config/riscv/riscv.cc | 10 +++++-----
|
|||
|
1 file changed, 5 insertions(+), 5 deletions(-)
|
|||
|
|
|||
|
diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc
|
|||
|
index e5f00806bb9..74445bc977c 100644
|
|||
|
--- a/gcc/config/riscv/riscv.cc
|
|||
|
+++ b/gcc/config/riscv/riscv.cc
|
|||
|
@@ -5499,7 +5499,7 @@ riscv_vector_float_type_p (const_tree type)
|
|||
|
return strstr (name, "vfloat") != NULL;
|
|||
|
}
|
|||
|
|
|||
|
-static unsigned
|
|||
|
+static int
|
|||
|
riscv_vector_element_bitsize (const_tree type)
|
|||
|
{
|
|||
|
machine_mode mode = TYPE_MODE (type);
|
|||
|
@@ -5523,7 +5523,7 @@ riscv_vector_element_bitsize (const_tree type)
|
|||
|
gcc_unreachable ();
|
|||
|
}
|
|||
|
|
|||
|
-static unsigned
|
|||
|
+static int
|
|||
|
riscv_vector_required_min_vlen (const_tree type)
|
|||
|
{
|
|||
|
machine_mode mode = TYPE_MODE (type);
|
|||
|
@@ -5531,7 +5531,7 @@ riscv_vector_required_min_vlen (const_tree type)
|
|||
|
if (riscv_v_ext_mode_p (mode))
|
|||
|
return TARGET_MIN_VLEN;
|
|||
|
|
|||
|
- unsigned element_bitsize = riscv_vector_element_bitsize (type);
|
|||
|
+ int element_bitsize = riscv_vector_element_bitsize (type);
|
|||
|
const char *name = IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type)));
|
|||
|
|
|||
|
if (strstr (name, "bool64") != NULL)
|
|||
|
@@ -5569,7 +5569,7 @@ riscv_validate_vector_type (const_tree type, const char *hint)
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
- unsigned element_bitsize = riscv_vector_element_bitsize (type);
|
|||
|
+ int element_bitsize = riscv_vector_element_bitsize (type);
|
|||
|
bool int_type_p = riscv_vector_int_type_p (type);
|
|||
|
|
|||
|
if (int_type_p && element_bitsize == 64
|
|||
|
@@ -5609,7 +5609,7 @@ riscv_validate_vector_type (const_tree type, const char *hint)
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
- unsigned required_min_vlen = riscv_vector_required_min_vlen (type);
|
|||
|
+ int required_min_vlen = riscv_vector_required_min_vlen (type);
|
|||
|
|
|||
|
if (TARGET_MIN_VLEN < required_min_vlen)
|
|||
|
{
|
|||
|
--
|
|||
|
2.39.3
|
|||
|
|