aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXing GUO <higuoxing@gmail.com>2021-01-28 11:22:40 +0800
committerKito Cheng <kito.cheng@sifive.com>2021-01-28 11:25:50 +0800
commitf76d0d86454baf99ada0748c73a29816854e1b91 (patch)
tree775eb7c49464a5046fbcf3c71f73c1646835dcfc
parentaa69f0a8203095b5a689fae48d5ca8006ecfca61 (diff)
downloadgcc-f76d0d86454baf99ada0748c73a29816854e1b91.zip
gcc-f76d0d86454baf99ada0748c73a29816854e1b91.tar.gz
gcc-f76d0d86454baf99ada0748c73a29816854e1b91.tar.bz2
RISC-V: Fix -march option parsing when extension exists.
This patch fixes -march option parsing when `p` extension exists, e.g., -march=rv64imafdcp should produce .attribute arch, "rv64i2p0_m2p0_a2p0_f2p0_d2p0_c2p0_p" rather than .attribute arch, "rv64i2p0_m2p0_a2p0_f2p0_d2p0_c_p" gcc/ChangeLog: * common/config/riscv/riscv-common.c (riscv_subset_list::parsing_subset_version): Fix -march option parsing when `p` extension exists. gcc/testsuite/ChangeLog: * gcc.target/riscv/attribute-18.c: New test.
-rw-r--r--gcc/common/config/riscv/riscv-common.c4
-rw-r--r--gcc/testsuite/gcc.target/riscv/attribute-18.c4
2 files changed, 5 insertions, 3 deletions
diff --git a/gcc/common/config/riscv/riscv-common.c b/gcc/common/config/riscv/riscv-common.c
index b3f5c07..6bbe25d 100644
--- a/gcc/common/config/riscv/riscv-common.c
+++ b/gcc/common/config/riscv/riscv-common.c
@@ -527,9 +527,7 @@ riscv_subset_list::parsing_subset_version (const char *ext,
/* Might be beginning of `p` extension. */
if (std_ext_p)
{
- *major_version = version;
- *minor_version = 0;
- *explicit_version_p = true;
+ get_default_version (ext, major_version, minor_version);
return p;
}
else
diff --git a/gcc/testsuite/gcc.target/riscv/attribute-18.c b/gcc/testsuite/gcc.target/riscv/attribute-18.c
new file mode 100644
index 0000000..1fd80fe
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/attribute-18.c
@@ -0,0 +1,4 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64imafdcp -mabi=lp64d -misa-spec=2.2" } */
+int foo() {}
+/* { dg-final { scan-assembler ".attribute arch, \"rv64i2p0_m2p0_a2p0_f2p0_d2p0_c2p0_p\"" } } */