try harder not to mix CPU-specific code with generic code

Desktop / LibreOffice - Luboš Luňák [collabora.com] - 27 October 2021 06:39 UTC

Jenkins Windows builds occassionally fails with illegal instruction (https://ci.libreoffice.org/job/gerrit_windows/110191/console). This seems to be because those AVX etc. files use std::abs(double), which is really just a fancy inline function calling the real fabs() or whatever function. And in debug builds inlines do not get inlined, they get emitted as copies. And since arraysumAVX.cxx is listed as the first object for Library_sc, apparently the linker likes to pick up the AVX-compiled inline function as the std::abs()
version to use for Library_sc.

Try to avoid this in two ways:- move the CPU-specific object files later in the list of library files- use plain C headers in those sources, no fancy

Change-Id: Ifd14076f79e9fbd7cc4c4a63a9764dff6715e63a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124249

12c6b1ef6a82 try harder not to mix CPU-specific code with generic code
external/skia/Library_skia.mk | 8 ++++----
sc/Library_sc.mk | 24 ++++++++++++------------
sc/source/core/tool/arraysum.hxx | 4 ++--
sc/source/core/tool/arraysumAVX.cxx | 2 +-
sc/source/core/tool/arraysumAVX512.cxx | 2 +-
sc/source/core/tool/arraysumSSE2.cxx | 2 +-
6 files changed, 21 insertions(+), 21 deletions(-)

Upstream: cgit.freedesktop.org


  • Share