explore i686 ICE further

f41
Caolán McNamara 3 years ago
parent 77b4dd96e0
commit 6b8de850ea

@ -0,0 +1,45 @@
From 3f96d70ce7f31d556b995733b44cb8715b64e329 Mon Sep 17 00:00:00 2001
From: Thorsten Behrens <thorsten.behrens@allotropia.de>
Date: Mon, 31 Jan 2022 22:45:37 +0100
Subject: [PATCH 1/2] Avoid calling AVX code in library static initialization
Despite 26072b8db7ba53f00c83197cb064229a76001989 and
12c6b1ef6a824b09778163ec83fc44bb196e65db, Linux builds using
RH devtoolset-7 gcc7 still hit occasional unit test crashes
with illegal instructions.
Backtrace is always:
> #0 __static_initialization_and_destruction_0 (__initialize_p=1, __priority=65535) at core/sc/source/core/tool/arraysumAVX.cxx:20
> #1 _GLOBAL__sub_I_arraysumAVX.cxx(void) () at core/sc/source/core/tool/arraysumAVX.cxx:112
>
So lets make sure initializer is run only on function entry.
Change-Id: I69f5cb725e4d72fb346166b21870612473f974b8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129246
Tested-by: Jenkins
Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
(cherry picked from commit d140817428cdbb519efa496f578bf6c054c94361)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129251
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
---
sc/source/core/tool/arraysumAVX.cxx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sc/source/core/tool/arraysumAVX.cxx b/sc/source/core/tool/arraysumAVX.cxx
index e256248047d0..4d9ee02285e7 100644
--- a/sc/source/core/tool/arraysumAVX.cxx
+++ b/sc/source/core/tool/arraysumAVX.cxx
@@ -30,7 +30,7 @@ using namespace AVX;
*/
static inline void sumAVX(__m256d& sum, __m256d& err, const __m256d& value)
{
- const __m256d ANNULATE_SIGN_BIT
+ static const __m256d ANNULATE_SIGN_BIT
= _mm256_castsi256_pd(_mm256_set1_epi64x(0x7FFF'FFFF'FFFF'FFFF));
// Temporal parameter
__m256d t = _mm256_add_pd(sum, value);
--
2.33.1

@ -1,14 +1,14 @@
From 4358a5df96b0989b6074dde0509711598ab5d26e Mon Sep 17 00:00:00 2001 From bc39839446e13e31ad4e95943446c08876853eb9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com> From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Thu, 3 Feb 2022 14:29:21 +0000 Date: Thu, 3 Feb 2022 14:29:21 +0000
Subject: [PATCH] split out function to explore i686 ICE Subject: [PATCH 2/2] split out function to explore i686 ICE
Change-Id: I75afe56b248236f30a96876e2aed96f5dd887df1 Change-Id: I75afe56b248236f30a96876e2aed96f5dd887df1
--- ---
sc/Library_sc.mk | 1 + sc/Library_sc.mk | 1 +
sc/source/core/tool/bahttext.cxx | 242 +++++++++++++++++++++++++++++++ sc/source/core/tool/bahttext.cxx | 238 +++++++++++++++++++++++++++++++
sc/source/core/tool/interpr2.cxx | 181 ----------------------- sc/source/core/tool/interpr2.cxx | 181 -----------------------
3 files changed, 243 insertions(+), 181 deletions(-) 3 files changed, 239 insertions(+), 181 deletions(-)
create mode 100644 sc/source/core/tool/bahttext.cxx create mode 100644 sc/source/core/tool/bahttext.cxx
diff --git a/sc/Library_sc.mk b/sc/Library_sc.mk diff --git a/sc/Library_sc.mk b/sc/Library_sc.mk
@ -25,10 +25,10 @@ index 936ca33901ee..f31bbd3f5f8c 100644
sc/source/core/tool/cellform \ sc/source/core/tool/cellform \
diff --git a/sc/source/core/tool/bahttext.cxx b/sc/source/core/tool/bahttext.cxx diff --git a/sc/source/core/tool/bahttext.cxx b/sc/source/core/tool/bahttext.cxx
new file mode 100644 new file mode 100644
index 000000000000..8d113019b2d8 index 000000000000..76b99973271d
--- /dev/null --- /dev/null
+++ b/sc/source/core/tool/bahttext.cxx +++ b/sc/source/core/tool/bahttext.cxx
@@ -0,0 +1,242 @@ @@ -0,0 +1,238 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* +/*
+ * This file is part of the LibreOffice project. + * This file is part of the LibreOffice project.
@ -83,15 +83,13 @@ index 000000000000..8d113019b2d8
+#define UTF8_TH_MINUS "\340\270\245\340\270\232" +#define UTF8_TH_MINUS "\340\270\245\340\270\232"
+ +
+// local functions +// local functions
+namespace +static void lclSplitBlock(double& rfInt, sal_Int32& rnBlock, double fValue, double fSize)
+{
+void lclSplitBlock(double& rfInt, sal_Int32& rnBlock, double fValue, double fSize)
+{ +{
+ rnBlock = static_cast<sal_Int32>(modf((fValue + 0.1) / fSize, &rfInt) * fSize + 0.1); + rnBlock = static_cast<sal_Int32>(modf((fValue + 0.1) / fSize, &rfInt) * fSize + 0.1);
+} +}
+ +
+/** Appends a digit (0 to 9) to the passed string. */ +/** Appends a digit (0 to 9) to the passed string. */
+void lclAppendDigit(OStringBuffer& rText, sal_Int32 nDigit) +static void lclAppendDigit(OStringBuffer& rText, sal_Int32 nDigit)
+{ +{
+ switch (nDigit) + switch (nDigit)
+ { + {
@ -134,7 +132,7 @@ index 000000000000..8d113019b2d8
+ @param nDigit A digit in the range from 1 to 9. + @param nDigit A digit in the range from 1 to 9.
+ @param nPow10 A value in the range from 2 to 5. + @param nPow10 A value in the range from 2 to 5.
+ */ + */
+void lclAppendPow10(OStringBuffer& rText, sal_Int32 nDigit, sal_Int32 nPow10) +static void lclAppendPow10(OStringBuffer& rText, sal_Int32 nDigit, sal_Int32 nPow10)
+{ +{
+ OSL_ENSURE((1 <= nDigit) && (nDigit <= 9), "lclAppendPow10 - illegal digit"); + OSL_ENSURE((1 <= nDigit) && (nDigit <= 9), "lclAppendPow10 - illegal digit");
+ lclAppendDigit(rText, nDigit); + lclAppendDigit(rText, nDigit);
@ -158,7 +156,7 @@ index 000000000000..8d113019b2d8
+} +}
+ +
+/** Appends a block of 6 digits (value from 1 to 999,999) to the passed string. */ +/** Appends a block of 6 digits (value from 1 to 999,999) to the passed string. */
+void lclAppendBlock(OStringBuffer& rText, sal_Int32 nValue) +static void lclAppendBlock(OStringBuffer& rText, sal_Int32 nValue)
+{ +{
+ OSL_ENSURE((1 <= nValue) && (nValue <= 999999), "lclAppendBlock - illegal value"); + OSL_ENSURE((1 <= nValue) && (nValue <= 999999), "lclAppendBlock - illegal value");
+ if (nValue >= 100000) + if (nValue >= 100000)
@ -200,8 +198,6 @@ index 000000000000..8d113019b2d8
+ lclAppendDigit(rText, nOne); + lclAppendDigit(rText, nOne);
+} +}
+ +
+} // namespace
+
+void ScInterpreter::ScBahtText() +void ScInterpreter::ScBahtText()
+{ +{
+ sal_uInt8 nParamCount = GetByte(); + sal_uInt8 nParamCount = GetByte();

@ -248,8 +248,9 @@ Patch3: 0001-Revert-tdf-101630-gdrive-support-w-oAuth-and-Drive-A.patch
Patch4: 0001-it-doesn-t-work-to-just-have-Roman-as-a-font-name-an.patch Patch4: 0001-it-doesn-t-work-to-just-have-Roman-as-a-font-name-an.patch
# disable another poor test # disable another poor test
Patch5: 0001-the-fedora-kacst-book-fonts-2.0-26-does-have-these-w.patch Patch5: 0001-the-fedora-kacst-book-fonts-2.0-26-does-have-these-w.patch
Patch6: 0001-Avoid-calling-AVX-code-in-library-static-initializat.patch
# see if ICE still happens # see if ICE still happens
Patch6: 0001-split-out-function-to-explore-i686-ICE.patch Patch7: 0001-split-out-function-to-explore-i686-ICE.patch
# not upstreamed # not upstreamed
Patch500: 0001-disable-libe-book-support.patch Patch500: 0001-disable-libe-book-support.patch

Loading…
Cancel
Save