|
From: Luigi B. <lui...@gm...> - 2016-09-16 14:39:29
|
Thanks for the confirmation (and for hunting down the issue on the MS site). Given that it's this one place, I think I'll apply the patch anyway. I'd try to avoid the test suite failing out of the box for some people, given that not everybody can update their compilers at will... Luigi On Fri, Sep 16, 2016 at 2:27 PM Ivan A. Cherkasov < iva...@gm...> wrote: > Hello, Luigi. > > The testsuite succeeded with your patch on “Version 14.0.25422.01 Update > 3”: > > 1>------ Build started: Project: testsuite, Configuration: Release x64 > ------ > … > 1> Testing observable settings... > > > 1> Testing adaptive Runge Kutta... > > 1> Testing matrix exponential based on ode.. > … > 1> > 1> Test module "Master Test Suite" has passed with: > 1> 646 test cases out of 646 passed > 1> 1002058 assertions out of 1002058 passed > 1> > ========== Build: 1 succeeded, 0 failed, 1 up-to-date, 0 skipped ========== > > So, supposedly, it is indeed the “Issue 3 Potential miscompilation of > code-calling functions that resemble std::min/std::max on floating point > values.” (https://msdn.microsoft.com/en-us/library/mt752379.aspx, Bugs > that are fixed in version 14.0.25425.01, released on 08/02/2016). > > Personally, I wouldn’t recommend applying this patch to the master given > that std::max is used in many places in QuantLib, and it seems that this is > a VC compiler issue (I don’t recall having issues building 1.8 with GCC). > > I will try to get VC updated and check if the issue disappears. > > Thanks for looking into that. > On Sep 14, 2016 6:13 PM, "Luigi Ballabio" <lui...@gm...> > wrote: > >> Ivan, >> please try the attached patch and check if it fixes the test failure. >> >> Thanks, >> Luigi >> >> >> >> On Wed, Sep 14, 2016 at 10:49 AM Luigi Ballabio <lui...@gm...> >> wrote: >> >>> It seems so. Anyway, I seem to have worked around the problem, but I'm >>> not in the office this morning. Stay tuned... >>> >>> >>> On Wed, Sep 14, 2016 at 10:45 AM Peter Caspers <pca...@gm...> >>> wrote: >>> >>>> Hi Luigi, >>>> >>>> not your fault, our subconscious mind presses these ok-buttons for us… >>>> >>>> Does it mean the problem only occurs in a specific version of VC14? In >>>> particular not in the latest? >>>> >>>> Regards >>>> Peter >>>> >>>> On 12 Sep 2016, at 15:27, Luigi Ballabio <lui...@gm...> >>>> wrote: >>>> >>>> Peter, Ivan, >>>> I could reproduce the errors on a virtual machine running VC14. >>>> I'll try to find some time to work on this, too. >>>> >>>> Also, I'll share a life lesson I learned last week. If you ever >>>> reproduce an error like the above, and then the compiler tells you that an >>>> update is available, for the love of all that's holy DON'T update. If you >>>> do so, the error will disappear and your virtual machine will spend the >>>> best part of a Friday restoring the previous version of the compiler while >>>> you call yourself all sorts of names. Just saying. >>>> >>>> Later, >>>> Luigi >>>> >>>> >>>> On Fri, Sep 9, 2016 at 5:03 PM Ivan A. Cherkasov < >>>> iva...@gm...> wrote: >>>> >>>>> One more observation I wanted to share: >>>>> >>>>> with /fp:strict /fp:except compile flags ( >>>>> https://msdn.microsoft.com/en-us/library/e7s85ffb.aspx) I’m getting >>>>> build errors. >>>>> >>>>> command line: >>>>> >>>>> >>>>> ^C:\TMP\QL18_VC2015_MK3\QUANTLIB-1.8\QL\EXPERIMENTAL\FINITEDIFFERENCES\DYNPROGVPPINTRINSICVALUEENGINE.CPP >>>>> /c /IC:\BIN\BOOST_1_61_0 /I. /Zi /nologo /W3 /WX- /O2 /Ob2 /Ot /D >>>>> NDEBUG /D WIN32 /D _LIB /D _SCL_SECURE_NO_DEPRECATE /D >>>>> _CRT_SECURE_NO_DEPRECATE /D _MBCS /GF /Gm- /EHsc /MD /GS /Gy /fp:strict >>>>> /fp:except /Zc:wchar_t /Zc:forScope /Zc:inline /GR >>>>> /Fo".\BUILD\VC140\X64\RELEASE\\" >>>>> /Fd".\BUILD\VC140\X64\RELEASE\QUANTLIB.PDB" /Gd /TP >>>>> C:\TMP\QL18_VC2015_MK3\QUANTLIB-1.8\QL\EXPERIMENTAL\FINITEDIFFERENCES\DYNPROGVPPINTRINSICVALUEENGINE.CPP >>>>> >>>>> build errors: >>>>> >>>>> … >>>>> >>>>> 1> dynprogvppintrinsicvalueengine.cpp >>>>> 1>C:\Program Files (x86)\Microsoft Visual Studio >>>>> 14.0\VC\include\xcomplex(646): error C2131: expression did not evaluate to >>>>> a constant (compiling source file >>>>> ql\experimental\finitedifferences\hestonrndcalculator.cpp) >>>>> 1> C:\Program Files (x86)\Microsoft Visual Studio >>>>> 14.0\VC\include\xcomplex(646): note: failure was caused by an undefined >>>>> arithmetic operation (compiling source file >>>>> ql\experimental\finitedifferences\hestonrndcalculator.cpp) >>>>> 1> ql\experimental\finitedifferences\hestonrndcalculator.cpp(110): >>>>> note: see reference to function template instantiation >>>>> 'std::complex<double> std::log<double>(const std::complex<double> &)' being >>>>> compiled >>>>> >>>>> … >>>>> >>>>> 1>C:\Program Files (x86)\Microsoft Visual Studio >>>>> 14.0\VC\include\xcomplex(232): error C2131: expression did not evaluate to >>>>> a constant (compiling source file ql\math\modifiedbessel.cpp) >>>>> 1> C:\Program Files (x86)\Microsoft Visual Studio >>>>> 14.0\VC\include\xcomplex(232): note: failure was caused by an undefined >>>>> arithmetic operation (compiling source file ql\math\modifiedbessel.cpp) >>>>> 1> C:\Program Files (x86)\Microsoft Visual Studio >>>>> 14.0\VC\include\xcomplex(253): note: see reference to function template >>>>> instantiation '_Ty std::_Fabs<double>(const std::complex<double> &,int *)' >>>>> being compiled >>>>> 1> with >>>>> >>>>> ... >>>>> >>>>> and so on. >>>>> >>>> >>>> |