From 45f7ea26c1d9145a9e024b8646592d405fb285e0 Mon Sep 17 00:00:00 2001 From: Daniel Cederman Date: Tue, 16 Jan 2024 16:16:41 +0100 Subject: sparc: Force calculation that raises exception Use the math_force_eval() macro to force the calculation to complete and raise the exception. With this change the math/test-fenv test pass. Signed-off-by: Daniel Cederman Reviewed-by: Adhemerval Zanella --- sysdeps/sparc/fpu/fraiseexcpt.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/sysdeps/sparc/fpu/fraiseexcpt.c b/sysdeps/sparc/fpu/fraiseexcpt.c index 26a7720ec9..642666c12a 100644 --- a/sysdeps/sparc/fpu/fraiseexcpt.c +++ b/sysdeps/sparc/fpu/fraiseexcpt.c @@ -20,6 +20,7 @@ #include #include #include +#include int __feraiseexcept (int excepts) @@ -42,7 +43,7 @@ __feraiseexcept (int excepts) /* One example of an invalid operation is 0/0. */ __asm ("" : "=e" (d) : "0" (c.zero)); d /= c.zero; - __asm __volatile ("" : : "e" (d)); + math_force_eval (d); } /* Next: division by zero. */ @@ -50,7 +51,7 @@ __feraiseexcept (int excepts) { __asm ("" : "=e" (d) : "0" (c.one)); d /= c.zero; - __asm __volatile ("" : : "e" (d)); + math_force_eval (d); } /* Next: overflow. */ @@ -58,7 +59,7 @@ __feraiseexcept (int excepts) { __asm ("" : "=e" (d) : "0" (c.max)); d *= d; - __asm __volatile ("" : : "e" (d)); + math_force_eval (d); } /* Next: underflow. */ @@ -66,7 +67,7 @@ __feraiseexcept (int excepts) { __asm ("" : "=e" (d) : "0" (c.min)); d *= d; - __asm __volatile ("" : : "e" (d)); + math_force_eval (d); } /* Last: inexact. */ @@ -74,7 +75,7 @@ __feraiseexcept (int excepts) { __asm ("" : "=e" (d) : "0" (c.one)); d /= c.pi; - __asm __volatile ("" : : "e" (d)); + math_force_eval (d); } /* Success. */ -- cgit v1.2.3