Fix floenv issues with MacOSX.
authorChris Hanson <org/chris-hanson/cph>
Fri, 24 Dec 2010 04:37:31 +0000 (20:37 -0800)
committerChris Hanson <org/chris-hanson/cph>
Fri, 24 Dec 2010 04:37:31 +0000 (20:37 -0800)
src/microcode/configure.ac
src/microcode/floenv.c
src/microcode/floenv.h

index 794f9c10b8f6207ef63172a905161d174baf79c4..1ee08111617668d19008085cdd1de3aae8f6e42f 100644 (file)
@@ -340,7 +340,7 @@ darwin*)
        AS_FLAGS="-arch x86_64 ${AS_FLAGS}"
        ;;
     esac
-    CFLAGS="${CFLAGS} ${MACOSX_CFLAGS}"
+    CFLAGS="${CFLAGS} ${MACOSX_CFLAGS} -frounding-math"
     LDFLAGS="${LDFLAGS} ${MACOSX_CFLAGS} -Wl,-syslibroot,${MACOSX_SYSROOT}"
     LDFLAGS="${LDFLAGS} -framework CoreFoundation"
     MODULE_LDFLAGS="${MODULE_LDFLAGS} -bundle"
index bdc9d6541e1a3bd434d2344a63d500a7a2b1b3e3..ab69a1f117124320f6f148fd0ac2e302c421c8fc 100644 (file)
@@ -314,12 +314,15 @@ static const int non_trappable_exceptions = 0
 #endif
   ;
 
+#ifdef HAVE_FEDISABLEEXCEPT
 static int
 arg_untrappable_float_exceptions (int n)
 {
   return (non_trappable_exceptions | (arg_float_exceptions (n)));
 }
+#endif
 
+#ifdef HAVE_FEENABLEEXCEPT
 static int
 arg_trappable_float_exceptions (int n)
 {
@@ -328,7 +331,9 @@ arg_trappable_float_exceptions (int n)
     error_bad_range_arg (n);
   return (exceptions);
 }
+#endif
 
+#if ((defined (HAVE_FEENABLEEXCEPT)) && (defined (HAVE_FEDISABLEEXCEPT)))
 static int
 arg_float_exceptions_to_trap (int n)
 {
@@ -337,6 +342,7 @@ arg_float_exceptions_to_trap (int n)
     error_bad_range_arg (n);
   return (exceptions);
 }
+#endif
 \f
 #define FLOAT_EXCEPTIONS_PRIMITIVE(E)  \
 {                                      \
@@ -478,8 +484,7 @@ DEFINE_PRIMITIVE ("TRAPPED-FLOAT-EXCEPTIONS", Prim_trapped_float_exceptions, 0,
     FLOAT_EXCEPTIONS_RESULT (exceptions);
   }
 #else
-  error_unimplemented_primitive ();
-  PRIMITIVE_RETURN (UNSPECIFIC);
+  PRIMITIVE_RETURN (ULONG_TO_FIXNUM (0));
 #endif
 }
 
@@ -497,7 +502,6 @@ DEFINE_PRIMITIVE ("SET-TRAPPED-FLOAT-EXCEPTIONS", Prim_set_trapped_float_excepti
     FLOAT_EXCEPTIONS_RESULT (previous_exceptions);
   }
 #else
-  error_unimplemented_primitive ();
   PRIMITIVE_RETURN (UNSPECIFIC);
 #endif
 }
index 70ef9b37d408c8027c40a9f84923d0ebe3f928a7..5141bfccdd96e851a335e3b177c2a74510828516 100644 (file)
@@ -39,6 +39,9 @@ USA.
 #  ifdef HAVE_FEXCEPT_T
 #    define scheme_fexcept_t fexcept_t
 #  endif
+#  ifdef __APPLE__
+#    undef HAVE_FEGETEXCEPT
+#  endif
 #elif ((!defined (CMPINTMD_EMULATES_FENV)) && (defined (HAVE_IEEEFP_H)))
 
 /* Assumption: If we have <ieeefp.h>, then we don't need to test for