aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/arch/SSE/Complex.h
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2010-07-20 22:43:55 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2010-07-20 22:43:55 +0200
commit35f0bc70d80f0a9f380bd60fa39e15880e24335d (patch)
tree2db28c119fec3f0d0ac70fe2d0936acf1d5b94cb /Eigen/src/Core/arch/SSE/Complex.h
parentb5f2b7d087d55d79d0ce90821b74e9c8291aa436 (diff)
fix a strict aliasing issue with gcc 4.3
Diffstat (limited to 'Eigen/src/Core/arch/SSE/Complex.h')
-rw-r--r--Eigen/src/Core/arch/SSE/Complex.h9
1 files changed, 3 insertions, 6 deletions
diff --git a/Eigen/src/Core/arch/SSE/Complex.h b/Eigen/src/Core/arch/SSE/Complex.h
index 8c0fd9a7f..036b72d3e 100644
--- a/Eigen/src/Core/arch/SSE/Complex.h
+++ b/Eigen/src/Core/arch/SSE/Complex.h
@@ -309,12 +309,9 @@ template<> EIGEN_STRONG_INLINE void ei_prefetch<std::complex<double> >(const std
template<> EIGEN_STRONG_INLINE std::complex<double> ei_pfirst<Packet1cd>(const Packet1cd& a)
{
-// EIGEN_ALIGN16 double res[2];
-// _mm_store_pd(res, a.v);
-// return *(std::complex<double>*)res;
- EIGEN_ALIGN16 std::complex<double> res;
- ei_pstore(&res, a);
- return res;
+ EIGEN_ALIGN16 double res[2];
+ _mm_store_pd(res, a.v);
+ return *(std::complex<double>*)res;
}
template<> EIGEN_STRONG_INLINE Packet1cd ei_preverse(const Packet1cd& a) { return a; }