after all we're not aligning to 8byte boundary
keep most of the changes though as they make the code more extensible
diff --git a/Eigen/src/Core/MatrixStorage.h b/Eigen/src/Core/MatrixStorage.h
index 654fdf5..73b17e6 100644
--- a/Eigen/src/Core/MatrixStorage.h
+++ b/Eigen/src/Core/MatrixStorage.h
@@ -29,14 +29,12 @@
 struct ei_constructor_without_unaligned_array_assert {};
 
 /** \internal
-  * Static array. If the MatrixOptions require auto-alignment, and the array will be automatically aligned:
-  *  - to 16 bytes boundary, if the total size is a multiple of 16 bytes;
-  *  - or else to 8 bytes boundary, if the total size is a multiple of 8 bytes.
+  * Static array. If the MatrixOptions require auto-alignment, the array will be automatically aligned:
+  * to 16 bytes boundary if the total size is a multiple of 16 bytes.
   */
 template <typename T, int Size, int MatrixOptions,
           int Alignment = (MatrixOptions&DontAlign) ? 0
                         : (((Size*sizeof(T))%16)==0) ? 16
-                        : (((Size*sizeof(T))%8)==0) ? 8
                         : 0 >
 struct ei_matrix_array
 {
@@ -63,14 +61,6 @@
   ei_matrix_array(ei_constructor_without_unaligned_array_assert) {}
 };
 
-template <typename T, int Size, int MatrixOptions>
-struct ei_matrix_array<T, Size, MatrixOptions, 8>
-{
-  EIGEN_ALIGN8 T array[Size];
-  ei_matrix_array() { EIGEN_MAKE_UNALIGNED_ARRAY_ASSERT(0x7) }
-  ei_matrix_array(ei_constructor_without_unaligned_array_assert) {}
-};
-
 /** \internal
   *
   * \class ei_matrix_storage
diff --git a/Eigen/src/Core/util/Macros.h b/Eigen/src/Core/util/Macros.h
index fb149e5..706b301 100644
--- a/Eigen/src/Core/util/Macros.h
+++ b/Eigen/src/Core/util/Macros.h
@@ -223,7 +223,6 @@
 #endif
 
 #define EIGEN_ALIGN16 EIGEN_ALIGN_TO_BOUNDARY(16)
-#define EIGEN_ALIGN8 EIGEN_ALIGN_TO_BOUNDARY(8)
 
 #ifdef EIGEN_DONT_USE_RESTRICT_KEYWORD
   #define EIGEN_RESTRICT
diff --git a/test/unalignedassert.cpp b/test/unalignedassert.cpp
index 8acc901..233268d 100644
--- a/test/unalignedassert.cpp
+++ b/test/unalignedassert.cpp
@@ -93,7 +93,7 @@
 
 void unalignedassert()
 {
-  construct_at_boundary<Vector2f>(8);
+  construct_at_boundary<Vector2f>(4);
   construct_at_boundary<Vector3f>(4);
   construct_at_boundary<Vector4f>(16);
   construct_at_boundary<Matrix2f>(16);
@@ -101,12 +101,17 @@
   construct_at_boundary<Matrix4f>(16);
   
   construct_at_boundary<Vector2d>(16);
-  construct_at_boundary<Vector3d>(8);
+  construct_at_boundary<Vector3d>(4);
   construct_at_boundary<Vector4d>(16);
   construct_at_boundary<Matrix2d>(16);
-  construct_at_boundary<Matrix3d>(8);
+  construct_at_boundary<Matrix3d>(4);
   construct_at_boundary<Matrix4d>(16);
   
+  construct_at_boundary<Vector2cf>(16);
+  construct_at_boundary<Vector3cf>(4);
+  construct_at_boundary<Vector2cd>(16);
+  construct_at_boundary<Vector3cd>(16);
+  
   check_unalignedassert_good<TestNew1>();
   check_unalignedassert_good<TestNew2>();
   check_unalignedassert_good<TestNew3>();
@@ -117,19 +122,14 @@
   check_unalignedassert_good<Depends<true> >();
   
 #if EIGEN_ALIGN
-  VERIFY_RAISES_ASSERT(construct_at_boundary<Vector2f>(4));
-  VERIFY_RAISES_ASSERT(construct_at_boundary<Vector4f>(4));
   VERIFY_RAISES_ASSERT(construct_at_boundary<Vector4f>(8));
-  VERIFY_RAISES_ASSERT(construct_at_boundary<Matrix2f>(4));
-  VERIFY_RAISES_ASSERT(construct_at_boundary<Matrix2f>(8));
-  VERIFY_RAISES_ASSERT(construct_at_boundary<Matrix4f>(4));
   VERIFY_RAISES_ASSERT(construct_at_boundary<Matrix4f>(8));
   VERIFY_RAISES_ASSERT(construct_at_boundary<Vector2d>(8));
-  VERIFY_RAISES_ASSERT(construct_at_boundary<Vector3d>(4));
   VERIFY_RAISES_ASSERT(construct_at_boundary<Vector4d>(8));
   VERIFY_RAISES_ASSERT(construct_at_boundary<Matrix2d>(8));
-  VERIFY_RAISES_ASSERT(construct_at_boundary<Matrix3d>(4));
   VERIFY_RAISES_ASSERT(construct_at_boundary<Matrix4d>(8));
+  VERIFY_RAISES_ASSERT(construct_at_boundary<Vector2cf>(8));
+  VERIFY_RAISES_ASSERT(construct_at_boundary<Vector2cd>(8));
 #endif
 }