Subject: |
RE: [Bug 1845854] Re: EPICS Math tests failing on Windows with MSVC |
From: |
Freddie Akeroyd via Core-talk <[email protected]> |
To: |
[email protected] |
Date: |
Sun, 29 Sep 2019 19:53:25 -0000 |
Hi Michael,
I agree that testing "Inf + -Inf" directly is not useful, and might
even suggest removing that test as written rather than adding a compiler
pragma. If we only check this in debug builds, and users will be running
release builds, then I feel some of the usefulness of the test is lost.
So thinking again about epicsMathTest as you say, what we probably care
about is an expression like "a + -b" being evaluated in code/calc record
where a or b (or both) might be "Inf". If we rewrite epicsMathTest to
do these sorts of tests rather than a direct "Inf + -Inf" etc. then I
feel it is really testing what we care about, and currently all MSVC
compiler versions pass tests written in this style.
Regards,
Freddie
-----Original Message-----
From: [email protected] <[email protected]> On Behalf Of mdavidsaver
Sent: 29 September 2019 18:28
To: Akeroyd, Freddie (STFC,RAL,ISIS) <[email protected]>
Subject: [Bug 1845854] Re: EPICS Math tests failing on Windows with MSVC
Taking a step back. I ask myself, what is epicsMathTest actually
testing? To me it's about runtime behavior. "Inf + - Inf" is nonsense
which wouldn't be found in a real source file, so the fact that the MSVC
optimizer gets it wrong is interesting, but ultimately a distraction.
While not the best solution. Absent fine grained control of the
optimizer, maybe the path forward is to disable optimizations (only) in
epicsMathTest.c and/or epicsCalcTest.c ? Or at least around the NaN and
Inf tests?
> #if defined(_MSC_VER)
> # pragma optimize("g", off)
> #endif
--
You received this bug notification because you are subscribed to the bug report.
https://bugs.launchpad.net/bugs/1845854
Title:
EPICS Math tests failing on Windows with MSVC
Status in EPICS Base:
New
Bug description:
Some epics base tests involving NaN and Inf have been failing for most
windows MSVC builds, I have written a small test program
https://github.com/FreddieAkeroyd/Testing/blob/master/src/mytests/inftest.cpp
with output at https://ci.appveyor.com/project/FreddieAkeroyd/testing
which illustrates the underlying cause.
The general summary is that:
VS2010, VS2017 and VS2019 are OK in all configurations
For other Visual studio versions:
Debug builds are often OK
All release builds fail.
The failure mode is as follows (Inf shown here but applies to NaN
too):
Inf – Inf is evaluated correctly
Inf + -Inf is evaluated incorrectly
Inf + (-Inf) is evaluated correctly on VS 11.0 and 12.0, but not 14.0
The test code is using expressions like “a + -a” with a = Inf, if it
instead tests “a + -b” with a = b = Inf then release mode works in all
cases. So it looks like the repeated variable name is causing an
undesired optimisation. I feel expressions of the form “a + -b” rather
than “a + -a” are a better reflection of what is likely in practice,
if that change is acceptable then I would be happy to submit a PR to
use different variable names within binary operation tests
Regards,
Freddie
To manage notifications about this bug go to:
https://bugs.launchpad.net/epics-base/+bug/1845854/+subscriptions
--
You received this bug notification because you are a member of EPICS
Core Developers, which is subscribed to EPICS Base.
Matching subscriptions: epics-core-list-subscription
https://bugs.launchpad.net/bugs/1845854
Title:
EPICS Math tests failing on Windows with MSVC
Status in EPICS Base:
New
Bug description:
Some epics base tests involving NaN and Inf have been failing for most
windows MSVC builds, I have written a small test program
https://github.com/FreddieAkeroyd/Testing/blob/master/src/mytests/inftest.cpp
with output at https://ci.appveyor.com/project/FreddieAkeroyd/testing
which illustrates the underlying cause.
The general summary is that:
VS2010, VS2017 and VS2019 are OK in all configurations
For other Visual studio versions:
Debug builds are often OK
All release builds fail.
The failure mode is as follows (Inf shown here but applies to NaN
too):
Inf – Inf is evaluated correctly
Inf + -Inf is evaluated incorrectly
Inf + (-Inf) is evaluated correctly on VS 11.0 and 12.0, but not 14.0
The test code is using expressions like “a + -a” with a = Inf, if it
instead tests “a + -b” with a = b = Inf then release mode works in all
cases. So it looks like the repeated variable name is causing an
undesired optimisation. I feel expressions of the form “a + -b” rather
than “a + -a” are a better reflection of what is likely in practice,
if that change is acceptable then I would be happy to submit a PR to
use different variable names within binary operation tests
Regards,
Freddie
To manage notifications about this bug go to:
https://bugs.launchpad.net/epics-base/+bug/1845854/+subscriptions
- References:
- [Bug 1845854] [NEW] EPICS Math tests failing on Windows with MSVC Freddie Akeroyd via Core-talk
- [Bug 1845854] Re: EPICS Math tests failing on Windows with MSVC mdavidsaver via Core-talk
- Navigate by Date:
- Prev:
[Bug 1845854] Re: EPICS Math tests failing on Windows with MSVC mdavidsaver via Core-talk
- Next:
[Bug 1845887] [NEW] Appveyor builds: MSVC does not build debug Freddie Akeroyd via Core-talk
- Index:
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
<2019>
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
[Bug 1845854] Re: EPICS Math tests failing on Windows with MSVC mdavidsaver via Core-talk
- Next:
[Bug 1845854] Re: EPICS Math tests failing on Windows with MSVC Freddie Akeroyd via Core-talk
- Index:
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
<2019>
2020
2021
2022
2023
2024
|