This patch ensures that the list of valid -mtune options
does not contain entries more than once.
The -mtune option accepts CPU identifiers as well as
tuning identifiers and there are cases where a CPU and
its tuning have the same identifier.

        PR116347

gcc/ChangeLog:

        * common/config/riscv/riscv-common.cc (riscv_get_valid_option_values):
        Skip adding mtune entries that are already in the list.

Signed-off-by: Christoph Müllner <christoph.muell...@vrull.eu>
---
 gcc/common/config/riscv/riscv-common.cc | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/gcc/common/config/riscv/riscv-common.cc 
b/gcc/common/config/riscv/riscv-common.cc
index 4c9a72d1180..2f85bb21a4c 100644
--- a/gcc/common/config/riscv/riscv-common.cc
+++ b/gcc/common/config/riscv/riscv-common.cc
@@ -2437,7 +2437,19 @@ riscv_get_valid_option_values (int option_code,
 
        const riscv_cpu_info *cpu_info = &riscv_cpu_tables[0];
        for (;cpu_info->name; ++cpu_info)
-         v.safe_push (cpu_info->name);
+         {
+           /* Skip duplicates.  */
+           bool skip = false;
+           int i;
+           const char *str;
+           FOR_EACH_VEC_ELT (v, i, str)
+             {
+               if (!strcmp (str, cpu_info->name))
+                 skip = true;
+             }
+           if (!skip)
+             v.safe_push (cpu_info->name);
+         }
       }
       break;
     case OPT_mcpu_:
-- 
2.47.1

Reply via email to