diff options
-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() { } |