diff options
author | Kito Cheng <kito.cheng@sifive.com> | 2020-08-20 17:19:41 +0800 |
---|---|---|
committer | Kito Cheng <kito.cheng@sifive.com> | 2020-11-02 17:09:00 +0800 |
commit | 4ad70477801548db4d37e8d540a3fd6ebbbcfd48 (patch) | |
tree | 333b27605142095eaab0256a58b49a97a0d5d310 /gcc | |
parent | c1e6691245ca2f1f329549f323f67afe32bcb97a (diff) | |
download | gcc-4ad70477801548db4d37e8d540a3fd6ebbbcfd48.zip gcc-4ad70477801548db4d37e8d540a3fd6ebbbcfd48.tar.gz gcc-4ad70477801548db4d37e8d540a3fd6ebbbcfd48.tar.bz2 |
RISC-V: Check multiletter extension has more than 1 letter
gcc/ChangeLog:
* common/config/riscv/riscv-common.c
(riscv_subset_list::parse_multiletter_ext): Checking multiletter
extension has more than 1 letter.
gcc/testsuite/ChangeLog
* gcc.target/riscv/arch-7.c: New.
* gcc.target/riscv/attribute-10.c: Update test arch string.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/common/config/riscv/riscv-common.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/riscv/arch-7.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/riscv/attribute-10.c | 2 |
3 files changed, 15 insertions, 1 deletions
diff --git a/gcc/common/config/riscv/riscv-common.c b/gcc/common/config/riscv/riscv-common.c index b84503a..84695a6 100644 --- a/gcc/common/config/riscv/riscv-common.c +++ b/gcc/common/config/riscv/riscv-common.c @@ -524,6 +524,14 @@ riscv_subset_list::parse_multiletter_ext (const char *p, *q = '\0'; + if (strlen (subset) == 1) + { + error_at (m_loc, "%<-march=%s%>: name of %s must be more than 1 letter", + m_arch, ext_type_str); + free (subset); + return NULL; + } + add (subset, major_version, minor_version, explicit_version_p); free (subset); p += end_of_version - subset; diff --git a/gcc/testsuite/gcc.target/riscv/arch-7.c b/gcc/testsuite/gcc.target/riscv/arch-7.c new file mode 100644 index 0000000..74ab248 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/arch-7.c @@ -0,0 +1,6 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -march=rv32i -march=rv32im_s -mabi=ilp32" } */ +int foo() +{ +} +/* { dg-error ".'-march=rv32im_s': name of supervisor extension must be more than 1 letter" "" { target *-*-* } 0 } */ diff --git a/gcc/testsuite/gcc.target/riscv/attribute-10.c b/gcc/testsuite/gcc.target/riscv/attribute-10.c index a874a62..26fdd08 100644 --- a/gcc/testsuite/gcc.target/riscv/attribute-10.c +++ b/gcc/testsuite/gcc.target/riscv/attribute-10.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -march=rv32i -march=rv32im_s_sx_unexpectedstring -mabi=ilp32" } */ +/* { dg-options "-O2 -march=rv32i -march=rv32im_sx_unexpectedstring -mabi=ilp32" } */ int foo() { } |