Tested on aarch64-linux,darwin and a cross from aarch64-darwin to linux,
OK for trunk, or some alternative is needed?
thanks
Iain

--- 8< ---

Currently, most of the acle tests fail on the Darwin port because
DI mode is "long" and uint64 is "long long".  The fix for this used
in other headers is to cast the pointers using __builtin_aarch64_simd_di
and that is what this patch does.

gcc/ChangeLog:

        * config/aarch64/arm_acle.h (__rndr): Cast uint64 pointer to DI
        mode to avoid typedef mismatches.
        (__rndrrs): Likewise.
---
 gcc/config/aarch64/arm_acle.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gcc/config/aarch64/arm_acle.h b/gcc/config/aarch64/arm_acle.h
index 2aa681090fa..823f87187b1 100644
--- a/gcc/config/aarch64/arm_acle.h
+++ b/gcc/config/aarch64/arm_acle.h
@@ -309,14 +309,14 @@ __extension__ extern __inline int
 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
 __rndr (uint64_t *__res)
 {
-  return __builtin_aarch64_rndr (__res);
+  return __builtin_aarch64_rndr ((__builtin_aarch64_simd_di *) __res);
 }
 
 __extension__ extern __inline int
 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
 __rndrrs (uint64_t *__res)
 {
-  return __builtin_aarch64_rndrrs (__res);
+  return __builtin_aarch64_rndrrs ((__builtin_aarch64_simd_di *) __res);
 }
 
 #pragma GCC pop_options
-- 
2.39.2 (Apple Git-143)

Reply via email to