diff options
author | Kito Cheng <kito.cheng@sifive.com> | 2023-11-27 20:50:11 +0800 |
---|---|---|
committer | Kito Cheng <kito.cheng@sifive.com> | 2023-12-05 17:24:34 +0800 |
commit | f542df026cd24e604eb40426a83ce072ef34e15a (patch) | |
tree | 8ad5d139849926938efd6801ba52f30e52ebe423 /gcc | |
parent | 6e2e0ce6795c863e295eb33559f8dc0500297da3 (diff) | |
download | gcc-f542df026cd24e604eb40426a83ce072ef34e15a.zip gcc-f542df026cd24e604eb40426a83ce072ef34e15a.tar.gz gcc-f542df026cd24e604eb40426a83ce072ef34e15a.tar.bz2 |
RISC-V: Check if zcd conflicts with zcmt and zcmp
gcc/ChangeLog:
* common/config/riscv/riscv-common.cc
(riscv_subset_list::check_conflict_ext): Check zcd conflicts
with zcmt and zcmp.
gcc/testsuite/ChangeLog:
* gcc.target/riscv/arch-29.c: New test.
* gcc.target/riscv/arch-30.c: New test.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/common/config/riscv/riscv-common.cc | 8 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/riscv/arch-29.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/riscv/arch-30.c | 7 |
3 files changed, 22 insertions, 0 deletions
diff --git a/gcc/common/config/riscv/riscv-common.cc b/gcc/common/config/riscv/riscv-common.cc index 277d86d..4d5a2f8 100644 --- a/gcc/common/config/riscv/riscv-common.cc +++ b/gcc/common/config/riscv/riscv-common.cc @@ -1231,6 +1231,14 @@ riscv_subset_list::check_conflict_ext () /* 'H' hypervisor extension requires base ISA with 32 registers. */ if (lookup ("e") && lookup ("h")) error_at (m_loc, "%<-march=%s%>: h extension requires i extension", m_arch); + + if (lookup ("zcd")) + { + if (lookup ("zcmt")) + error_at (m_loc, "%<-march=%s%>: zcd conflicts with zcmt", m_arch); + if (lookup ("zcmp")) + error_at (m_loc, "%<-march=%s%>: zcd conflicts with zcmp", m_arch); + } } /* Parsing function for multi-letter extensions. diff --git a/gcc/testsuite/gcc.target/riscv/arch-29.c b/gcc/testsuite/gcc.target/riscv/arch-29.c new file mode 100644 index 0000000..f828127 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/arch-29.c @@ -0,0 +1,7 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64id_zcd_zcmt -mabi=lp64d" } */ +int foo() +{ +} + +/* { dg-error "zcd conflicts with zcmt" "" { target *-*-* } 0 } */ diff --git a/gcc/testsuite/gcc.target/riscv/arch-30.c b/gcc/testsuite/gcc.target/riscv/arch-30.c new file mode 100644 index 0000000..3e67ea0 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/arch-30.c @@ -0,0 +1,7 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64id_zcd_zcmp -mabi=lp64d" } */ +int foo() +{ +} + +/* { dg-error "zcd conflicts with zcmp" "" { target *-*-* } 0 } */ |