RISC-V: Reorder the prefixed extensions which are out of order.
authorNelson Chu <nelson.chu@sifive.com>
Wed, 22 Jun 2022 09:57:12 +0000 (17:57 +0800)
committerNelson Chu <nelson.chu@sifive.com>
Wed, 22 Jun 2022 10:13:50 +0000 (18:13 +0800)
This patch has been pending for almost a year...  However, I noticed that
llvm can already re-order the extensions, even if they are out of orders.
Not really sure if they can also re-order the single letter extensions,
but at least we can do this for the multi-letter extensions in binutils.

bfd/
    * elfxx-riscv.c (riscv_parse_prefixed_ext): Removed the code which are
    used to check the prefixed extension orders.
gas/
    * testsuite/gas/riscv/march-fail-order-x-z.d: Removed since we will help
    tp reorder the prefixed extensions for now.
    * testsuite/gas/riscv/march-fail-order-x-z.l: Likewise.
    * testsuite/gas/riscv/march-fail-order-x.d: Likewise.
    * testsuite/gas/riscv/march-fail-order-x.l: Likewise.
    * testsuite/gas/riscv/march-fail-order-z.d: Likewise.
    * testsuite/gas/riscv/march-fail-order-z.l: Likewise.

bfd/elfxx-riscv.c
gas/testsuite/gas/riscv/march-fail-order-x-z.d [deleted file]
gas/testsuite/gas/riscv/march-fail-order-x-z.l [deleted file]
gas/testsuite/gas/riscv/march-fail-order-x.d [deleted file]
gas/testsuite/gas/riscv/march-fail-order-x.l [deleted file]
gas/testsuite/gas/riscv/march-fail-order-z.d [deleted file]
gas/testsuite/gas/riscv/march-fail-order-z.l [deleted file]

index ffc18c97d1e868bf58db98f9b79f7f2a866e3396..f920e0ce9ffe46e58af146f6076cae7a575eef00 100644 (file)
@@ -1729,7 +1729,6 @@ riscv_parse_prefixed_ext (riscv_parse_subset_t *rps,
 {
   int major_version;
   int minor_version;
-  const char *last_name;
   enum riscv_prefix_ext_class class;
 
   while (*p)
@@ -1806,28 +1805,6 @@ riscv_parse_prefixed_ext (riscv_parse_subset_t *rps,
          return NULL;
        }
 
-      /* Check that the extension isn't duplicate.  */
-      last_name = rps->subset_list->tail->name;
-      if (!strcasecmp (last_name, subset))
-       {
-         rps->error_handler
-           (_("%s: duplicate prefixed ISA extension `%s'"),
-            arch, subset);
-         free (subset);
-         return NULL;
-       }
-
-      /* Check that the extension is in expected order.  */
-      if (riscv_compare_subsets (last_name, subset) > 0)
-       {
-         rps->error_handler
-           (_("%s: prefixed ISA extension `%s' is not in expected "
-              "order.  It must come before `%s'"),
-            arch, subset, last_name);
-         free (subset);
-         return NULL;
-       }
-
       riscv_parse_add_subset (rps, subset,
                              major_version,
                              minor_version, false);
diff --git a/gas/testsuite/gas/riscv/march-fail-order-x-z.d b/gas/testsuite/gas/riscv/march-fail-order-x-z.d
deleted file mode 100644 (file)
index 7245e68..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#as: -march=rv32i_xargle2p0_zicsr2p0
-#source: empty.s
-#error_output: march-fail-order-x-z.l
diff --git a/gas/testsuite/gas/riscv/march-fail-order-x-z.l b/gas/testsuite/gas/riscv/march-fail-order-x-z.l
deleted file mode 100644 (file)
index 53ea820..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-.*Assembler messages:
-.*Error: .*prefixed ISA extension `zicsr' is not in expected order.  It must come before `xargle'
diff --git a/gas/testsuite/gas/riscv/march-fail-order-x.d b/gas/testsuite/gas/riscv/march-fail-order-x.d
deleted file mode 100644 (file)
index 72a821e..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#as: -march=rv32i_xbargle2p0_xargle2p0
-#source: empty.s
-#error_output: march-fail-order-x.l
diff --git a/gas/testsuite/gas/riscv/march-fail-order-x.l b/gas/testsuite/gas/riscv/march-fail-order-x.l
deleted file mode 100644 (file)
index cfb1185..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-.*Assembler messages:
-.*Error: .*prefixed ISA extension `xargle' is not in expected order.  It must come before `xbargle'
diff --git a/gas/testsuite/gas/riscv/march-fail-order-z.d b/gas/testsuite/gas/riscv/march-fail-order-z.d
deleted file mode 100644 (file)
index dd076c6..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#as: -march=rv32i_zifencei2p0_zicsr2p0
-#source: empty.s
-#error_output: march-fail-order-z.l
diff --git a/gas/testsuite/gas/riscv/march-fail-order-z.l b/gas/testsuite/gas/riscv/march-fail-order-z.l
deleted file mode 100644 (file)
index 468c412..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-.*Assembler messages:
-.*Error: .*prefixed ISA extension `zicsr' is not in expected order.  It must come before `zifencei'