[PR/target 102957] Allow Z*-ext extension with only 2 char.
authorKito Cheng <kito.cheng@sifive.com>
Mon, 8 Nov 2021 14:45:49 +0000 (22:45 +0800)
committerKito Cheng <kito.cheng@sifive.com>
Tue, 9 Nov 2021 16:25:58 +0000 (00:25 +0800)
We was assume the Z* extension should be more than 2 char, so we put an
assertion there, but it should just an error or warning rather than an
assertion, however RISC-V has add `Zk` extension, which just 2 char, so
actually, we should just allow that.

gcc/ChangeLog

PR target/102957
* common/config/riscv/riscv-common.c (multi_letter_subset_rank): Remove
assertion for Z*-ext.

gcc/testsuite/ChangeLog

* gcc.target/riscv/pr102957.c: New.

gcc/common/config/riscv/riscv-common.c
gcc/testsuite/gcc.target/riscv/pr102957.c [new file with mode: 0644]

index 37b6ea8..f3c120b 100644 (file)
@@ -202,7 +202,6 @@ multi_letter_subset_rank (const std::string &subset)
       high_order = 1;
       break;
     case 'z':
-      gcc_assert (subset.length () > 2);
       high_order = 2;
       break;
     case 'x':
diff --git a/gcc/testsuite/gcc.target/riscv/pr102957.c b/gcc/testsuite/gcc.target/riscv/pr102957.c
new file mode 100644 (file)
index 0000000..8a7e541
--- /dev/null
@@ -0,0 +1,5 @@
+/* { dg-do compile } */
+/* { dg-options "-O -march=rv64gzb -mabi=lp64" } */
+int foo()
+{
+}