summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/libc/alpha/gen/isinf.c20
-rw-r--r--lib/libc/amd64/gen/isinf.c33
-rw-r--r--lib/libc/i386/gen/isinf.c33
-rw-r--r--lib/libc/ia64/gen/isinf.c20
-rw-r--r--lib/libc/powerpc/gen/isinf.c20
-rw-r--r--lib/libc/sparc64/gen/isinf.c20
6 files changed, 94 insertions, 52 deletions
diff --git a/lib/libc/alpha/gen/isinf.c b/lib/libc/alpha/gen/isinf.c
index 0017ea5..df6ac96 100644
--- a/lib/libc/alpha/gen/isinf.c
+++ b/lib/libc/alpha/gen/isinf.c
@@ -43,18 +43,26 @@ int
isnan(d)
double d;
{
- struct ieee_double *p = (struct ieee_double *)&d;
+ union {
+ double v;
+ struct ieee_double s;
+ } u;
- return (p->dbl_exp == DBL_EXP_INFNAN &&
- (p->dbl_frach || p->dbl_fracl));
+ u.v = d;
+ return (u.s.dbl_exp == DBL_EXP_INFNAN &&
+ (u.s.dbl_frach || u.s.dbl_fracl));
}
int
isinf(d)
double d;
{
- struct ieee_double *p = (struct ieee_double *)&d;
+ union {
+ double v;
+ struct ieee_double s;
+ } u;
- return (p->dbl_exp == DBL_EXP_INFNAN &&
- !p->dbl_frach && !p->dbl_fracl);
+ u.v = d;
+ return (u.s.dbl_exp == DBL_EXP_INFNAN &&
+ !u.s.dbl_frach && !u.s.dbl_fracl);
}
diff --git a/lib/libc/amd64/gen/isinf.c b/lib/libc/amd64/gen/isinf.c
index d894b4f..a5e9dec 100644
--- a/lib/libc/amd64/gen/isinf.c
+++ b/lib/libc/amd64/gen/isinf.c
@@ -41,30 +41,35 @@ __FBSDID("$FreeBSD$");
#include <sys/types.h>
+struct IEEEdp {
+ u_int manl : 32;
+ u_int manh : 20;
+ u_int exp : 11;
+ u_int sign : 1;
+};
+
int
isnan(d)
double d;
{
- register struct IEEEdp {
- u_int manl : 32;
- u_int manh : 20;
- u_int exp : 11;
- u_int sign : 1;
- } *p = (struct IEEEdp *)&d;
+ union {
+ double v;
+ struct IEEEdp s;
+ } u;
- return(p->exp == 2047 && (p->manh || p->manl));
+ u.v = d;
+ return(u.s.exp == 2047 && (u.s.manh || u.s.manl));
}
int
isinf(d)
double d;
{
- register struct IEEEdp {
- u_int manl : 32;
- u_int manh : 20;
- u_int exp : 11;
- u_int sign : 1;
- } *p = (struct IEEEdp *)&d;
+ union {
+ double v;
+ struct IEEEdp s;
+ } u;
- return(p->exp == 2047 && !p->manh && !p->manl);
+ u.v = d;
+ return(u.s.exp == 2047 && !u.s.manh && !u.s.manl);
}
diff --git a/lib/libc/i386/gen/isinf.c b/lib/libc/i386/gen/isinf.c
index d894b4f..0d9cd86 100644
--- a/lib/libc/i386/gen/isinf.c
+++ b/lib/libc/i386/gen/isinf.c
@@ -41,30 +41,35 @@ __FBSDID("$FreeBSD$");
#include <sys/types.h>
+struct IEEEdp {
+ u_int manl : 32;
+ u_int manh : 20;
+ u_int exp : 11;
+ u_int sign : 1;
+};
+
int
isnan(d)
double d;
{
- register struct IEEEdp {
- u_int manl : 32;
- u_int manh : 20;
- u_int exp : 11;
- u_int sign : 1;
- } *p = (struct IEEEdp *)&d;
+ union {
+ double v;
+ struct IEEEdp s;
+ } u;
- return(p->exp == 2047 && (p->manh || p->manl));
+ u.v = d;
+ return (u.s.exp == 2047 && (u.s.manh || u.s.manl));
}
int
isinf(d)
double d;
{
- register struct IEEEdp {
- u_int manl : 32;
- u_int manh : 20;
- u_int exp : 11;
- u_int sign : 1;
- } *p = (struct IEEEdp *)&d;
+ union {
+ double v;
+ struct IEEEdp s;
+ } u;
- return(p->exp == 2047 && !p->manh && !p->manl);
+ u.v = d;
+ return (u.s.exp == 2047 && !u.s.manh && !u.s.manl);
}
diff --git a/lib/libc/ia64/gen/isinf.c b/lib/libc/ia64/gen/isinf.c
index f47ef61..8f346f3 100644
--- a/lib/libc/ia64/gen/isinf.c
+++ b/lib/libc/ia64/gen/isinf.c
@@ -43,18 +43,26 @@ int
isnan(d)
double d;
{
- struct ieee_double *p = (struct ieee_double *)&d;
+ union {
+ double v;
+ struct ieee_double s;
+ } u;
- return (p->dbl_exp == DBL_EXP_INFNAN &&
- (p->dbl_frach || p->dbl_fracl));
+ u.v = d;
+ return (u.s.dbl_exp == DBL_EXP_INFNAN &&
+ (u.s.dbl_frach || u.s.dbl_fracl));
}
int
isinf(d)
double d;
{
- struct ieee_double *p = (struct ieee_double *)&d;
+ union {
+ double v;
+ struct ieee_double s;
+ } u;
- return (p->dbl_exp == DBL_EXP_INFNAN &&
- !p->dbl_frach && !p->dbl_fracl);
+ u.v = d;
+ return (u.s.dbl_exp == DBL_EXP_INFNAN &&
+ !u.s.dbl_frach && !u.s.dbl_fracl);
}
diff --git a/lib/libc/powerpc/gen/isinf.c b/lib/libc/powerpc/gen/isinf.c
index fb6d73b..0b9ef6c 100644
--- a/lib/libc/powerpc/gen/isinf.c
+++ b/lib/libc/powerpc/gen/isinf.c
@@ -43,17 +43,25 @@ __FBSDID("$FreeBSD$");
int
isnan(double d)
{
- struct ieee_double *p = (struct ieee_double *)&d;
+ union {
+ double v;
+ struct ieee_double s;
+ } u;
- return (p->dbl_exp == DBL_EXP_INFNAN &&
- (p->dbl_frach || p->dbl_fracl));
+ u.v = d;
+ return (u.s.dbl_exp == DBL_EXP_INFNAN &&
+ (u.s.dbl_frach || u.s.dbl_fracl));
}
int
isinf(double d)
{
- struct ieee_double *p = (struct ieee_double *)&d;
+ union {
+ double v;
+ struct ieee_double s;
+ } u;
- return (p->dbl_exp == DBL_EXP_INFNAN &&
- !p->dbl_frach && !p->dbl_fracl);
+ u.v = d;
+ return (u.s.dbl_exp == DBL_EXP_INFNAN &&
+ !u.s.dbl_frach && !u.s.dbl_fracl);
}
diff --git a/lib/libc/sparc64/gen/isinf.c b/lib/libc/sparc64/gen/isinf.c
index c92650e..0cbdfff 100644
--- a/lib/libc/sparc64/gen/isinf.c
+++ b/lib/libc/sparc64/gen/isinf.c
@@ -44,18 +44,26 @@ int
isnan(d)
double d;
{
- struct ieee_double *p = (struct ieee_double *)&d;
+ union {
+ double v;
+ struct ieee_double s;
+ } u;
- return (p->dbl_exp == DBL_EXP_INFNAN &&
- (p->dbl_frach || p->dbl_fracl));
+ u.v = d;
+ return (u.s.dbl_exp == DBL_EXP_INFNAN &&
+ (u.s.dbl_frach || u.s.dbl_fracl));
}
int
isinf(d)
double d;
{
- struct ieee_double *p = (struct ieee_double *)&d;
+ union {
+ double v;
+ struct ieee_double s;
+ } u;
- return (p->dbl_exp == DBL_EXP_INFNAN &&
- !p->dbl_frach && !p->dbl_fracl);
+ u.v = d;
+ return (u.s.dbl_exp == DBL_EXP_INFNAN &&
+ !u.s.dbl_frach && !u.s.dbl_fracl);
}
OpenPOWER on IntegriCloud