EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  <20192020  2021  2022  2023  2024  Index 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  <20192020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

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  <20192020  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  <20192020  2021  2022  2023  2024 
ANJ, 30 Sep 2019 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·