diff --git a/Eigen/src/Core/arch/SSE/PacketMath.h b/Eigen/src/Core/arch/SSE/PacketMath.h
index 8a49dca..be64acc 100644
--- a/Eigen/src/Core/arch/SSE/PacketMath.h
+++ b/Eigen/src/Core/arch/SSE/PacketMath.h
@@ -37,6 +37,10 @@
 template<> struct ei_unpacket_traits<__m128d> { typedef double type; enum {size=2}; };
 template<> struct ei_unpacket_traits<__m128i> { typedef int    type; enum {size=4}; };
 
+template<> EIGEN_STRONG_INLINE __m128  ei_pset1<float>(const float&  from) { return _mm_set1_ps(from); }
+template<> EIGEN_STRONG_INLINE __m128d ei_pset1<double>(const double& from) { return _mm_set1_pd(from); }
+template<> EIGEN_STRONG_INLINE __m128i ei_pset1<int>(const int&    from) { return _mm_set1_epi32(from); }
+
 template<> EIGEN_STRONG_INLINE __m128  ei_padd<__m128>(const __m128&  a, const __m128&  b) { return _mm_add_ps(a,b); }
 template<> EIGEN_STRONG_INLINE __m128d ei_padd<__m128d>(const __m128d& a, const __m128d& b) { return _mm_add_pd(a,b); }
 template<> EIGEN_STRONG_INLINE __m128i ei_padd<__m128i>(const __m128i& a, const __m128i& b) { return _mm_add_epi32(a,b); }
@@ -63,7 +67,7 @@
 template<> EIGEN_STRONG_INLINE __m128d ei_pdiv<__m128d>(const __m128d& a, const __m128d& b) { return _mm_div_pd(a,b); }
 template<> EIGEN_STRONG_INLINE __m128i ei_pdiv<__m128i>(const __m128i& /*a*/, const __m128i& /*b*/)
 { ei_assert(false && "packet integer division are not supported by SSE");
-  __m128i dummy;
+  __m128i dummy = ei_pset1<int>(0);
   return dummy;
 }
 
@@ -102,10 +106,6 @@
 template<> EIGEN_STRONG_INLINE __m128d ei_ploadu<double>(const double*  from) { return _mm_loadu_pd(from); }
 template<> EIGEN_STRONG_INLINE __m128i ei_ploadu<int>(const int* from) { return _mm_loadu_si128(reinterpret_cast<const __m128i*>(from)); }
 
-template<> EIGEN_STRONG_INLINE __m128  ei_pset1<float>(const float&  from) { return _mm_set1_ps(from); }
-template<> EIGEN_STRONG_INLINE __m128d ei_pset1<double>(const double& from) { return _mm_set1_pd(from); }
-template<> EIGEN_STRONG_INLINE __m128i ei_pset1<int>(const int&    from) { return _mm_set1_epi32(from); }
-
 template<> EIGEN_STRONG_INLINE void ei_pstore<float>(float*  to, const __m128&  from) { _mm_store_ps(to, from); }
 template<> EIGEN_STRONG_INLINE void ei_pstore<double>(double* to, const __m128d& from) { _mm_store_pd(to, from); }
 template<> EIGEN_STRONG_INLINE void ei_pstore<int>(int*    to, const __m128i& from) { _mm_store_si128(reinterpret_cast<__m128i*>(to), from); }
diff --git a/test/lu.cpp b/test/lu.cpp
index fdc10e2..6147419 100644
--- a/test/lu.cpp
+++ b/test/lu.cpp
@@ -28,9 +28,10 @@
 template<typename Derived>
 void doSomeRankPreservingOperations(Eigen::MatrixBase<Derived>& m)
 {
+  typedef typename Derived::RealScalar RealScalar;
   for(int a = 0; a < 3*(m.rows()+m.cols()); a++)
   {
-    double d = Eigen::ei_random<double>(-1,1);
+    RealScalar d = Eigen::ei_random<RealScalar>(-1,1);
     int i = Eigen::ei_random<int>(0,m.rows()-1); // i is a random row number
     int j;
     do {
diff --git a/test/meta.cpp b/test/meta.cpp
index 864d806..e77e46b 100644
--- a/test/meta.cpp
+++ b/test/meta.cpp
@@ -45,9 +45,7 @@
 
   VERIFY(( ei_is_same_type<float*,ei_unconst<const float*>::type >::ret));
   VERIFY(( ei_is_same_type<float&,ei_unconst<const float&>::type >::ret));
-  VERIFY(( ei_is_same_type<float&,ei_unconst<const FloatRef>::type >::ret));
   VERIFY(( ei_is_same_type<float&,ei_unconst<ConstFloatRef>::type >::ret));
-  VERIFY(( ei_is_same_type<float&,ei_unconst<const ConstFloatRef>::type >::ret));
   
   VERIFY(( ei_is_same_type<float&,ei_unconst<float&>::type >::ret));
   VERIFY(( ei_is_same_type<float,ei_unref<float&>::type >::ret));
diff --git a/test/nomalloc.cpp b/test/nomalloc.cpp
index 82119e9..5497ca3 100644
--- a/test/nomalloc.cpp
+++ b/test/nomalloc.cpp
@@ -24,7 +24,9 @@
 // Eigen. If not, see <http://www.gnu.org/licenses/>.
 
 // this hack is needed to make this file compiles with -pedantic (gcc)
+#ifdef __GNUC__
 #define throw(X)
+#endif
 // discard stack allocation as that too bypasses malloc
 #define EIGEN_STACK_ALLOCATION_LIMIT 0
 // any heap allocation will raise an assert
diff --git a/test/sum.cpp b/test/sum.cpp
index c136518..fe707e9 100644
--- a/test/sum.cpp
+++ b/test/sum.cpp
@@ -34,7 +34,7 @@
   MatrixType m1 = MatrixType::Random(rows, cols);
 
   VERIFY_IS_MUCH_SMALLER_THAN(MatrixType::Zero(rows, cols).sum(), Scalar(1));
-  VERIFY_IS_APPROX(MatrixType::Ones(rows, cols).sum(), Scalar(rows*cols));
+  VERIFY_IS_APPROX(MatrixType::Ones(rows, cols).sum(), Scalar(float(rows*cols))); // the float() here to shut up excessive MSVC warning about int->complex conversion being lossy
   Scalar x = Scalar(0);
   for(int i = 0; i < rows; i++) for(int j = 0; j < cols; j++) x += m1(i,j);
   VERIFY_IS_APPROX(m1.sum(), x);
