aboutsummaryrefslogtreecommitdiff
path: root/gcc/common
diff options
context:
space:
mode:
authorJim Wilson <jimw@sifive.com>2019-03-29 21:51:58 +0000
committerJim Wilson <wilson@gcc.gnu.org>2019-03-29 14:51:58 -0700
commit76d4accffd19a094761bf25b2d66435ce6642105 (patch)
tree25679b323cfe11e1cf4d4467072deab3944f32be /gcc/common
parent54ae50ac4532b2a0d72cc03639b8179b500ec043 (diff)
downloadgcc-76d4accffd19a094761bf25b2d66435ce6642105.zip
gcc-76d4accffd19a094761bf25b2d66435ce6642105.tar.gz
gcc-76d4accffd19a094761bf25b2d66435ce6642105.tar.bz2
RISC-V: Fix __riscv_compressed regression.
This was accidentally broken by the patch adding ELF attribute support. The __riscv_compressed predefined macro is not being defined when the target supports the C extension. The fix adds testcases to verify that all of the predefined macros are correct for various option combinations. gcc/ * common/config/riscv/riscv-common.c (riscv_parse_arch_string): Clear MASK_RVC and then set if C subset supported. gcc/testsuite/ * gcc.target/riscv/predef-1.c: New. * gcc.target/riscv/predef-2.c: New. * gcc.target/riscv/predef-3.c: New. * gcc.target/riscv/predef-4.c: New. * gcc.target/riscv/predef-5.c: New. * gcc.target/riscv/predef-6.c: New. * gcc.target/riscv/predef-7.c: New. * gcc.target/riscv/predef-8.c: New. From-SVN: r270026
Diffstat (limited to 'gcc/common')
-rw-r--r--gcc/common/config/riscv/riscv-common.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/common/config/riscv/riscv-common.c b/gcc/common/config/riscv/riscv-common.c
index 72c43c6..9452bd3 100644
--- a/gcc/common/config/riscv/riscv-common.c
+++ b/gcc/common/config/riscv/riscv-common.c
@@ -564,6 +564,10 @@ riscv_parse_arch_string (const char *isa, int *flags, location_t loc)
if (subset_list->lookup ("d"))
*flags |= MASK_DOUBLE_FLOAT;
+ *flags &= ~MASK_RVC;
+ if (subset_list->lookup ("c"))
+ *flags |= MASK_RVC;
+
if (current_subset_list)
delete current_subset_list;