mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-04-21 09:09:36 +08:00
fix bug #186 (in 32 bits mode, gcc 4.3 messed up with pfirst for complex<float>)
This commit is contained in:
parent
f7cd63b964
commit
8f8c67b8bd
@ -111,9 +111,10 @@ template<> EIGEN_STRONG_INLINE Packet2cf pset1<Packet2cf>(const std::complex<flo
|
|||||||
|
|
||||||
template<> EIGEN_STRONG_INLINE std::complex<float> pfirst<Packet2cf>(const Packet2cf& a)
|
template<> EIGEN_STRONG_INLINE std::complex<float> pfirst<Packet2cf>(const Packet2cf& a)
|
||||||
{
|
{
|
||||||
#if (defined __GNUC__) && (__GNUC__==4) && (__GNUC_MINOR__==2) && (__GNUC_PATCHLEVEL__<=3)
|
#if (defined __GNUC__) && (((__GNUC__==4) && (__GNUC_MINOR__==2) && (__GNUC_PATCHLEVEL__<=3)) || ((__GNUC__==4) && (__GNUC_MINOR__==3)))
|
||||||
// workaround gcc 4.2.1 ICE (mac's gcc version) - I'm not sure how the 4.2.2 and 4.2.3 deal with it, but 4.2.4 works well.
|
// Workaround gcc 4.2.1 ICE (mac's gcc version) - I'm not sure how the 4.2.2 and 4.2.3 deal with it, but 4.2.4 works well.
|
||||||
// this is not performance wise ideal, but who cares...
|
// this is not performance wise ideal, but who cares...
|
||||||
|
// This workaround also fix invalid code generation with gcc 4.3
|
||||||
EIGEN_ALIGN16 std::complex<float> res[2];
|
EIGEN_ALIGN16 std::complex<float> res[2];
|
||||||
_mm_store_ps((float*)res, a.v);
|
_mm_store_ps((float*)res, a.v);
|
||||||
return res[0];
|
return res[0];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user