diff --git a/modules/calib3d/src/five-point.cpp b/modules/calib3d/src/five-point.cpp index b8d0b43edc..9fda9f73f1 100644 --- a/modules/calib3d/src/five-point.cpp +++ b/modules/calib3d/src/five-point.cpp @@ -36,6 +36,13 @@ namespace cv { +// for some compilers it takes very long time to compile +// automatically generated code in EMEstimatorCallback::runKernel(), +// so we temporarily disable optimizations here +#if defined __hexagon__ && defined __clang__ +#pragma clang optimize off +#endif + class EMEstimatorCallback CV_FINAL : public PointSetRegistrator::Callback { public: @@ -401,6 +408,11 @@ protected: } }; +// restore optimizations (if any) +#if defined __hexagon__ && defined __clang__ +#pragma clang optimize on +#endif + // Find essential matrix given undistorted points and two cameras. static Mat findEssentialMat_( InputArray _points1, InputArray _points2, InputArray cameraMatrix1, InputArray cameraMatrix2,