https://gcc.gnu.org/g:904f332cce3de59b99a48751e69717cbd3592901

commit r15-6663-g904f332cce3de59b99a48751e69717cbd3592901
Author: Dimitar Dimitrov <dimi...@dinux.eu>
Date:   Thu Dec 12 20:22:59 2024 +0200

    testsuite: RISC-V: Add effective target for E ABI variant
    
    Add new effective target check for either ILP32E or ILP64E ABI variants.
    
    Initial implementation only checks for RV32E or RV64E ISA, which in turn
    implies that ILP32E/ILP64E ABI is used.  The RV32I+ILP32E and
    RV64I+ILP64E combinations are not yet caught by the check, but they
    do not seem to be widely used currently.
    
    gcc/testsuite/ChangeLog:
    
            * lib/target-supports.exp (check_effective_target_riscv_abi_e):
            New procedure.
    
    Signed-off-by: Dimitar Dimitrov <dimi...@dinux.eu>

Diff:
---
 gcc/testsuite/lib/target-supports.exp | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/gcc/testsuite/lib/target-supports.exp 
b/gcc/testsuite/lib/target-supports.exp
index 45ba2f47a9d1..0ff00d189ff5 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -1904,6 +1904,26 @@ proc check_effective_target_riscv_a { } {
     }]
 }
 
+# Return 1 if the ABI is either ILP32E or ILP64E, 0 otherwise.
+# Cache the result.
+
+proc check_effective_target_riscv_abi_e { } {
+    # If current ISA is E, then only E ABI is supported.
+    if { [check_no_compiler_messages riscv_abi_e assembly {
+       #ifndef __riscv_e
+       #error "Not __riscv_e"
+       #endif
+       }] } {
+           return 1
+       }
+
+    # E ABI can be chosen by both E and I base ISA variants.
+    #
+    # TODO - check for I ISA and E ABI combination.
+
+    return 0
+}
+
 # Return 1 if the target arch supports the atomic LRSC extension, 0 otherwise.
 # Cache the result.

Reply via email to