From 33102e5295a163d17a74e0d1100f7bfceb4508be Mon Sep 17 00:00:00 2001 From: David Abdurachmanov Date: Sat, 13 Apr 2019 15:17:05 +0200 Subject: [PATCH] Backport fix for __riscv_compressed regression More details: https://github.com/gcc-mirror/gcc/commit/f15d2aa02df3b06d07704584832ca023921e9ad2 Signed-off-by: David Abdurachmanov --- gcc-9.0.1-20190328-fix-riscv-compressed.patch | 591 ++++++++++++++++++ gcc.spec | 3 + 2 files changed, 594 insertions(+) create mode 100644 gcc-9.0.1-20190328-fix-riscv-compressed.patch diff --git a/gcc-9.0.1-20190328-fix-riscv-compressed.patch b/gcc-9.0.1-20190328-fix-riscv-compressed.patch new file mode 100644 index 0000000..7c90ad3 --- /dev/null +++ b/gcc-9.0.1-20190328-fix-riscv-compressed.patch @@ -0,0 +1,591 @@ +diff --git a/gcc/common/config/riscv/riscv-common.c b/gcc/common/config/riscv/riscv-common.c +index 72c43c69b..9452bd3a0 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; + +diff --git a/gcc/testsuite/gcc.target/riscv/predef-1.c b/gcc/testsuite/gcc.target/riscv/predef-1.c +new file mode 100644 +index 000000000..70f121f15 +--- /dev/null ++++ b/gcc/testsuite/gcc.target/riscv/predef-1.c +@@ -0,0 +1,66 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -march=rv32i -mabi=ilp32 -mcmodel=medlow" } */ ++ ++int main () { ++#if !defined(__riscv) ++#error "__riscv" ++#endif ++ ++#if defined(__riscv_compressed) ++#error "__riscv_compressed" ++#endif ++ ++#if defined(__riscv_32e) ++#error "__riscv_32e" ++#endif ++ ++#if defined(__riscv_atomic) ++#error "__riscv_atomic" ++#endif ++ ++#if defined(__riscv_mul) ++#error "__riscv_mul" ++#endif ++#if defined(__riscv_div) ++#error "__riscv_div" ++#endif ++#if defined(__riscv_muldiv) ++#error "__riscv_muldiv" ++#endif ++ ++#if __riscv_xlen != 32 ++#error "__riscv_xlen" ++#endif ++ ++#if defined(__riscv_fdiv) ++#error "__riscv_fdiv" ++#endif ++#if defined(__riscv_fsqrt) ++#error "__riscv_fsqrt" ++#endif ++ ++#if defined(__riscv_abi_rve) ++#error "__riscv_abi_rve" ++#endif ++#if !defined(__riscv_float_abi_soft) ++#error "__riscv_float_abi_soft" ++#endif ++#if defined(__riscv_float_abi_single) ++#error "__riscv_float_abi_single" ++#endif ++#if defined(__riscv_float_abi_double) ++#error "__riscv_float_abi_double" ++#endif ++ ++#if !defined(__riscv_cmodel_medlow) ++#error "__riscv_cmodel_medlow" ++#endif ++#if defined(__riscv_cmodel_medany) ++#error "__riscv_cmodel_medlow" ++#endif ++#if defined(__riscv_cmodel_pic) ++#error "__riscv_cmodel_medlow" ++#endif ++ ++ return 0; ++} +diff --git a/gcc/testsuite/gcc.target/riscv/predef-2.c b/gcc/testsuite/gcc.target/riscv/predef-2.c +new file mode 100644 +index 000000000..6f3c8c386 +--- /dev/null ++++ b/gcc/testsuite/gcc.target/riscv/predef-2.c +@@ -0,0 +1,66 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -march=rv32imaf -mabi=ilp32f -mcmodel=medany" } */ ++ ++int main () { ++#if !defined(__riscv) ++#error "__riscv" ++#endif ++ ++#if defined(__riscv_compressed) ++#error "__riscv_compressed" ++#endif ++ ++#if defined(__riscv_32e) ++#error "__riscv_32e" ++#endif ++ ++#if !defined(__riscv_atomic) ++#error "__riscv_atomic" ++#endif ++ ++#if !defined(__riscv_mul) ++#error "__riscv_mul" ++#endif ++#if !defined(__riscv_div) ++#error "__riscv_div" ++#endif ++#if !defined(__riscv_muldiv) ++#error "__riscv_muldiv" ++#endif ++ ++#if __riscv_xlen != 32 ++#error "__riscv_xlen" ++#endif ++ ++#if !defined(__riscv_fdiv) ++#error "__riscv_fdiv" ++#endif ++#if !defined(__riscv_fsqrt) ++#error "__riscv_fsqrt" ++#endif ++ ++#if defined(__riscv_abi_rve) ++#error "__riscv_abi_rve" ++#endif ++#if defined(__riscv_float_abi_soft) ++#error "__riscv_float_abi_soft" ++#endif ++#if !defined(__riscv_float_abi_single) ++#error "__riscv_float_abi_single" ++#endif ++#if defined(__riscv_float_abi_double) ++#error "__riscv_float_abi_double" ++#endif ++ ++#if defined(__riscv_cmodel_medlow) ++#error "__riscv_cmodel_medlow" ++#endif ++#if !defined(__riscv_cmodel_medany) ++#error "__riscv_cmodel_medlow" ++#endif ++#if defined(__riscv_cmodel_pic) ++#error "__riscv_cmodel_medlow" ++#endif ++ ++ return 0; ++} +diff --git a/gcc/testsuite/gcc.target/riscv/predef-3.c b/gcc/testsuite/gcc.target/riscv/predef-3.c +new file mode 100644 +index 000000000..6f4f2e219 +--- /dev/null ++++ b/gcc/testsuite/gcc.target/riscv/predef-3.c +@@ -0,0 +1,66 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -march=rv32imafdc -mabi=ilp32d -fpic" } */ ++ ++int main () { ++#if !defined(__riscv) ++#error "__riscv" ++#endif ++ ++#if !defined(__riscv_compressed) ++#error "__riscv_compressed" ++#endif ++ ++#if defined(__riscv_32e) ++#error "__riscv_32e" ++#endif ++ ++#if !defined(__riscv_atomic) ++#error "__riscv_atomic" ++#endif ++ ++#if !defined(__riscv_mul) ++#error "__riscv_mul" ++#endif ++#if !defined(__riscv_div) ++#error "__riscv_div" ++#endif ++#if !defined(__riscv_muldiv) ++#error "__riscv_muldiv" ++#endif ++ ++#if __riscv_xlen != 32 ++#error "__riscv_xlen" ++#endif ++ ++#if !defined(__riscv_fdiv) ++#error "__riscv_fdiv" ++#endif ++#if !defined(__riscv_fsqrt) ++#error "__riscv_fsqrt" ++#endif ++ ++#if defined(__riscv_abi_rve) ++#error "__riscv_abi_rve" ++#endif ++#if defined(__riscv_float_abi_soft) ++#error "__riscv_float_abi_soft" ++#endif ++#if defined(__riscv_float_abi_single) ++#error "__riscv_float_abi_single" ++#endif ++#if !defined(__riscv_float_abi_double) ++#error "__riscv_float_abi_double" ++#endif ++ ++#if defined(__riscv_cmodel_medlow) ++#error "__riscv_cmodel_medlow" ++#endif ++#if defined(__riscv_cmodel_medany) ++#error "__riscv_cmodel_medlow" ++#endif ++#if !defined(__riscv_cmodel_pic) ++#error "__riscv_cmodel_medlow" ++#endif ++ ++ return 0; ++} +diff --git a/gcc/testsuite/gcc.target/riscv/predef-4.c b/gcc/testsuite/gcc.target/riscv/predef-4.c +new file mode 100644 +index 000000000..822f61782 +--- /dev/null ++++ b/gcc/testsuite/gcc.target/riscv/predef-4.c +@@ -0,0 +1,66 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -march=rv64ia -mabi=lp64 -mcmodel=medlow" } */ ++ ++int main () { ++#if !defined(__riscv) ++#error "__riscv" ++#endif ++ ++#if defined(__riscv_compressed) ++#error "__riscv_compressed" ++#endif ++ ++#if defined(__riscv_32e) ++#error "__riscv_32e" ++#endif ++ ++#if !defined(__riscv_atomic) ++#error "__riscv_atomic" ++#endif ++ ++#if defined(__riscv_mul) ++#error "__riscv_mul" ++#endif ++#if defined(__riscv_div) ++#error "__riscv_div" ++#endif ++#if defined(__riscv_muldiv) ++#error "__riscv_muldiv" ++#endif ++ ++#if __riscv_xlen != 64 ++#error "__riscv_xlen" ++#endif ++ ++#if defined(__riscv_fdiv) ++#error "__riscv_fdiv" ++#endif ++#if defined(__riscv_fsqrt) ++#error "__riscv_fsqrt" ++#endif ++ ++#if defined(__riscv_abi_rve) ++#error "__riscv_abi_rve" ++#endif ++#if !defined(__riscv_float_abi_soft) ++#error "__riscv_float_abi_soft" ++#endif ++#if defined(__riscv_float_abi_single) ++#error "__riscv_float_abi_single" ++#endif ++#if defined(__riscv_float_abi_double) ++#error "__riscv_float_abi_double" ++#endif ++ ++#if !defined(__riscv_cmodel_medlow) ++#error "__riscv_cmodel_medlow" ++#endif ++#if defined(__riscv_cmodel_medany) ++#error "__riscv_cmodel_medlow" ++#endif ++#if defined(__riscv_cmodel_pic) ++#error "__riscv_cmodel_medlow" ++#endif ++ ++ return 0; ++} +diff --git a/gcc/testsuite/gcc.target/riscv/predef-5.c b/gcc/testsuite/gcc.target/riscv/predef-5.c +new file mode 100644 +index 000000000..664904909 +--- /dev/null ++++ b/gcc/testsuite/gcc.target/riscv/predef-5.c +@@ -0,0 +1,66 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -march=rv64imf -mabi=lp64f -mcmodel=medany" } */ ++ ++int main () { ++#if !defined(__riscv) ++#error "__riscv" ++#endif ++ ++#if defined(__riscv_compressed) ++#error "__riscv_compressed" ++#endif ++ ++#if defined(__riscv_32e) ++#error "__riscv_32e" ++#endif ++ ++#if defined(__riscv_atomic) ++#error "__riscv_atomic" ++#endif ++ ++#if !defined(__riscv_mul) ++#error "__riscv_mul" ++#endif ++#if !defined(__riscv_div) ++#error "__riscv_div" ++#endif ++#if !defined(__riscv_muldiv) ++#error "__riscv_muldiv" ++#endif ++ ++#if __riscv_xlen != 64 ++#error "__riscv_xlen" ++#endif ++ ++#if !defined(__riscv_fdiv) ++#error "__riscv_fdiv" ++#endif ++#if !defined(__riscv_fsqrt) ++#error "__riscv_fsqrt" ++#endif ++ ++#if defined(__riscv_abi_rve) ++#error "__riscv_abi_rve" ++#endif ++#if defined(__riscv_float_abi_soft) ++#error "__riscv_float_abi_soft" ++#endif ++#if !defined(__riscv_float_abi_single) ++#error "__riscv_float_abi_single" ++#endif ++#if defined(__riscv_float_abi_double) ++#error "__riscv_float_abi_double" ++#endif ++ ++#if defined(__riscv_cmodel_medlow) ++#error "__riscv_cmodel_medlow" ++#endif ++#if !defined(__riscv_cmodel_medany) ++#error "__riscv_cmodel_medlow" ++#endif ++#if defined(__riscv_cmodel_pic) ++#error "__riscv_cmodel_medlow" ++#endif ++ ++ return 0; ++} +diff --git a/gcc/testsuite/gcc.target/riscv/predef-6.c b/gcc/testsuite/gcc.target/riscv/predef-6.c +new file mode 100644 +index 000000000..ee4e02bcb +--- /dev/null ++++ b/gcc/testsuite/gcc.target/riscv/predef-6.c +@@ -0,0 +1,66 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -march=rv64gc -mabi=lp64d -fpic" } */ ++ ++int main () { ++#if !defined(__riscv) ++#error "__riscv" ++#endif ++ ++#if !defined(__riscv_compressed) ++#error "__riscv_compressed" ++#endif ++ ++#if defined(__riscv_32e) ++#error "__riscv_32e" ++#endif ++ ++#if !defined(__riscv_atomic) ++#error "__riscv_atomic" ++#endif ++ ++#if !defined(__riscv_mul) ++#error "__riscv_mul" ++#endif ++#if !defined(__riscv_div) ++#error "__riscv_div" ++#endif ++#if !defined(__riscv_muldiv) ++#error "__riscv_muldiv" ++#endif ++ ++#if __riscv_xlen != 64 ++#error "__riscv_xlen" ++#endif ++ ++#if !defined(__riscv_fdiv) ++#error "__riscv_fdiv" ++#endif ++#if !defined(__riscv_fsqrt) ++#error "__riscv_fsqrt" ++#endif ++ ++#if defined(__riscv_abi_rve) ++#error "__riscv_abi_rve" ++#endif ++#if defined(__riscv_float_abi_soft) ++#error "__riscv_float_abi_soft" ++#endif ++#if defined(__riscv_float_abi_single) ++#error "__riscv_float_abi_single" ++#endif ++#if !defined(__riscv_float_abi_double) ++#error "__riscv_float_abi_double" ++#endif ++ ++#if defined(__riscv_cmodel_medlow) ++#error "__riscv_cmodel_medlow" ++#endif ++#if defined(__riscv_cmodel_medany) ++#error "__riscv_cmodel_medlow" ++#endif ++#if !defined(__riscv_cmodel_pic) ++#error "__riscv_cmodel_medlow" ++#endif ++ ++ return 0; ++} +diff --git a/gcc/testsuite/gcc.target/riscv/predef-7.c b/gcc/testsuite/gcc.target/riscv/predef-7.c +new file mode 100644 +index 000000000..0358f325c +--- /dev/null ++++ b/gcc/testsuite/gcc.target/riscv/predef-7.c +@@ -0,0 +1,66 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -march=rv32em -mabi=ilp32e -mno-div -mcmodel=medlow" } */ ++ ++int main () { ++#if !defined(__riscv) ++#error "__riscv" ++#endif ++ ++#if defined(__riscv_compressed) ++#error "__riscv_compressed" ++#endif ++ ++#if !defined(__riscv_32e) ++#error "__riscv_32e" ++#endif ++ ++#if defined(__riscv_atomic) ++#error "__riscv_atomic" ++#endif ++ ++#if !defined(__riscv_mul) ++#error "__riscv_mul" ++#endif ++#if defined(__riscv_div) ++#error "__riscv_div" ++#endif ++#if defined(__riscv_muldiv) ++#error "__riscv_muldiv" ++#endif ++ ++#if __riscv_xlen != 32 ++#error "__riscv_xlen" ++#endif ++ ++#if defined(__riscv_fdiv) ++#error "__riscv_fdiv" ++#endif ++#if defined(__riscv_fsqrt) ++#error "__riscv_fsqrt" ++#endif ++ ++#if !defined(__riscv_abi_rve) ++#error "__riscv_abi_rve" ++#endif ++#if !defined(__riscv_float_abi_soft) ++#error "__riscv_float_abi_soft" ++#endif ++#if defined(__riscv_float_abi_single) ++#error "__riscv_float_abi_single" ++#endif ++#if defined(__riscv_float_abi_double) ++#error "__riscv_float_abi_double" ++#endif ++ ++#if !defined(__riscv_cmodel_medlow) ++#error "__riscv_cmodel_medlow" ++#endif ++#if defined(__riscv_cmodel_medany) ++#error "__riscv_cmodel_medlow" ++#endif ++#if defined(__riscv_cmodel_pic) ++#error "__riscv_cmodel_medlow" ++#endif ++ ++ return 0; ++} +diff --git a/gcc/testsuite/gcc.target/riscv/predef-8.c b/gcc/testsuite/gcc.target/riscv/predef-8.c +new file mode 100644 +index 000000000..41cd9feab +--- /dev/null ++++ b/gcc/testsuite/gcc.target/riscv/predef-8.c +@@ -0,0 +1,66 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -march=rv32if -mabi=ilp32f -mno-fdiv -mcmodel=medany" } */ ++ ++int main () { ++#if !defined(__riscv) ++#error "__riscv" ++#endif ++ ++#if defined(__riscv_compressed) ++#error "__riscv_compressed" ++#endif ++ ++#if defined(__riscv_32e) ++#error "__riscv_32e" ++#endif ++ ++#if defined(__riscv_atomic) ++#error "__riscv_atomic" ++#endif ++ ++#if defined(__riscv_mul) ++#error "__riscv_mul" ++#endif ++#if defined(__riscv_div) ++#error "__riscv_div" ++#endif ++#if defined(__riscv_muldiv) ++#error "__riscv_muldiv" ++#endif ++ ++#if __riscv_xlen != 32 ++#error "__riscv_xlen" ++#endif ++ ++#if defined(__riscv_fdiv) ++#error "__riscv_fdiv" ++#endif ++#if defined(__riscv_fsqrt) ++#error "__riscv_fsqrt" ++#endif ++ ++#if defined(__riscv_abi_rve) ++#error "__riscv_abi_rve" ++#endif ++#if defined(__riscv_float_abi_soft) ++#error "__riscv_float_abi_soft" ++#endif ++#if !defined(__riscv_float_abi_single) ++#error "__riscv_float_abi_single" ++#endif ++#if defined(__riscv_float_abi_double) ++#error "__riscv_float_abi_double" ++#endif ++ ++#if defined(__riscv_cmodel_medlow) ++#error "__riscv_cmodel_medlow" ++#endif ++#if !defined(__riscv_cmodel_medany) ++#error "__riscv_cmodel_medlow" ++#endif ++#if defined(__riscv_cmodel_pic) ++#error "__riscv_cmodel_medlow" ++#endif ++ ++ return 0; ++} diff --git a/gcc.spec b/gcc.spec index ffdfa33..72aaf55 100644 --- a/gcc.spec +++ b/gcc.spec @@ -257,6 +257,9 @@ Patch11: gcc9-d-shared-libphobos.patch Patch12: gcc9-pr89093.patch Patch30: libphobos-enable-riscv-v3.patch +# Backport +# See: https://github.com/gcc-mirror/gcc/commit/f15d2aa02df3b06d07704584832ca023921e9ad2 +Patch31: gcc-9.0.1-20190328-fix-riscv-compressed.patch Patch1000: nvptx-tools-no-ptxas.patch Patch1001: nvptx-tools-build.patch