Probably Sergey can judge this best, I don't know how important these files are to performance. Maybe there's a specific function or line of code that is causing the issue that we can tweak as well.
On Tue, May 14, 2013 at 8:42 PM, Jürgen Herrmann <[email protected]> wrote: > Hi again, > > still trying to fix this nasty ICE on VS 2012 64bit and I think I found a way > to work around this issue without losing too much speed. > > Instead of turning optimizations off globally for these 2 files I found a way > to reduce optimization level slightly by doing this: > > ------------PATCH---------------- > Index: extern/libmv/libmv/tracking/esm_region_tracker.cc > =================================================================== > --- extern/libmv/libmv/tracking/esm_region_tracker.cc (revision 56800) > +++ extern/libmv/libmv/tracking/esm_region_tracker.cc (working copy) > @@ -61,6 +61,13 @@ > return true; > } > > +/* Ugly but necessary fix for compilation on VS2012 > +/* this file causes an Internal Compiler Error */ > +// TODO: check regularly if ICE is fixed by MS! > +#if (_MSC_VER >= 1700 && _WIN64) > +#pragma optimize("sp", on) > +#endif > + > // This is implemented from "Lukas and Kanade 20 years on: Part 1. Page 42, > // figure 14: the Levenberg-Marquardt-Inverse Compositional Algorithm". > bool EsmRegionTracker::Track(const FloatImage &image1, > Index: extern/libmv/libmv/tracking/lmicklt_region_tracker.cc > =================================================================== > --- extern/libmv/libmv/tracking/lmicklt_region_tracker.cc (revision > 56800) > +++ extern/libmv/libmv/tracking/lmicklt_region_tracker.cc (working copy) > @@ -52,6 +52,13 @@ > return true; > } > > +/* Ugly but necessary fix for compilation on VS2012 > +/* this file causes an Internal Compiler Error */ > +// TODO: check regularly if ICE is fixed by MS! > +#if (_MSC_VER >= 1700 && _WIN64) > +#pragma optimize("sp", on) > +#endif > + > // Estimate "reasonable" error by computing autocorrelation for a small > shift. > static double EstimateReasonableError(const FloatImage &image, > double x, double y, > ------------PATCH---------------- > > > -----Ursprüngliche Nachricht----- > Von: [email protected] > [mailto:[email protected]] Im Auftrag von Jürgen Herrmann > Gesendet: Dienstag, 14. Mai 2013 16:05 > An: [email protected] > Betreff: [Bf-committers] [Proposal] LIBMV: Workaround for Internal Compiler > error on VS2012 > > Hey ;) > > we have a problem, when compiling extern_libmv on VS2012 x64 the compiler > crashes. > It seems that this inlining problem is known to MS and they are working on a > fix. > This does not happen on x86 builds though. > I could not find a real fix for this yet. > So I'd like to commit the following workaround patch, any suggestions or > comments? > > > ---------------SNIP-------------- > Index: extern/libmv/libmv/tracking/esm_region_tracker.cc > =================================================================== > --- extern/libmv/libmv/tracking/esm_region_tracker.cc (revision 56794) > +++ extern/libmv/libmv/tracking/esm_region_tracker.cc (working copy) > @@ -32,7 +32,12 @@ > #include "libmv/tracking/track_region.h" > > namespace libmv { > - > +/* Ugly but necessary fix for compilation on VS2012 > +/* this file causes an Internal Compiler Error */ // TODO: check > +regularly if ICE is fixed by MS! > +#if (_MSC_VER >= 1700 && _WIN64) > +#pragma optimize("", off) > +#endif > // TODO(keir): Reduce duplication between here and the other region trackers. > static bool RegionIsInBounds(const FloatImage &image1, > double x, double y, > Index: extern/libmv/libmv/tracking/lmicklt_region_tracker.cc > =================================================================== > --- extern/libmv/libmv/tracking/lmicklt_region_tracker.cc (revision 56794) > +++ extern/libmv/libmv/tracking/lmicklt_region_tracker.cc (working copy) > @@ -27,7 +27,12 @@ > #include "libmv/numeric/numeric.h" > > namespace libmv { > - > +/* Ugly but necessary fix for compilation on VS2012 > +/* this file causes an Internal Compiler Error */ // TODO: check > +regularly if ICE is fixed by MS! > +#if (_MSC_VER >= 1700 && _WIN64) > +#pragma optimize("", off) > +#endif > // TODO(keir): Reduce duplication between here and the other region trackers. > static bool RegionIsInBounds(const FloatImage &image1, > double x, double y, > ---------------SNIP-------------- > > Best regards > > /Jürgen > _______________________________________________ > Bf-committers mailing list > [email protected] > http://lists.blender.org/mailman/listinfo/bf-committers > > _______________________________________________ > Bf-committers mailing list > [email protected] > http://lists.blender.org/mailman/listinfo/bf-committers _______________________________________________ Bf-committers mailing list [email protected] http://lists.blender.org/mailman/listinfo/bf-committers
