Now that we officially allow -mabi=ilp32e to be used separately from
the -march=rv32e option, we need a predefined macro for it so user code
can detect the ABI. This patches adds a __riscv_abi_rve macro for that
purpose. While writing this, I noticed some trailing white space in
the file, and fixed that too.
This was tested with riscv{32,64}-{elf,linux} cross builds. Also, hand
testing to verify that the new macros is defined only when it should be
defined.
Committed.
Jim
gcc/
* config/riscv/riscv-c.c (riscv_cpu_cpp_builtins): For ABI_ILP32E,
also define __riscv_abi_rve. Delete trailing white space.
---
gcc/config/riscv/riscv-c.c | 27 +++++++++++++++------------
1 file changed, 15 insertions(+), 12 deletions(-)
diff --git a/gcc/config/riscv/riscv-c.c b/gcc/config/riscv/riscv-c.c
index 513f974d9aa..d3ecd0796e8 100644
--- a/gcc/config/riscv/riscv-c.c
+++ b/gcc/config/riscv/riscv-c.c
@@ -35,62 +35,65 @@ void
riscv_cpu_cpp_builtins (cpp_reader *pfile)
{
builtin_define ("__riscv");
-
+
if (TARGET_RVC)
builtin_define ("__riscv_compressed");
-
+
if (TARGET_RVE)
builtin_define ("__riscv_32e");
if (TARGET_ATOMIC)
builtin_define ("__riscv_atomic");
-
+
if (TARGET_MUL)
builtin_define ("__riscv_mul");
if (TARGET_DIV)
builtin_define ("__riscv_div");
if (TARGET_DIV && TARGET_MUL)
builtin_define ("__riscv_muldiv");
-
+
builtin_define_with_int_value ("__riscv_xlen", UNITS_PER_WORD * 8);
if (TARGET_HARD_FLOAT)
builtin_define_with_int_value ("__riscv_flen", UNITS_PER_FP_REG * 8);
-
+
if (TARGET_HARD_FLOAT && TARGET_FDIV)
{
builtin_define ("__riscv_fdiv");
builtin_define ("__riscv_fsqrt");
}
-
+
switch (riscv_abi)
{
- case ABI_ILP32:
case ABI_ILP32E:
+ builtin_define ("__riscv_abi_rve");
+ gcc_fallthrough ();
+
+ case ABI_ILP32:
case ABI_LP64:
builtin_define ("__riscv_float_abi_soft");
break;
-
+
case ABI_ILP32F:
case ABI_LP64F:
builtin_define ("__riscv_float_abi_single");
break;
-
+
case ABI_ILP32D:
case ABI_LP64D:
builtin_define ("__riscv_float_abi_double");
break;
}
-
+
switch (riscv_cmodel)
{
case CM_MEDLOW:
builtin_define ("__riscv_cmodel_medlow");
break;
-
+
case CM_MEDANY:
builtin_define ("__riscv_cmodel_medany");
break;
-
+
case CM_PIC:
builtin_define ("__riscv_cmodel_pic");
break;
--
2.17.1