gcc/6e7e5943619a2c20d93fc7089c8...

91 lines
3.0 KiB
Diff
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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