Commit 76d4accf by Jim Wilson Committed by Jim Wilson

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
parent 54ae50ac
2019-03-29 Jim Wilson <jimw@sifive.com>
* common/config/riscv/riscv-common.c (riscv_parse_arch_string):
Clear MASK_RVC and then set if C subset supported.
2019-03-29 Jakub Jelinek <jakub@redhat.com>
PR c/89872
......
......@@ -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;
......
2019-03-29 Jim Wilson <jimw@sifive.com>
* 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.
2019-03-29 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/89865
......
/* { 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;
}
/* { 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;
}
/* { 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;
}
/* { 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;
}
/* { 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;
}
/* { 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;
}
/* { 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;
}
/* { 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;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment