Added work-around for vectorization issue in Apple's GCC 4.x

This commit is contained in:
alexey.lysiuk 2014-08-03 12:21:00 +03:00
parent 0a5dd94072
commit 2efb62e8ef

View file

@ -69,7 +69,13 @@ static const int PO_LINE_EXPLICIT = 5;
angle_t FNodeBuilder::PointToAngle (fixed_t x, fixed_t y) angle_t FNodeBuilder::PointToAngle (fixed_t x, fixed_t y)
{ {
const double rad2bam = double(1<<30) / M_PI; const double rad2bam = double(1<<30) / M_PI;
#if defined __APPLE__ && !defined __llvm__
// Work-around for vectorization issue in Apple's GCC 4.x
// See https://gcc.gnu.org/wiki/Math_Optimization_Flags for details
long double ang = atan2l (double(y), double(x));
#else // !__APPLE__ || __llvm__
double ang = atan2 (double(y), double(x)); double ang = atan2 (double(y), double(x));
#endif // __APPLE__ && !__llvm__
return angle_t(ang * rad2bam) << 1; return angle_t(ang * rad2bam) << 1;
} }