Simplify x86 fenv structures.
authorTaylor R Campbell <campbell@mumble.net>
Sat, 22 Feb 2014 22:29:31 +0000 (22:29 +0000)
committerTaylor R Campbell <campbell@mumble.net>
Sat, 22 Feb 2014 22:29:32 +0000 (22:29 +0000)
Avoid needless typedefs and unions.

src/microcode/cmpintmd/x86-fenv.c
src/microcode/cmpintmd/x86-fenv.h

index 27a188781ed08ef0bc83f374c63176adc17f2172..5168121f632b66d0708d2adc485ba5bd198cd58b 100644 (file)
@@ -104,10 +104,10 @@ feclearexcept (int excepts)
        x87_clear_exceptions ();
       else
        {
-         x87_fenv_t fenv;
-         x87_read_environment (fenv.environment_bytes);
-         (fenv.environment.x87_status_word) &=~ excepts;
-         x87_write_environment (fenv.environment_bytes);
+         struct x87_fenv fenv;
+         x87_read_environment (&fenv);
+         (fenv.x87_status_word) &=~ excepts;
+         x87_write_environment (&fenv);
        }
     }
   return (! (sse_p || x87_p));
@@ -122,10 +122,10 @@ feraiseexcept (int excepts)
     sse_write_mxcsr ((sse_read_mxcsr ()) | excepts);
   if (x87_p)
     {
-      x87_fenv_t fenv;
-      x87_read_environment (fenv.environment_bytes);
-      (fenv.environment.x87_status_word) |= excepts;
-      x87_write_environment (fenv.environment_bytes);
+      struct x87_fenv fenv;
+      x87_read_environment (&fenv);
+      (fenv.x87_status_word) |= excepts;
+      x87_write_environment (&fenv);
       x87_trap_exceptions ();
     }
   /* There seems to be no good way to request a trap in SSE.
@@ -154,10 +154,10 @@ fesetexceptflag (const fexcept_t *flagp, int excepts)
     sse_write_mxcsr ((sse_read_mxcsr ()) | ((*flagp) & excepts));
   if (x87_p)
     {
-      x87_fenv_t fenv;
-      x87_read_environment (fenv.environment_bytes);
-      (fenv.environment.x87_status_word) |= ((*flagp) & excepts);
-      x87_write_environment (fenv.environment_bytes);
+      struct x87_fenv fenv;
+      x87_read_environment (&fenv);
+      (fenv.x87_status_word) |= ((*flagp) & excepts);
+      x87_write_environment (&fenv);
     }
   return (! (sse_p || x87_p));
 }
@@ -220,7 +220,7 @@ fegetenv (fenv_t *envp)
   if (sse_p)
     (envp->fenv_sse.sse_mxcsr) = (sse_read_mxcsr ());
   if (x87_p)
-    x87_read_environment (envp->fenv_x87.environment_bytes);
+    x87_read_environment (&envp->fenv_x87);
   return (! (sse_p || x87_p));
 }
 
@@ -230,7 +230,7 @@ fesetenv (const fenv_t *envp)
   if (sse_p)
     sse_write_mxcsr (envp->fenv_sse.sse_mxcsr);
   if (x87_p)
-    x87_write_environment (envp->fenv_x87.environment_bytes);
+    x87_write_environment (&envp->fenv_x87);
   return (! (sse_p || x87_p));
 }
 
@@ -249,7 +249,7 @@ feholdexcept (fenv_t *envp)
     {
       x87_clear_exceptions ();
       x87_write_control_word
-       ((envp->fenv_x87.environment.x87_control_word) | FE_ALL_EXCEPT);
+       ((envp->fenv_x87.x87_control_word) | FE_ALL_EXCEPT);
     }
   return (0);
 }
index 9fa23e09115d6ae4871872268efacc563a79cf1e..98b25d2fdb5cd520d092c2703ac893c65351edcf 100644 (file)
@@ -31,14 +31,14 @@ USA.
 
 typedef int fexcept_t;
 
-typedef struct
+struct sse_fenv
 {
   int sse_mxcsr;
-} sse_fenv_t;
+};
 
 /* FIXME: This structure needs to be packed.  */
 
-struct x87_environment
+struct x87_fenv
 {
   unsigned short x87_control_word;
   unsigned short x87_unused1;
@@ -55,16 +55,10 @@ struct x87_environment
   unsigned short x87_unused5;
 };
 
-typedef union
-{
-  struct x87_environment environment;
-  unsigned char environment_bytes [sizeof (struct x87_environment)];
-} x87_fenv_t;
-
 typedef struct
 {
-  sse_fenv_t fenv_sse;
-  x87_fenv_t fenv_x87;
+  struct sse_fenv fenv_sse;
+  struct x87_fenv fenv_x87;
 } fenv_t;
 \f
 #define FE_TONEAREST 0