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(-)

New commits:
commit 12c6b1ef6a824b09778163ec83fc44bb196e65db
Author:     Luboš Luňák <l.lu...@collabora.com>
AuthorDate: Tue Oct 26 23:43:48 2021 +0200
Commit:     Luboš Luňák <l.lu...@collabora.com>
CommitDate: Wed Oct 27 08:39:10 2021 +0200

    try harder not to mix CPU-specific code with generic code
    
    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 <cmath>
    
    Change-Id: Ifd14076f79e9fbd7cc4c4a63a9764dff6715e63a
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124249
    Tested-by: Jenkins
    Reviewed-by: Luboš Luňák <l.lu...@collabora.com>

diff --git a/external/skia/Library_skia.mk b/external/skia/Library_skia.mk
index 0989e7e337c9..92215b0935d2 100644
--- a/external/skia/Library_skia.mk
+++ b/external/skia/Library_skia.mk
@@ -123,10 +123,6 @@ $(eval $(call gb_Library_add_exception_objects,skia,\
     external/skia/source/skia_opts \
 ))
 
-$(eval $(call gb_Library_add_exception_objects,skia,\
-    external/skia/source/skia_opts_ssse3, $(CXXFLAGS_INTRINSICS_SSSE3) 
$(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3) \
-))
-
 $(eval $(call gb_Library_set_generated_cxx_suffix,skia,cpp))
 
 $(eval $(call gb_Library_add_generated_exception_objects,skia,\
@@ -835,6 +831,10 @@ $(eval $(call 
gb_Library_add_generated_exception_objects,skia,\
     UnpackedTarball/skia/src/ports/SkOSFile_stdio \
 ))
 
+$(eval $(call gb_Library_add_exception_objects,skia,\
+    external/skia/source/skia_opts_ssse3, $(CXXFLAGS_INTRINSICS_SSSE3) 
$(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3) \
+))
+
 $(eval $(call gb_Library_add_generated_exception_objects,skia,\
     UnpackedTarball/skia/src/opts/SkOpts_avx, $(CXXFLAGS_INTRINSICS_AVX) 
$(LO_CLANG_CXXFLAGS_INTRINSICS_AVX) \
         $(LO_SKIA_AVOID_INLINE_COPIES) \
diff --git a/sc/Library_sc.mk b/sc/Library_sc.mk
index a85650e935e6..ef9c62f42d53 100644
--- a/sc/Library_sc.mk
+++ b/sc/Library_sc.mk
@@ -98,18 +98,6 @@ $(eval $(call gb_Library_use_libraries,sc,\
     xo \
 ))
 
-$(eval $(call gb_Library_add_exception_objects,sc,\
-    sc/source/core/tool/arraysumAVX512, $(CXXFLAGS_INTRINSICS_AVX512F) \
-))
-
-$(eval $(call gb_Library_add_exception_objects,sc,\
-    sc/source/core/tool/arraysumAVX, $(CXXFLAGS_INTRINSICS_AVX) \
-))
-
-$(eval $(call gb_Library_add_exception_objects,sc,\
-    sc/source/core/tool/arraysumSSE2, $(CXXFLAGS_INTRINSICS_SSE2) \
-))
-
 $(eval $(call gb_Library_add_exception_objects,sc,\
     sc/source/core/data/attarray \
     sc/source/core/data/attrib \
@@ -692,6 +680,18 @@ $(eval $(call gb_Library_add_exception_objects,sc,\
     sc/source/ui/xmlsource/xmlsourcedlg \
 ))
 
+$(eval $(call gb_Library_add_exception_objects,sc,\
+    sc/source/core/tool/arraysumAVX512, $(CXXFLAGS_INTRINSICS_AVX512F) \
+))
+
+$(eval $(call gb_Library_add_exception_objects,sc,\
+    sc/source/core/tool/arraysumAVX, $(CXXFLAGS_INTRINSICS_AVX) \
+))
+
+$(eval $(call gb_Library_add_exception_objects,sc,\
+    sc/source/core/tool/arraysumSSE2, $(CXXFLAGS_INTRINSICS_SSE2) \
+))
+
 ifeq ($(ENABLE_FORMULA_LOGGER),TRUE)
 $(eval $(call gb_Library_add_exception_objects,sc,\
     sc/source/core/tool/formulalogger \
diff --git a/sc/source/core/tool/arraysum.hxx b/sc/source/core/tool/arraysum.hxx
index 62c2514182b7..5d227bd85a48 100644
--- a/sc/source/core/tool/arraysum.hxx
+++ b/sc/source/core/tool/arraysum.hxx
@@ -10,7 +10,7 @@
 
 #pragma once
 
-#include <cmath>
+#include <math.h>
 
 namespace sc::op
 {
@@ -37,7 +37,7 @@ namespace LO_ARRAYSUM_SPACE
 INLINE void sumNeumanierNormal(double& sum, double& err, const double& value)
 {
     double t = sum + value;
-    if (std::abs(sum) >= std::abs(value))
+    if (fabs(sum) >= fabs(value))
         err += (sum - t) + value;
     else
         err += (value - t) + sum;
diff --git a/sc/source/core/tool/arraysumAVX.cxx 
b/sc/source/core/tool/arraysumAVX.cxx
index 54c47780f63c..c55d71f22983 100644
--- a/sc/source/core/tool/arraysumAVX.cxx
+++ b/sc/source/core/tool/arraysumAVX.cxx
@@ -16,7 +16,7 @@
 #include <tools/simd.hxx>
 #include <tools/simdsupport.hxx>
 
-#include <cstdlib>
+#include <stdlib.h>
 
 namespace sc::op
 {
diff --git a/sc/source/core/tool/arraysumAVX512.cxx 
b/sc/source/core/tool/arraysumAVX512.cxx
index f8e8de729279..987e5a3e6ff6 100644
--- a/sc/source/core/tool/arraysumAVX512.cxx
+++ b/sc/source/core/tool/arraysumAVX512.cxx
@@ -16,7 +16,7 @@
 #include <tools/simd.hxx>
 #include <tools/simdsupport.hxx>
 
-#include <cstdlib>
+#include <stdlib.h>
 
 /* TODO Remove this once GCC updated and AVX512 can work. */
 #ifdef __GNUC__
diff --git a/sc/source/core/tool/arraysumSSE2.cxx 
b/sc/source/core/tool/arraysumSSE2.cxx
index 95b42f868461..b4edb98286f9 100644
--- a/sc/source/core/tool/arraysumSSE2.cxx
+++ b/sc/source/core/tool/arraysumSSE2.cxx
@@ -16,7 +16,7 @@
 #include <tools/simd.hxx>
 #include <tools/simdsupport.hxx>
 
-#include <cstdlib>
+#include <stdlib.h>
 
 namespace sc::op
 {

Reply via email to