--- old/usr/src/lib/libm/Makefile.com	2014-05-11 12:15:21.971744291 +0200
+++ new/usr/src/lib/libm/Makefile.com	2014-05-11 12:15:21.988212440 +0200
@@ -512,7 +512,6 @@
 LINTFLAGS64	+= -errchk=longptr64
 
 CERRWARN	+= -_gcc=-Wno-switch
-CERRWARN	+= -_gcc=-Wno-uninitialized
 CERRWARN	+= -_gcc=-Wno-parentheses
 CERRWARN	+= -_gcc=-Wno-unused-variable
 
--- old/usr/src/lib/libm/amd64/src/libm_inlines.h	2014-05-11 12:15:23.652586191 +0200
+++ new/usr/src/lib/libm/amd64/src/libm_inlines.h	2014-05-11 12:15:23.684015552 +0200
@@ -137,7 +137,7 @@
 	    "andpd %1, %0\n\t"
 	    "andnpd %2, %1\n\t"
 	    "orpd %1, %0\n\t"
-	    : "+x" (d1), "+x" (tmpd)
+	    : "+x" (d1), "=x" (tmpd)
 	    : "x" (d2), "r" (0x7fffffffffffffff));
 
 	return (d1);
--- old/usr/src/lib/libm/common/C/_SVID_error.c	2014-05-11 12:15:24.902451070 +0200
+++ new/usr/src/lib/libm/common/C/_SVID_error.c	2014-05-11 12:15:24.930719852 +0200
@@ -122,7 +122,7 @@
 double
 _SVID_libm_err(double x, double y, int type) {
 	struct exception	exc;
-	double			t, w, ieee_retval;
+	double			t, w, ieee_retval = 0;
 	enum version		lib_version = _lib_version;
 	int			iy;
 
@@ -856,11 +856,8 @@
 		if (lib_version == strict_ansi) {
 			exc.retval = 1.0;
 		} else if (!matherr(&exc)) {
-			switch (lib_version) {
-			case c_issue_4:
-			case ansi_1:
+			if ((lib_version == c_issue_4) || (lib_version == ansi_1))
 				errno = EDOM;
-			}
 		}
 		break;
 	case 43:
--- old/usr/src/lib/libm/common/C/__tan.c	2014-05-11 12:15:26.672437148 +0200
+++ new/usr/src/lib/libm/common/C/__tan.c	2014-05-11 12:15:26.702453297 +0200
@@ -121,14 +121,14 @@
 
 double
 __k_tan(double x, double y, int k) {
-	double a, t, z, w, s, c, r, rh, xh, xl;
+	double a, t, z, w = 0.0L, s, c, r, rh, xh, xl;
 	int i, j, hx, ix;
 
 	t = one;
 	hx = ((int *) &x)[HIWORD];
 	ix = hx & 0x7fffffff;
-	if (ix < 0x3fc40000) {
-		if (ix < 0x3e400000) {
+	if (ix < 0x3fc40000) {		/* 0.15625 */
+		if (ix < 0x3e400000) {	/* 2^-27 */
 			if ((i = (int) x) == 0)		/* generate inexact */
 				w = x;
 			t = y;
--- old/usr/src/lib/libm/common/C/asin.c	2014-05-11 12:15:28.242871228 +0200
+++ new/usr/src/lib/libm/common/C/asin.c	2014-05-11 12:15:28.457074490 +0200
@@ -105,7 +105,7 @@
 double
 asin(double x) {
 	double t, w, p, q, c, r, s;
-	int hx, ix;
+	int hx, ix, i;
 
 	hx = ((int *) &x)[HIWORD];
 	ix = hx & 0x7fffffff;
@@ -125,12 +125,11 @@
 	}
 	else if (ix < 0x3fe00000) {	/* |x| < 0.5 */
 		if (ix < 0x3e400000) {	/* if |x| < 2**-27 */
-			if (huge + x > one)
+			if ((i = (int) x) == 0)
 				return x;	/* return x with inexact if
 						 * x != 0 */
 		}
-		else
-			t = x * x;
+		t = x * x;
 		p = t * (pS0 + t * (pS1 + t * (pS2 + t * (pS3 +
 			t * (pS4 + t * pS5)))));
 		q = one + t * (qS1 + t * (qS2 + t * (qS3 + t * qS4)));
--- old/usr/src/lib/libm/common/C/expm1.c	2014-05-11 12:15:29.822058243 +0200
+++ new/usr/src/lib/libm/common/C/expm1.c	2014-05-11 12:15:29.847407976 +0200
@@ -160,7 +160,7 @@
 
 double
 expm1(double x) {
-	double y, hi, lo, c, t, e, hxs, hfx, r1;
+	double y, hi, lo, c = 0.0L, t, e, hxs, hfx, r1;
 	int k, xsb;
 	unsigned hx;
 
@@ -172,9 +172,10 @@
 		y = -x;				/* y = |x| */
 	hx &= 0x7fffffff;			/* high word of |x| */
 
-	/* filter out huge and non-finite arugment */
-	if (hx >= 0x4043687A) {			/* if |x|>=56*ln2 */
-		if (hx >= 0x40862E42) {		/* if |x|>=709.78... */
+	/* filter out huge and non-finite argument */
+	/* for example exp(38)-1 is approximately 3.1855932e+16 */
+	if (hx >= 0x4043687A) {			/* if |x|>=56*ln2  (~38.8162...)*/
+		if (hx >= 0x40862E42) {		/* if |x|>=709.78... -> inf */
 			if (hx >= 0x7ff00000) {
 				if (((hx & 0xfffff) | ((int *) &x)[LOWORD])
 					!= 0)
@@ -194,31 +195,31 @@
 	/* argument reduction */
 	if (hx > 0x3fd62e42) {			/* if  |x| > 0.5 ln2 */
 		if (hx < 0x3FF0A2B2) {		/* and |x| < 1.5 ln2 */
-			if (xsb == 0) {
+			if (xsb == 0) {		/* positive number */
 				hi = x - ln2_hi;
 				lo = ln2_lo;
 				k = 1;
 			}
-			else {
+			else { /* negative number */
 				hi = x + ln2_hi;
 				lo = -ln2_lo;
 				k = -1;
 			}
 		}
-		else {
+		else {	/* |x| > 1.5 ln2 */
 			k = (int) (invln2 * x + (xsb == 0 ? 0.5 : -0.5));
 			t = k;
 			hi = x - t * ln2_hi;	/* t*ln2_hi is exact here */
 			lo = t * ln2_lo;
 		}
 		x = hi - lo;
-		c = (hi - x) - lo;
+		c = (hi - x) - lo; /* still at |x| > 0.5 ln2 */
 	}
 	else if (hx < 0x3c900000) {		/* when |x|<2**-54, return x */
 		t = huge + x;		/* return x w/inexact when x != 0 */
 		return x - (t - (huge + x));
 	}
-	else
+	else	/* |x| <= 0.5 ln2 */
 		k = 0;
 
 	/* x is now in primary range */
@@ -227,18 +228,19 @@
 	r1 = one + hxs * (Q1 + hxs * (Q2 + hxs * (Q3 + hxs * (Q4 + hxs * Q5))));
 	t = 3.0 - r1 * hfx;
 	e = hxs * ((r1 - t) / (6.0 - x * t));
-	if (k == 0)
-		return x - (x * e - hxs);	/* c is 0 */
-	else {
+	if (k == 0) /* |x| <= 0.5 ln2 */
+		return x - (x * e - hxs);
+	else {      /* |x| > 0.5 ln2 */
 		e = (x * (e - c) - c);
 		e -= hxs;
 		if (k == -1)
 			return 0.5 * (x - e) - 0.5;
-		if (k == 1)
+		if (k == 1) {
 			if (x < -0.25)
 				return -2.0 * (e - (x + 0.5));
 			else
 				return one + 2.0 * (x - e);
+		}
 		if (k <= -2 || k > 56) {	/* suffice to return exp(x)-1 */
 			y = one - (e - x);
 			((int *) &y)[HIWORD] += k << 20;
--- old/usr/src/lib/libm/common/C/jn.c	2014-05-11 12:15:30.985034664 +0200
+++ new/usr/src/lib/libm/common/C/jn.c	2014-05-11 12:15:31.201594124 +0200
@@ -71,7 +71,7 @@
 GENERIC
 jn(int n, GENERIC x) {
 	int i, sgn;
-	GENERIC a, b, temp;
+	GENERIC a, b, temp = 0;
 	GENERIC z, w, ox, on;
 
     /* J(-n,x) = (-1)^n * J(n, x), J(n, -x) = (-1)^n * J(n, x)
@@ -217,17 +217,19 @@
 yn(int n, GENERIC x) {
 	int i;
 	int sign;
-	GENERIC a, b, temp, ox, on;
+	GENERIC a, b, temp = 0, ox, on;
 
 	ox = x; on = (GENERIC)n;
 	if(isnan(x)) return x*x;	/* + -> * for Cheetah */
-	if (x <= zero)
-		if(x==zero)
+	if (x <= zero) {
+		if(x==zero) {
 			/* return -one/zero; */
 			return _SVID_libm_err((GENERIC)n,x,12);
-		else
+		} else {
 			/* return zero/zero; */
 			return _SVID_libm_err((GENERIC)n,x,13);
+		}
+	}
 	if (!((int) _lib_version == libm_ieee ||
 		(__xpg6 & _C99SUSv3_math_errexcept) != 0)) {
 	    if(x > X_TLOSS) return _SVID_libm_err(on,ox,39);
--- old/usr/src/lib/libm/common/C/log1p.c	2014-05-11 12:15:32.393257211 +0200
+++ new/usr/src/lib/libm/common/C/log1p.c	2014-05-11 12:15:32.607191584 +0200
@@ -123,7 +123,7 @@
 
 double
 log1p(double x) {
-	double	hfsq, f, c, s, z, R, u;
+	double	hfsq, f, c = 0.0, s, z, R, u;
 	int	k, hx, hu, ax;
 
 	hx = ((int *)&x)[HIWORD];		/* high word of x */
@@ -152,6 +152,7 @@
 			hu = 1;
 		}
 	}
+	/* We will initialize 'c' here. */
 	if (k != 0) {
 		if (hx < 0x43400000) {
 			u = 1.0 + x;
@@ -183,6 +184,7 @@
 		if (f == zero) {
 			if (k == 0)
 				return (zero);
+			/* We already initialized 'c' before, when (k != 0) */
 			c += k * ln2_lo;
 			return (k * ln2_hi + c);
 		}
--- old/usr/src/lib/libm/common/C/nextafter.c	2014-05-11 12:15:33.952068661 +0200
+++ new/usr/src/lib/libm/common/C/nextafter.c	2014-05-11 12:15:33.980764390 +0200
@@ -37,6 +37,7 @@
 	int		hx, hy, k;
 	double		ans;
 	unsigned	lx;
+	volatile double dummy;
 
 	hx = ((int *)&x)[HIWORD];
 	lx = ((int *)&x)[LOWORD];
@@ -79,7 +80,7 @@
 #if !defined(__lint)
 	} else if (k == 0) {
 		/* underflow */
-		volatile double dummy = DBL_MIN * copysign(DBL_MIN, x);
+		dummy = DBL_MIN * copysign(DBL_MIN, x);
 #endif
 	}
 	return (ans);
--- old/usr/src/lib/libm/common/C/pow.c	2014-05-11 12:15:35.284574119 +0200
+++ new/usr/src/lib/libm/common/C/pow.c	2014-05-11 12:15:35.313866929 +0200
@@ -248,8 +248,8 @@
 			if (ahx >= 0x5ff00000 && ahx < 0x7ff00000)
 				return (_SVID_libm_err(x, y, 21));
 							/* x*x overflow */
-			else if (ahx < 0x1e56a09e && (ahx | lx) != 0 ||
-				ahx == 0x1e56a09e && lx < 0x667f3bcd)
+			else if ((ahx < 0x1e56a09e && (ahx | lx) != 0) ||
+				(ahx == 0x1e56a09e && lx < 0x667f3bcd))
 				return (_SVID_libm_err(x, y, 22));
 							/* x*x underflow */
 			else
--- old/usr/src/lib/libm/common/LD/__rem_pio2l.c	2014-05-11 12:15:36.686114049 +0200
+++ new/usr/src/lib/libm/common/LD/__rem_pio2l.c	2014-05-11 12:15:36.712835041 +0200
@@ -34,7 +34,6 @@
  */
 
 #include "libm.h"
-
 #include "longdouble.h"
 
 extern const int _TBL_ipio2l_inf[];
--- old/usr/src/lib/libm/common/LD/__tanl.c	2014-05-11 12:15:37.606631918 +0200
+++ new/usr/src/lib/libm/common/LD/__tanl.c	2014-05-11 12:15:37.619874140 +0200
@@ -111,7 +111,7 @@
 /* INDENT ON */
 long double
 __k_tanl(long double x, long double y, int k) {
-	long double a, t, z, w, s, c;
+	long double a, t, z, w = 0.0, s, c;
 	int *pt = (int *) &t, *px = (int *) &x;
 	int i, j, hx, ix;
 
--- old/usr/src/lib/libm/common/LD/asinhl.c	2014-05-11 12:15:39.203779484 +0200
+++ new/usr/src/lib/libm/common/LD/asinhl.c	2014-05-11 12:15:39.231676004 +0200
@@ -42,13 +42,14 @@
 long double
 asinhl(long double x) {
 	long double t, w;
+	volatile long double dummy;
 
 	w = fabsl(x);
 	if (isnanl(x))
 		return (x + x);	/* x is NaN */
 	if (w < tiny) {
 #ifndef lint
-		volatile long double dummy = x + big;	/* inexact if x != 0 */
+		dummy = x + big;	/* inexact if x != 0 */
 #endif
 		return (x);	/* tiny x */
 	} else if (w < big) {
--- old/usr/src/lib/libm/common/LD/isnanl.c	2014-05-11 12:15:40.925328224 +0200
+++ new/usr/src/lib/libm/common/LD/isnanl.c	2014-05-11 12:15:40.768620095 +0200
@@ -45,8 +45,8 @@
 isnanl(long double x) {
 	int *px = (int *) &x, t = px[2] & 0x7fff;
 #if defined(HANDLE_UNSUPPORTED)
-	return (t == 0x7fff && ((px[1] & ~0x80000000) | px[0]) != 0 ||
-		t != 0 && (px[1] & 0x80000000) == 0);
+	return ((t == 0x7fff && ((px[1] & ~0x80000000) | px[0]) != 0) ||
+		(t != 0 && (px[1] & 0x80000000) == 0));
 #else
 	return (t == 0x7fff && ((px[1] & ~0x80000000) | px[0]) != 0);
 #endif
--- old/usr/src/lib/libm/common/LD/jnl.c	2014-05-11 12:15:41.747311278 +0200
+++ new/usr/src/lib/libm/common/LD/jnl.c	2014-05-11 12:15:41.775707735 +0200
@@ -72,7 +72,7 @@
 GENERIC
 jnl(n,x) int n; GENERIC x;{
 	int i, sgn;
-	GENERIC a, b, temp, z, w;
+	GENERIC a, b, temp = 0, z, w;
 
     /* J(-n,x) = (-1)^n * J(n, x), J(n, -x) = (-1)^n * J(n, x)
      * Thus, J(-n,x) = J(n,-x)
@@ -212,14 +212,16 @@
 int n; GENERIC x;{
 	int i;
 	int sign;
-	GENERIC a, b, temp;
+	GENERIC a, b, temp = 0;
 
-	if(x!=x) return x+x;
-	if (x <= zero) 
+	if(x!=x)
+		return x+x;
+	if (x <= zero) {
 		if(x==zero) 
 			return -one/zero;
 		else 
 			return zero/zero;
+	}
 	sign = 1;
 	if(n<0){
 		n = -n;
--- old/usr/src/lib/libm/common/LD/log1pl.c	2014-05-11 12:15:42.941641336 +0200
+++ new/usr/src/lib/libm/common/LD/log1pl.c	2014-05-11 12:15:42.970439312 +0200
@@ -54,11 +54,12 @@
 		return (logl(x));
 	rd = __swapRD(fp_nearest);
 	y = 1.L + x;
-	if (y != 1.L)
+	if (y != 1.L) {
 		if (y == x)
 			x = logl(x);
 		else
 			x *= logl(y) / (y - 1.L);
+	}
 	if (rd != fp_nearest)
 		(void) __swapRD(rd);
 	return (x);
--- old/usr/src/lib/libm/common/LD/scalbl.c	2014-05-11 12:15:44.339308745 +0200
+++ new/usr/src/lib/libm/common/LD/scalbl.c	2014-05-11 12:15:44.368962285 +0200
@@ -48,16 +48,16 @@
 
 	/* fn is +/-Inf */
 #if defined(_BIG_ENDIAN)
-	if ((py[0] & 0x7fff0000) == 0x7fff0000)
+	if ((py[0] & 0x7fff0000) == 0x7fff0000) {
 		if ((py[0] & 0x80000000) != 0)
 #else
-	if ((py[2] & 0x7fff) == 0x7fff)
+	if ((py[2] & 0x7fff) == 0x7fff) {
 		if ((py[2] & 0x8000) != 0)
 #endif
 			return x / (-fn);
 		else
 			return x * fn;
-
+	}
 	if (rintl(fn) != fn)
 		return (fn - fn) / (fn - fn);
 	if (fn > 65000.0L)
--- old/usr/src/lib/libm/common/LD/tanhl.c	2014-05-11 12:15:46.111890198 +0200
+++ new/usr/src/lib/libm/common/LD/tanhl.c	2014-05-11 12:15:46.140211863 +0200
@@ -72,6 +72,7 @@
 tanhl(long double x) {
 	long double t, y, z;
 	int signx;
+	volatile long double dummy;
 
 	if (isnanl(x))
 		return (x + x);		/* x is NaN */
@@ -86,7 +87,7 @@
 			z = -y / (y + two);
 		} else {
 #ifndef lint
-			volatile long double dummy = t + big;
+			dummy = t + big;
 							/* inexact if t != 0 */
 #endif
 			return (x);
--- old/usr/src/lib/libm/common/Q/__tanl.c	2014-05-11 12:15:48.064724249 +0200
+++ new/usr/src/lib/libm/common/Q/__tanl.c	2014-05-11 12:15:48.094125083 +0200
@@ -111,7 +111,7 @@
 
 long double
 __k_tanl(long double x, long double y, int k) {
-	long double a, t, z, w, s, c;
+	long double a, t, z, w = 0, s, c;
 	int *pt = (int *) &t, *px = (int *) &x;
 	int i, j, hx, ix;
 
--- old/usr/src/lib/libm/common/Q/asinhl.c	2014-05-11 12:15:49.457820023 +0200
+++ new/usr/src/lib/libm/common/Q/asinhl.c	2014-05-11 12:15:49.483221148 +0200
@@ -42,13 +42,14 @@
 long double
 asinhl(long double x) {
 	long double t, w;
+	volatile long double dummy;
 
 	w = fabsl(x);
 	if (isnanl(x))
 		return (x + x);	/* x is NaN */
 	if (w < tiny) {
 #ifndef lint
-		volatile long double dummy = x + big;	/* inexact if x != 0 */
+		dummy = x + big;	/* inexact if x != 0 */
 #endif
 		return (x);	/* tiny x */
 	} else if (w < big) {
--- old/usr/src/lib/libm/common/Q/asinl.c	2014-05-11 12:15:50.931525803 +0200
+++ new/usr/src/lib/libm/common/Q/asinl.c	2014-05-11 12:15:50.962112518 +0200
@@ -53,6 +53,7 @@
 long double
 asinl(long double x) {
 	long double t, w;
+	volatile long double dummy;
 
 	w = fabsl(x);
 	if (isnanl(x))
@@ -60,7 +61,7 @@
 	else if (w <= half) {
 		if (w < small) {
 #ifndef lint
-			volatile long double dummy = w + big;
+			dummy = w + big;
 							/* inexact if w != 0 */
 #endif
 			return (x);
--- old/usr/src/lib/libm/common/Q/atan2l.c	2014-05-11 12:15:52.328982624 +0200
+++ new/usr/src/lib/libm/common/Q/atan2l.c	2014-05-11 12:15:52.545757583 +0200
@@ -103,7 +103,7 @@
 		return (signy == 1 ? -PIo2 - tiny : PIo2 + tiny);
 
 	/* when x is INF */
-	if (!finitel(x))
+	if (!finitel(x)) {
 		if (!finitel(y)) {
 			switch (m) {
 			case 0:
@@ -127,7 +127,7 @@
 				return (-PI - tiny);	/* atan(-...,-INF) */
 			}
 		}
-
+	}
 	/* when y is INF */
 	if (!finitel(y))
 		return (signy == 1 ? -PIo2 - tiny : PIo2 + tiny);
--- old/usr/src/lib/libm/common/Q/jnl.c	2014-05-11 12:15:54.066408691 +0200
+++ new/usr/src/lib/libm/common/Q/jnl.c	2014-05-11 12:15:54.095300641 +0200
@@ -218,11 +218,12 @@
 	GENERIC a, b, temp;
 
 	if(x!=x) return x+x;
-	if (x <= zero)
+	if (x <= zero) {
 		if(x==zero)
 			return -one/zero;
 		else
 			return zero/zero;
+	}
 	sign = 1;
 	if(n<0){
 		n = -n;
--- old/usr/src/lib/libm/common/Q/tanhl.c	2014-05-11 12:15:55.540923764 +0200
+++ new/usr/src/lib/libm/common/Q/tanhl.c	2014-05-11 12:15:55.756107251 +0200
@@ -72,6 +72,7 @@
 tanhl(long double x) {
 	long double t, y, z;
 	int signx;
+	volatile long double dummy;
 
 	if (isnanl(x))
 		return (x + x);		/* x is NaN */
@@ -86,7 +87,7 @@
 			z = -y / (y + two);
 		} else {
 #ifndef lint
-			volatile long double dummy = t + big;
+			dummy = t + big;
 							/* inexact if t != 0 */
 #endif
 			return (x);
--- old/usr/src/lib/libm/common/R/__tanf.c	2014-05-11 12:15:56.553508233 +0200
+++ new/usr/src/lib/libm/common/R/__tanf.c	2014-05-11 12:15:56.767226244 +0200
@@ -71,7 +71,7 @@
 
 float
 __k_tanf(double x, int n) {
-	float ft;
+	float ft = 0.0;
 	double z, w;
 	int ix;
 
--- old/usr/src/lib/libm/common/R/cosf.c	2014-05-11 12:15:57.563530787 +0200
+++ new/usr/src/lib/libm/common/R/cosf.c	2014-05-11 12:15:57.777828560 +0200
@@ -76,6 +76,7 @@
 	double	y, z, w;
 	float	f;
 	int	n, ix, hx, hy;
+	volatile int i;
 
 	hx = *((int *)&x);
 	ix = hx & 0x7fffffff;
@@ -85,7 +86,7 @@
 	if (ix <= 0x4016cbe4) {		/* |x| < 3*pi/4 */
 		if (ix <= 0x3f490fdb) {		/* |x| < pi/4 */
 			if (ix <= 0x39800000) {	/* |x| <= 2**-12 */
-				volatile int	i = (int)y;
+				i = (int)y;
 #ifdef lint
 				i = i;
 #endif
--- old/usr/src/lib/libm/common/R/sincosf.c	2014-05-11 12:15:58.594168722 +0200
+++ new/usr/src/lib/libm/common/R/sincosf.c	2014-05-11 12:15:58.436347265 +0200
@@ -98,6 +98,7 @@
 	double	y, z, w;
 	float	f, g;
 	int	n, ix, hx, hy;
+	volatile int i;
 
 	hx = *((int *)&x);
 	ix = hx & 0x7fffffff;
@@ -107,7 +108,7 @@
 	if (ix <= 0x4016cbe4) {		/* |x| < 3*pi/4 */
 		if (ix <= 0x3f490fdb) {		/* |x| < pi/4 */
 			if (ix <= 0x39800000) {	/* |x| <= 2**-12 */
-				volatile int	i = (int)y;
+				i = (int)y;
 #ifdef lint
 				i = i;
 #endif
--- old/usr/src/lib/libm/common/R/sinf.c	2014-05-11 12:15:59.989677782 +0200
+++ new/usr/src/lib/libm/common/R/sinf.c	2014-05-11 12:16:00.206627304 +0200
@@ -76,6 +76,7 @@
 	double	y, z, w;
 	float	f;
 	int	n, ix, hx, hy;
+	volatile int i;
 
 	hx = *((int *)&x);
 	ix = hx & 0x7fffffff;
@@ -85,7 +86,7 @@
 	if (ix <= 0x4016cbe4) {		/* |x| < 3*pi/4 */
 		if (ix <= 0x3f490fdb) {		/* |x| < pi/4 */
 			if (ix <= 0x39800000) {	/* |x| <= 2**-12 */
-				volatile int	i = (int)y;
+				i = (int)y;
 #ifdef lint
 				i = i;
 #endif
--- old/usr/src/lib/libm/common/R/tanf.c	2014-05-11 12:16:01.764844976 +0200
+++ new/usr/src/lib/libm/common/R/tanf.c	2014-05-11 12:16:01.794550070 +0200
@@ -76,6 +76,7 @@
 	double	y, z, w;
 	float	f;
 	int	n, ix, hx, hy;
+	volatile int i;
 
 	hx = *((int *)&x);
 	ix = hx & 0x7fffffff;
@@ -86,7 +87,7 @@
 		if (ix <= 0x3f490fdb) {		/* |x| < pi/4 */
 			if (ix < 0x3c000000) {		/* |x| < 2**-7 */
 				if (ix <= 0x39800000) {	/* |x| < 2**-12 */
-					volatile int	i = (int)y;
+					i = (int)y;
 #ifdef lint
 					i = i;
 #endif
--- old/usr/src/lib/libm/common/complex/k_cexp.c	2014-05-11 12:16:03.519682965 +0200
+++ new/usr/src/lib/libm/common/complex/k_cexp.c	2014-05-11 12:16:03.548772296 +0200
@@ -117,7 +117,7 @@
 
 double
 __k_cexp(double x, int *n) {
-	double hi, lo, c, t;
+	double hi = 0.0L, lo = 0.0L, c, t;
 	int k, xsb;
 	unsigned hx, lx;
 
--- old/usr/src/lib/libm/common/complex/k_clog_rl.c	2014-05-11 12:16:05.274955474 +0200
+++ new/usr/src/lib/libm/common/complex/k_clog_rl.c	2014-05-11 12:16:05.304471626 +0200
@@ -494,7 +494,7 @@
 	if (n > 122 || y == 0.0L) {
 #endif
 
-		XFSCALE(x, 0x3fff - (ix >> 16));
+		XFSCALE(x, (0x3fff - (ix >> 16)));
 		i = ((ix & 0xffff) + 0x100) >> 9;  /* 7.5 bits of x */
 		zk = 1.0L + ((long double) i) * 0.0078125L;
 		z = x - zk;
@@ -517,8 +517,8 @@
 /*
  * compute z = x*x + y*y
  */
-		XFSCALE(x, 0x3fff - (ix >> 16));
-		XFSCALE(y, 0x3fff - n - (iy >> 16));
+		XFSCALE(x, (0x3fff - (ix >> 16)));
+		XFSCALE(y, (0x3fff - n - (iy >> 16)));
 		ix = (ix & 0xffff) | 0x3fff0000;
 		iy = (iy & 0xffff) | (0x3fff0000 - (n << 16));
 		nx -= 0x3fff;
--- old/usr/src/lib/libm/common/m9x/__fex_hdlr.c	2014-05-11 12:16:06.533326013 +0200
+++ new/usr/src/lib/libm/common/m9x/__fex_hdlr.c	2014-05-11 12:16:06.562969848 +0200
@@ -394,7 +394,7 @@
 {
 	struct fex_handler_data	*thr_handlers;
 	struct sigaction	act;
-	void			(*handler)(), (*simd_handler[4])();
+	void			(*handler)() = NULL, (*simd_handler[4])();
 	int			mode, simd_mode[4], i, len, accrued, *ap;
 	unsigned int		cwsw, oldcwsw, mxcsr, oldmxcsr;
 	enum fex_exception	e, simd_e[4];
--- old/usr/src/lib/libm/common/m9x/__fex_i386.c	2014-05-11 12:16:07.724928041 +0200
+++ new/usr/src/lib/libm/common/m9x/__fex_i386.c	2014-05-11 12:16:07.739492223 +0200
@@ -1428,6 +1428,9 @@
 		case fex_ldouble:
 			*(float *)ea = (float) r.val.q;
 			break;
+
+		default:
+			break;
 		}
 		if (ex != FPE_FLTRES && (op & 8) != 0)
 			pop(uap);
@@ -1461,6 +1464,9 @@
 		case fex_ldouble:
 			*(int *)ea = (int) r.val.q;
 			break;
+
+		default:
+			break;
 		}
 		if (ex != FPE_FLTRES && (op & 8) != 0)
 			pop(uap);
@@ -1494,6 +1500,9 @@
 		case fex_ldouble:
 			*(double *)ea = (double) r.val.q;
 			break;
+
+		default:
+			break;
 		}
 		if (ex != FPE_FLTRES && (op & 8) != 0)
 			pop(uap);
@@ -1527,6 +1536,9 @@
 		case fex_ldouble:
 			*(short *)ea = (short) r.val.q;
 			break;
+
+		default:
+			break;
 		}
 		if (ex != FPE_FLTRES && (op & 8) != 0)
 			pop(uap);
@@ -1565,6 +1577,9 @@
 		case fex_ldouble:
 			*(long long *)ea = (long long) r.val.q;
 			break;
+
+		default:
+			break;
 		}
 		if (ex != FPE_FLTRES)
 			pop(uap);
@@ -1588,6 +1603,9 @@
 	case fex_double:
 		r.val.q = (long double) r.val.d;
 		break;
+
+	default:
+		break;
 	}
 
 	/* for load instructions, push the result onto the stack */
--- old/usr/src/lib/libm/common/m9x/__fex_sparc.c	2014-05-11 12:16:08.823226356 +0200
+++ new/usr/src/lib/libm/common/m9x/__fex_sparc.c	2014-05-11 12:16:08.838897989 +0200
@@ -662,6 +662,9 @@
 			case fex_ldouble:
 				info->res.val.i = (int) info->res.val.q;
 				break;
+
+			default:
+				break;
 			}
 			*(int*)FPreg(rd) = info->res.val.i;
 			return;
@@ -685,6 +688,9 @@
 			case fex_ldouble:
 				info->res.val.l = (long long) info->res.val.q;
 				break;
+
+			default:
+				break;
 			}
 			*(long long*)FPREG(rd) = info->res.val.l;
 			break;
@@ -706,6 +712,9 @@
 			case fex_ldouble:
 				info->res.val.f = (float) info->res.val.q;
 				break;
+
+			default:
+				break;
 			}
 			*(float*)FPreg(rd) = info->res.val.f;
 			break;
@@ -727,6 +736,9 @@
 			case fex_ldouble:
 				info->res.val.d = (double) info->res.val.q;
 				break;
+
+			default:
+				break;
 			}
 			*(double*)FPREG(rd) = info->res.val.d;
 			break;
@@ -748,6 +760,9 @@
 			case fex_double:
 				info->res.val.q = (long double) info->res.val.d;
 				break;
+
+			default:
+				break;
 			}
 			*(long double*)FPREG(rd) = info->res.val.q;
 			break;
@@ -774,6 +789,9 @@
 			case fex_ldouble:
 				info->res.val.d = (double) info->res.val.q;
 				break;
+
+			default:
+				break;
 			}
 			*(double*)FPREG(rd) = info->res.val.d;
 			break;
@@ -795,6 +813,9 @@
 			case fex_double:
 				info->res.val.q = (long double) info->res.val.d;
 				break;
+
+			default:
+				break;
 			}
 			*(long double*)FPREG(rd) = info->res.val.q;
 			break;
@@ -820,6 +841,9 @@
 		case fex_ldouble:
 			info->res.val.f = (float) info->res.val.q;
 			break;
+
+		default:
+			break;
 		}
 		*(float*)FPreg(rd) = info->res.val.f;
 		break;
@@ -841,6 +865,9 @@
 		case fex_ldouble:
 			info->res.val.d = (double) info->res.val.q;
 			break;
+
+		default:
+			break;
 		}
 		*(double*)FPREG(rd) = info->res.val.d;
 		break;
@@ -862,6 +889,9 @@
 		case fex_double:
 			info->res.val.q = (long double) info->res.val.d;
 			break;
+
+		default:
+			break;
 		}
 		*(long double*)FPREG(rd) = info->res.val.q;
 		break;
--- old/usr/src/lib/libm/common/m9x/__fex_sse.c	2014-05-11 12:16:10.072642626 +0200
+++ new/usr/src/lib/libm/common/m9x/__fex_sse.c	2014-05-11 12:16:10.101817679 +0200
@@ -370,6 +370,8 @@
 	case cvttss2siq:
 	case cvttsd2siq:
 		return fex_inv_int;
+	default:
+		break;
 	}
 
 	/* check op1 for signaling nan */
@@ -411,6 +413,8 @@
 			return fex_inv_zdz;
 		if (t1 == fp_infinity && t2 == fp_infinity)
 			return fex_inv_idi;
+	default:
+		break;
 	}
 
 	return (enum fex_exception)-1;
@@ -638,6 +642,8 @@
 			info->res.type = fex_nodata;
 			sse_comisd(&info->op1.val.d, &info->op2.val.d);
 			break;
+		default:
+			break;
 		}
 	} else {
 		if (inst->op == cvtsi2ss) {
@@ -791,6 +797,8 @@
 			info->res.type = fex_nodata;
 			sse_comiss(&info->op1.val.f, &info->op2.val.f);
 			break;
+		default:
+			break;
 		}
 	}
 	__fenv_getmxcsr(&mxcsr);
@@ -1083,6 +1091,8 @@
 			dummy.op2 = (sseoperand_t *)&inst->op2->d[i];
 			e[i] = __fex_get_sse_op(uap, &dummy, &info[i]);
 		}
+	default:
+		break;
 	}
 }
 
@@ -1098,10 +1108,10 @@
 __fex_st_sse_result(ucontext_t *uap, sseinst_t *inst, enum fex_exception e,
     fex_info_t *info)
 {
-	int		i;
-	long long	l;
-	float		f, fscl;
-	double		d, dscl;
+	int		i = 0;
+	long long	l = 0L;;
+	float		f = 0.0, fscl;
+	double		d = 0.0L, dscl;
 
 	/* for compares that write eflags, just set the flags
 	   to indicate "unordered" */
@@ -1228,6 +1238,9 @@
 		case fex_ldouble:
 			i = info->res.val.q;
 			break;
+
+		default:
+			break;
 		}
 		inst->op1->i[0] = i;
 	} else if (inst->op == cmpsd || inst->op == cvttss2siq ||
@@ -1253,6 +1266,9 @@
 		case fex_ldouble:
 			l = info->res.val.q;
 			break;
+
+		default:
+			break;
 		}
 		inst->op1->l[0] = l;
 	} else if ((((int)inst->op & DOUBLE) && inst->op != cvtsd2ss) ||
@@ -1277,6 +1293,9 @@
 		case fex_ldouble:
 			d = info->res.val.q;
 			break;
+
+		default:
+			break;
 		}
 		inst->op1->d[0] = d;
 	} else {
@@ -1300,6 +1319,9 @@
 		case fex_ldouble:
 			f = info->res.val.q;
 			break;
+
+		default:
+			break;
 		}
 		inst->op1->f[0] = f;
 	}
@@ -1578,5 +1600,9 @@
 		}
 		/* zero the high 64 bits of the destination */
 		inst->op1->l[1] = 0ll;
+
+	default:
+		break;
 	}
 }
+
--- old/usr/src/lib/libm/common/m9x/fex_log.c	2014-05-11 12:16:12.095048405 +0200
+++ new/usr/src/lib/libm/common/m9x/fex_log.c	2014-05-11 12:16:12.125073895 +0200
@@ -122,7 +122,7 @@
 static int check_exc_list(char *addr, unsigned long code, char *stk,
     struct frame *fp)
 {
-	struct exc_list	*l, *ll;
+	struct exc_list	*l, *ll = NULL;
 	struct frame	*f;
 	int		i, n;
 
--- old/usr/src/lib/libm/common/m9x/fma.c	2014-05-11 12:16:13.318790225 +0200
+++ new/usr/src/lib/libm/common/m9x/fma.c	2014-05-11 12:16:13.344324200 +0200
@@ -76,8 +76,7 @@
 		double d;
 	} xx, yy, zz;
 	double xhi, yhi, xlo, ylo, t;
-	unsigned int xy0, xy1, xy2, xy3, z0, z1, z2, z3, rm, sticky;
-	unsigned int fsr;
+	unsigned int xy0, xy1, xy2, xy3, z0, z1, z2, z3, fsr, rm, sticky;
 	int hx, hy, hz, ex, ey, ez, exy, sxy, sz, e, ibit;
 	volatile double	dummy;
 
--- old/usr/src/lib/libm/common/m9x/nearbyint.c	2014-05-11 12:16:15.490016241 +0200
+++ new/usr/src/lib/libm/common/m9x/nearbyint.c	2014-05-11 12:16:15.696705185 +0200
@@ -100,9 +100,9 @@
 			return (x);
 		xx.i[LOWORD] = 0;
 		xx.i[HIWORD] &= ~(i - 1);
-		if (rm == FE_UPWARD || (rm == FE_TONEAREST &&
-			(frac > 0x80000000u || (frac == 0x80000000) &&
-			(xx.i[HIWORD] & i))))
+		if ((rm == FE_UPWARD) || ((rm == FE_TONEAREST) &&
+			((frac > 0x80000000u) || ((frac == 0x80000000) &&
+			(xx.i[HIWORD] & i)))))
 			xx.i[HIWORD] += i;
 	} else {
 		i = 1 << j;
@@ -110,9 +110,9 @@
 		if (!frac)
 			return (x);
 		xx.i[LOWORD] &= ~(i - 1);
-		if (rm == FE_UPWARD || (rm == FE_TONEAREST &&
-			(frac > 0x80000000u || (frac == 0x80000000) &&
-			(xx.i[LOWORD] & i)))) {
+		if ((rm == FE_UPWARD) || ((rm == FE_TONEAREST) &&
+			(frac > 0x80000000u || ((frac == 0x80000000) &&
+			(xx.i[LOWORD] & i))))) {
 			xx.i[LOWORD] += i;
 			if (xx.i[LOWORD] == 0)
 				xx.i[HIWORD]++;
--- old/usr/src/lib/libm/common/m9x/nearbyintf.c	2014-05-11 12:16:17.432670851 +0200
+++ new/usr/src/lib/libm/common/m9x/nearbyintf.c	2014-05-11 12:16:17.458157006 +0200
@@ -80,7 +80,7 @@
 
 	hx &= ~(i - 1);
 	if (rm == FE_UPWARD || (rm == FE_TONEAREST && (frac > (i >> 1) ||
-		(frac == (i >> 1)) && (hx & i))))
+		((frac == (i >> 1)) && (hx & i)))))
 		xx.i = sx | (hx + i);
 	else
 		xx.i = sx | hx;
--- old/usr/src/lib/libm/common/m9x/scalblnl.c	2014-05-11 12:16:19.015503271 +0200
+++ new/usr/src/lib/libm/common/m9x/scalblnl.c	2014-05-11 12:16:19.038769049 +0200
@@ -45,8 +45,8 @@
 #elif defined(__x86)
 #define	XSET_EXP(k, x)	((int *) &x)[2] = (((int *) &x)[2] & ~0x7fff) | k
 #if defined(HANDLE_UNSUPPORTED)
-#define	ISINFNANL(k, x)	(k == 0x7fff || k != 0 && \
-				(((int *) &x)[1] & 0x80000000) == 0)
+#define      ISINFNANL(k, x) (k == 0x7fff || k != 0 && \
+                         (((int *) &x)[1] & 0x80000000) == 0)
 #else
 #define	ISINFNANL(k, x)	(k == 0x7fff)
 #endif
--- old/usr/src/lib/libm/common/m9x/tgamma.c	2014-05-11 12:16:20.581239434 +0200
+++ new/usr/src/lib/libm/common/m9x/tgamma.c	2014-05-11 12:16:20.609586503 +0200
@@ -1406,7 +1406,7 @@
 /* gamma(x+i) for 0 <= x < 1  */
 static struct Double
 gam_n(int i, double x) {
-	struct Double rr, yy;
+	struct Double rr = {0.0L, 0.0L}, yy;
 	double r1, r2, t2, z, xh, xl, yh, yl, zh, z1, z2, zl, x5, wh, wl;
 
 	/* compute yy = gamma(x+1) */
@@ -1558,7 +1558,7 @@
 		__HI(w) += m << 20;
 		return (w);
 	}
-	if (hx > 0) {		/* x from 0 to 8 */
+	if (hx > 0) {		/* 0 < x < 8 */
 		i = (int) x;
 		ww = gam_n(i, x - (double) i);
 		return (ww.h + ww.l);
--- old/usr/src/lib/libm/common/m9x/tgammaf.c	2014-05-11 12:16:22.770900330 +0200
+++ new/usr/src/lib/libm/common/m9x/tgammaf.c	2014-05-11 12:16:22.802178005 +0200
@@ -400,7 +400,7 @@
  */
 static double
 gam_n(int i, double x) {
-	double rr, yy;
+	double rr = 0.0L, yy;
 	double z1, z2;
 
 	/* compute yy = gamma(x+1) */
@@ -472,7 +472,7 @@
 	if (hx >= 0x41000000)	/* x >= 8 */
 		return ((float) large_gam(x));
 
-	if (hx > 0) {		/* x from 0 to 8 */
+	if (hx > 0) {		/* 0 < x < 8 */
 		i = (int) xf;
 		return ((float) gam_n(i, x - (double) i));
 	}
--- old/usr/src/lib/libm/common/m9x/tgammal.c	2014-05-11 12:16:24.142821320 +0200
+++ new/usr/src/lib/libm/common/m9x/tgammal.c	2014-05-11 12:16:24.171274425 +0200
@@ -881,7 +881,7 @@
  */
 static struct LDouble
 gam_n(int i, long double x) {
-	struct LDouble rr, yy;
+	struct LDouble rr = {0.0L, 0.0L}, yy;
 	long double r1, r2, t2, z, xh, xl, yh, yl, zh, z1, z2, zl, x5, wh, wl;
 
 	/* compute yy = gamma(x+1) */
@@ -1032,7 +1032,7 @@
 		return (scalbnl(w, m));
 	}
 
-	if (hx > 0) {		/* x from 0 to 8 */
+	if (hx > 0) {		/* 0 < x < 8 */
 		i = (int) x;
 		ww = gam_n(i, x - (long double) i);
 		return (ww.h + ww.l);
--- old/usr/src/lib/libmvec/Makefile.com	2014-05-11 12:16:25.437278501 +0200
+++ new/usr/src/lib/libmvec/Makefile.com	2014-05-11 12:16:25.469876682 +0200
@@ -171,7 +171,6 @@
 LINTERROFF	+= -erroff=E_FUNC_SET_NOT_USED
 
 CERRWARN	+= -_gcc=-Wno-parentheses
-CERRWARN	+= -_gcc=-Wno-uninitialized
 CERRWARN	+= -_gcc=-Wno-unused-variable
 
 LINTFLAGS	+= $(LINTERROFF)
--- old/usr/src/lib/libmvec/common/__vatan.c	2014-05-11 12:16:27.214468972 +0200
+++ new/usr/src/lib/libmvec/common/__vatan.c	2014-05-11 12:16:27.243180689 +0200
@@ -47,13 +47,13 @@
 void
 __vatan( int n, double * restrict x, int stridex, double * restrict y, int stridey )
 {
-  double  f , z, ans, ansu , ansl , tmp , poly , conup , conlo , dummy;
+  double  f , z, ans = 0.0L, ansu , ansl , tmp , poly , conup , conlo , dummy;
   double  f1,   ans1, ansu1, ansl1, tmp1, poly1, conup1, conlo1;
   double  f2,   ans2, ansu2, ansl2, tmp2, poly2, conup2, conlo2;
   int index, sign, intf, intflo, intz, argcount;
-  int index1, sign1 ;
-  int index2, sign2 ;
-  double *yaddr,*yaddr1,*yaddr2;
+  int index1, sign1 = 0;
+  int index2, sign2 = 0;
+  double *yaddr,*yaddr1 = 0,*yaddr2 = 0;
   extern const double __vlibm_TBL_atan1[];
   extern double fabs( double );
 
--- old/usr/src/lib/libmvec/common/__vatan2f.c	2014-05-11 12:16:28.620138603 +0200
+++ new/usr/src/lib/libmvec/common/__vatan2f.c	2014-05-11 12:16:28.650104728 +0200
@@ -51,19 +51,19 @@
 __vatan2f( int n, float * restrict y, int stridey, float * restrict x,
 	int stridex, float * restrict z, int stridez )
 {
-	float		x0, x1, x2, y0, y1, y2, *pz0, *pz1, *pz2;
+	float		x0, x1, x2, y0, y1, y2, *pz0 = 0, *pz1, *pz2;
 	double		ah0, ah1, ah2;
 	double		t0, t1, t2;
 	double		sx0, sx1, sx2;
 	double		sign0, sign1, sign2;
-	int		i, k0, k1, k2, hx, sx, sy;
+	int		i, k0 = 0, k1, k2, hx, sx, sy;
 	int		hy0, hy1, hy2;
-	float		base0, base1, base2;
+	float		base0 = 0.0, base1, base2;
 	double		num0, num1, num2;
 	double		den0, den1, den2;
 	double		dx0, dx1, dx2;
 	double		dy0, dy1, dy2;
-	double		db0, db1, db2;		
+	double		db0, db1, db2;
 
 	do
 	{
--- old/usr/src/lib/libmvec/common/__vatanf.c	2014-05-11 12:16:30.133895046 +0200
+++ new/usr/src/lib/libmvec/common/__vatanf.c	2014-05-11 12:16:30.159503891 +0200
@@ -38,7 +38,7 @@
 {
   extern const double __vlibm_TBL_atan1[];
   double  conup0, conup1, conup2;
-  float dummy, ansf;
+  float dummy, ansf = 0.0;
   float f0, f1, f2;
   float ans0, ans1, ans2;
   float poly0, poly1, poly2;
--- old/usr/src/lib/libmvec/common/__vcos.c	2014-05-11 12:16:31.898023195 +0200
+++ new/usr/src/lib/libmvec/common/__vcos.c	2014-05-11 12:16:32.114099177 +0200
@@ -28,6 +28,7 @@
  */
 
 #include <sys/isa_defs.h>
+#include <sys/ccompile.h>
 
 #ifdef _LITTLE_ENDIAN
 #define HI(x)	*(1+(int*)x)
@@ -98,10 +99,9 @@
 {
 	double		x0_or_one[4], x1_or_one[4], x2_or_one[4];
 	double		y0_or_zero[4], y1_or_zero[4], y2_or_zero[4];
-	double		x0, x1, x2, *py0, *py1, *py2, *xsave, *ysave;
-	unsigned	hx0, hx1, hx2, xsb0, xsb1, xsb2;
-	int			i, biguns, nsave, sxsave, sysave;
-
+	double		x0, x1, x2, *py0 = 0, *py1 = 0, *py2, *xsave, *ysave;
+	unsigned	hx0, hx1, hx2, xsb0, xsb1 = 0, xsb2;
+	int		i, biguns, nsave, sxsave, sysave;
 	nsave = n;
 	xsave = x;
 	sxsave = stridex;
@@ -122,7 +122,6 @@
 		}
 		if ( hx0 < 0x3e400000 ) {
 			/* Too small.  cos x ~ 1. */
-			volatile int v = *x;
 			*y = 1.0;
 			x += stridex;
 			y += stridey;
@@ -149,7 +148,6 @@
 		}
 		if ( hx1 < 0x3e400000 )
 		{
-			volatile int v = *x;
 			*y = 1.0;
 			x += stridex;
 			y += stridey;
@@ -176,7 +174,6 @@
 		}
 		if ( hx2 < 0x3e400000 )
 		{
-			volatile int v = *x;
 			*y = 1.0;
 			x += stridex;
 			y += stridey;
--- old/usr/src/lib/libmvec/common/__vcosf.c	2014-05-11 12:16:33.817505491 +0200
+++ new/usr/src/lib/libmvec/common/__vcosf.c	2014-05-11 12:16:33.660796252 +0200
@@ -148,7 +148,7 @@
 	double		y0, y1, y2, y3;
 	double		z0, z1, z2, z3;
 	float		f0, f1, f2, f3, t;
-	int		n0, n1, n2, n3, hx, ix, medium;
+	int		n0 = 0, n1 = 0, n2 = 0, n3, hx, ix, medium;
 
 	y -= stridey;
 
--- old/usr/src/lib/libmvec/common/__vpow.c	2014-05-11 12:16:35.387615447 +0200
+++ new/usr/src/lib/libmvec/common/__vpow.c	2014-05-11 12:16:35.416862850 +0200
@@ -546,9 +546,9 @@
 yisint##I = 0;	/* Y - non-integer */								\
 exp = hy >> 20;	/* Y exponent */								\
 ull_y0 &= LMMANT;										\
-ull_x##I = ull_y0 | LDONE;									\
+ull_x##I = (ull_y0 | LDONE);									\
 x##I = *(double*)&ull_x##I;									\
-ull_ax##I = (ull_x##I + LMROUND) & LMHI20;							\
+ull_ax##I = ((ull_x##I + LMROUND) & LMHI20);							\
 ax##I = *(double*)&ull_ax##I;									\
 if ( hx >= 0x7ff00000 || exp >= 0x43e )		/* X=Inf,Nan or |Y|>2^63,Inf,Nan */		\
 {												\
@@ -619,7 +619,7 @@
 		RET_SC(I)									\
 	}											\
 }												\
-if ( sx || (hx | lx) == 0 )	/* X <= 0      */						\
+if ( (sx || (hx | lx)) == 0 )	/* X <= 0      */						\
 {												\
 	if ( exp >= 0x434 )	/* |Y| >= 2^53 */						\
 		yisint##I = 2;	/* Y - even    */						\
@@ -662,11 +662,11 @@
 {												\
 	ax##I = (double) ull_y0;								\
 	ull_ax##I = *(unsigned long long*)&ax##I;						\
-	ull_x##I = ull_ax##I & LMMANT | LDONE;							\
+	ull_x##I = ((ull_ax##I & LMMANT) | LDONE);							\
 	x##I = *(double*)&ull_x##I;								\
 	exp##I = ((unsigned int*) & ull_ax##I)[0];						\
 	exp##I = (exp##I >> 20) - (2046 + 1023 + 51);						\
-	ull_ax##I = ull_x##I + LMROUND & LMHI20;						\
+	ull_ax##I = (ull_x##I + (LMROUND & LMHI20));						\
 	ax##I = *(double*)&ull_ax##I;								\
 	ux##I = x##I + ax##I;									\
 }												\
@@ -678,19 +678,19 @@
 __vpow( int n, double * restrict px, int stridex, double * restrict py,
 	int stridey, double * restrict pz, int stridez )
 {
-	double			*py0, *py1, *py2;
-	double			*pz0, *pz1, *pz2;
-	double			y0, yd0, u0, s0, s_l0, m_h0;
-	double			y1, yd1, u1, s1, s_l1, m_h1;
+	double			*py0 = 0, *py1 = 0, *py2;
+	double			*pz0 = 0, *pz1 = 0, *pz2;
+	double			y0, yd0 = 0.0L, u0, s0, s_l0, m_h0;
+	double			y1, yd1 = 0.0L, u1, s1, s_l1, m_h1;
 	double			y2, yd2, u2, s2, s_l2, m_h2;
-	double			ax0, x0, s_h0, ux0;
-	double			ax1, x1, s_h1, ux1;
+	double			ax0 = 0.0L, x0 = 0.0L, s_h0, ux0;
+	double			ax1 = 0.0L, x1 = 0.0L, s_h1, ux1;
 	double			ax2, x2, s_h2, ux2;
 	int			eflag0, gflag0, ind0, i0;
 	int			eflag1, gflag1, ind1, i1;
 	int			eflag2, gflag2, ind2, i2;
-	int			hx0, yisint0, exp0;
-	int			hx1, yisint1, exp1;
+	int			hx0 = 0, yisint0 = 0, exp0 = 0;
+	int			hx1 = 0, yisint1 = 0, exp1 = 0;
 	int			hx2, yisint2, exp2;
 	int			exp, i = 0;
 	unsigned		hx, lx, sx, hy, ly, sy;
@@ -1129,8 +1129,8 @@
 __vpowx( int n, double * restrict px, double * restrict py,
 	int stridey, double * restrict pz, int stridez )
 {
-	double			*py0, *py1, *py2;
-	double			*pz0, *pz1, *pz2;
+	double			*py0, *py1 = 0, *py2;
+	double			*pz0, *pz1 = 0, *pz2;
 	double			ux0, y0, yd0, u0, s0;
 	double			y1, yd1, u1, s1;
 	double			y2, yd2, u2, s2;
@@ -1155,10 +1155,10 @@
 	/* perform s_h + yr = 256*log2(x) */
 	ull_y0 = *(unsigned long long*)px;
 	hx = HI(px);
-	ull_x0 = ull_y0 & LMMANT | LDONE;
+	ull_x0 = (ull_y0 & LMMANT) | LDONE;
 	x0 = *(double*)&ull_x0;
 	exp0 = (hx >> 20) - 2046;
-	ull_ax0 = ull_x0 + LMROUND & LMHI20;
+	ull_ax0 = ull_x0 + (LMROUND & LMHI20);
 	ax0 = *(double*)&ull_ax0;
 	hx0 = HI(&ax0);
 	ux0 = x0 + ax0;
--- old/usr/src/lib/libmvec/common/__vrhypot.c	2014-05-11 12:16:37.201565462 +0200
+++ new/usr/src/lib/libmvec/common/__vrhypot.c	2014-05-11 12:16:37.216262999 +0200
@@ -217,7 +217,7 @@
 	double		x0, y0, res0, dd0;
 	double		res0_hi,res0_lo, dres0;
 	double		x_hi1, x_lo1, y_hi1, y_lo1, scl1 = 0;
-	double		x1, y1, res1, dd1;
+	double		x1 = 0.0L, y1 = 0.0L, res1, dd1;
 	double		res1_hi,res1_lo, dres1;
 	double		x_hi2, x_lo2, y_hi2, y_lo2, scl2 = 0;
 	double		x2, y2, res2, dd2;
@@ -238,7 +238,7 @@
 	double		D2ON1022 = ((double*)LCONST)[3];
 	double		D2ONM52 = ((double*)LCONST)[4];
 
-	double		*pz0, *pz1, *pz2;
+	double		*pz0, *pz1 = 0, *pz2;
 
 	do
 	{
--- old/usr/src/lib/libmvec/common/__vsin.c	2014-05-11 12:16:38.882538787 +0200
+++ new/usr/src/lib/libmvec/common/__vsin.c	2014-05-11 12:16:38.911344045 +0200
@@ -28,6 +28,7 @@
  */
 
 #include <sys/isa_defs.h>
+#include <sys/ccompile.h>
 
 #ifdef _LITTLE_ENDIAN
 #define HI(x)	*(1+(int*)x)
@@ -78,10 +79,9 @@
 {
 	double		x0_or_one[4], x1_or_one[4], x2_or_one[4];
 	double		y0_or_zero[4], y1_or_zero[4], y2_or_zero[4];
-	double		x0, x1, x2, *py0, *py1, *py2, *xsave, *ysave;
-	unsigned	hx0, hx1, hx2, xsb0, xsb1, xsb2;
-	int			i, biguns, nsave, sxsave, sysave;
-
+	double		x0, x1, x2, *py0 = 0, *py1 = 0, *py2, *xsave, *ysave;
+	unsigned	hx0, hx1, hx2, xsb0, xsb1 = 0, xsb2;
+	int		i, biguns, nsave, sxsave, sysave;
 	nsave = n;
 	xsave = x;
 	sxsave = stridex;
@@ -101,7 +101,6 @@
 		}
 		if ( hx0 < 0x3e400000 )
 		{
-			volatile int v = *x;
 			*y = *x;
 			x += stridex;
 			y += stridey;
@@ -128,7 +127,6 @@
 		}
 		if ( hx1 < 0x3e400000 )
 		{
-			volatile int v = *x;
 			*y = *x;
 			x += stridex;
 			y += stridey;
@@ -155,7 +153,6 @@
 		}
 		if ( hx2 < 0x3e400000 )
 		{
-			volatile int v = *x;
 			*y = *x;
 			x += stridex;
 			y += stridey;
@@ -510,7 +507,7 @@
 	{
 		double		fn0, fn1, fn2, a0, a1, a2, w0, w1, w2, y0, y1, y2;
 		unsigned	hx;
-		int			n0, n1, n2;
+		int		n0, n1, n2;
 
 loop0:
 		hx = HI(x);
@@ -518,7 +515,6 @@
 		hx &= ~0x80000000;
 		if ( hx < 0x3e400000 )
 		{
-			volatile int v = *x;
 			*y = *x;
 			x += stridex;
 			y += stridey;
@@ -557,7 +553,6 @@
 		hx &= ~0x80000000;
 		if ( hx < 0x3e400000 )
 		{
-			volatile int v = *x;
 			*y = *x;
 			x += stridex;
 			y += stridey;
@@ -596,7 +591,6 @@
 		hx &= ~0x80000000;
 		if ( hx < 0x3e400000 )
 		{
-			volatile int v = *x;
 			*y = *x;
 			x += stridex;
 			y += stridey;
--- old/usr/src/lib/libmvec/common/__vsincos.c	2014-05-11 12:16:40.429354705 +0200
+++ new/usr/src/lib/libmvec/common/__vsincos.c	2014-05-11 12:16:40.444036236 +0200
@@ -28,6 +28,7 @@
  */
 
 #include <sys/isa_defs.h>
+#include <sys/ccompile.h>
 
 #ifdef _LITTLE_ENDIAN
 #define HI(x)	*(1+(int*)x)
@@ -93,12 +94,11 @@
 	double		x0_or_one[4], x1_or_one[4], x2_or_one[4];
 	double		y0_or_zero[4], y1_or_zero[4], y2_or_zero[4];
 	double		x0, x1, x2,
-				*py0, *py1, *py2,
-				*pc0, *pc1, *pc2,
-				*xsave, *ysave, *csave;
+			*py0, *py1, *py2,
+			*pc0, *pc1, *pc2,
+			*xsave, *ysave, *csave;
 	unsigned	hx0, hx1, hx2, xsb0, xsb1, xsb2;
-	int			i, biguns, nsave, sxsave, sysave, scsave;
-
+	int		i, biguns, nsave, sxsave, sysave, scsave;
 	nsave = n;
 	xsave = x;
 	sxsave = stridex;
@@ -128,7 +128,6 @@
 		}
 		if ( hx0 < 0x3e400000 ) {
 			/* Too small.  cos x ~ 1, sin x ~ x. */
-			volatile int v = *x;
 			*c = 1.0;
 			*y = *x;
 			x += stridex;
@@ -165,7 +164,6 @@
 		}
 		if ( hx1 < 0x3e400000 )
 		{
-			volatile int v = *x;
 			*c = 1.0;
 			*y = *x;
 			x += stridex;
@@ -202,7 +200,6 @@
 		}
 		if ( hx2 < 0x3e400000 )
 		{
-			volatile int v = *x;
 			*c = 1.0;
 			*y = *x;
 			x += stridex;
--- old/usr/src/lib/libmvec/common/__vsincosf.c	2014-05-11 12:16:42.363367654 +0200
+++ new/usr/src/lib/libmvec/common/__vsincosf.c	2014-05-11 12:16:42.393416894 +0200
@@ -168,7 +168,7 @@
 	double		z0, z1, z2, z3;
 	float		f0, f1, f2, f3, t;
 	float		g0, g1, g2, g3;
-	int		n0, n1, n2, n3, hx, ix, medium;
+	int		n0 = 0, n1 = 0, n2 = 0, n3, hx, ix, medium;
 
 	s -= strides;
 	c -= stridec;
--- old/usr/src/lib/libmvec/common/__vsinf.c	2014-05-11 12:16:43.757676677 +0200
+++ new/usr/src/lib/libmvec/common/__vsinf.c	2014-05-11 12:16:43.780380861 +0200
@@ -152,7 +152,7 @@
 	double		y0, y1, y2, y3;
 	double		z0, z1, z2, z3;
 	float		f0, f1, f2, f3, t;
-	int		n0, n1, n2, n3, hx, ix, medium;
+	int		n0 = 0, n1 = 0, n2 = 0, n3, hx, ix, medium;
 
 	y -= stridey;
 
