2009-04-14  Ozkan Sezer  <sezeroz@gmail.com>

	* gdtoa/dmisc.c, gdtoa/dtoa.c, gdtoa/gdtoa.c, gdtoa/gdtoa.h,
	gdtoa/gdtoaimp.h, gdtoa/misc.c, gdtoa/smisc.c, gdtoa/strtodg.c,
	gdtoa/strtof.c, gdtoa/ulp.c: merged the aliasing violation changes from
	the latest netlib.org sources.


git-svn-id: svn+ssh://svn.code.sf.net/p/mingw-w64/code/trunk@769 4407c894-4637-0410-b4f5-ada5f102cad1
diff --git a/mingw-w64-crt/gdtoa/ulp.c b/mingw-w64-crt/gdtoa/ulp.c
index 373c9cd..bfa9bde 100644
--- a/mingw-w64-crt/gdtoa/ulp.c
+++ b/mingw-w64-crt/gdtoa/ulp.c
@@ -31,33 +31,31 @@
 
 #include "gdtoaimp.h"
 
-double ulp (double x)
+double ulp (dbl_union *x)
 {
 	Long L;
 	union _dbl_union a;
 
-	a.d = x;
-	L = (word0(a) & Exp_mask) - (P-1)*Exp_msk1;
-
+	L = (word0(x) & Exp_mask) - (P-1)*Exp_msk1;
 #ifndef Sudden_Underflow
 	if (L > 0) {
 #endif
-		word0(a) = L;
-		word1(a) = 0;
+		word0(&a) = L;
+		word1(&a) = 0;
 #ifndef Sudden_Underflow
 	}
 	else {
 		L = -L >> Exp_shift;
 		if (L < Exp_shift) {
-			word0(a) = 0x80000 >> L;
-			word1(a) = 0;
+			word0(&a) = 0x80000 >> L;
+			word1(&a) = 0;
 		}
 		else {
-			word0(a) = 0;
+			word0(&a) = 0;
 			L -= Exp_shift;
-			word1(a) = L >= 31 ? 1 : 1 << (31 - L);
+			word1(&a) = L >= 31 ? 1 : 1 << (31 - L);
 		}
 	}
 #endif
-	return dval(a);
+	return dval(&a);
 }