ArrayFunctionsTest::testDubiousArrayFormulasFODS fails on ppc64le (and s390x)

Dan Horák dan at danny.cz
Fri Sep 1 13:41:23 UTC 2023


On Fri, 1 Sep 2023 11:29:23 +0200
Stephan Bergmann <sbergman at redhat.com> wrote:

> On 9/1/23 10:37, Dan Horák wrote:
> > The "dubious array" tests are already being skipped for aarch64 due
> > known issue [1], shouldn't we just skip them for ppc64le and s390x as
> > well? Or should it be enabled only for "good" platforms, eg. x86_64?
> 
> I think either approach should be OK, whatever you find more convenient. 
>   One minor downside when adding additional conditionals to skip on 
> ppc64le and s390x to
> 
> > void ArrayFunctionsTest::testDubiousArrayFormulasFODS()
> > {
> >     //TODO: sc/qa/unit/data/functions/array/dubious/fods/linest.fods produces widely different
> >     // values when built with -ffp-contract enabled (-ffp-contract=on default on Clang 14,
> >     // -ffp-contract=fast default when building with optimizations on GCC) on at least aarch64:
> > #if !((defined __clang__ || defined __GNUC__) && defined __aarch64__)
> >     OUString aDirectoryURL
> >         = m_directories.getURLFromSrc(u"/sc/qa/unit/data/functions/array/dubious/fods/");
> >     recursiveScan(test::pass, "OpenDocument Spreadsheet Flat XML", aDirectoryURL,
> >             "com.sun.star.comp.filter.OdfFlatXml,,com.sun.star.comp.Calc.XMLOasisImporter,com.sun.star.comp.Calc.XMLOasisExporter,,,true",
> >             FODS_FORMAT_TYPE, SotClipboardFormatId::NONE, 0, false);
> > #endif
> > }
> 
> would be that the TODO comment makes it then sound like the issues on 
> ppc64le and s390x are also known to be due to -ffp-contract settings, 
> even if you would not verify that.

I have verified it's indeed caused by -ffp-contract. When set to "off",
the test passes (checked on ppc64le). But what's more interesting, that
the "off" setting also fixes a failure in
AddinFunctionsTest::testAddinFormulasFODS when dec2bin() is converting
negative numbers. dec2bin(-100) and dec2bin(-2) report Error:502
instead of doing the conversion ...

 
> So maybe the best thing is to turn this into a x86_64 only conditional, 
> and extend the TODO comment with something like "...on at least aarch64, 
> so lets only execute this on x86-64, where it appears to always work well:"

yeah, I think using a "positive" list would be better. I could
possibly prepare a patch, but is there an example where I can see how
the condition should look like?

> (The underlying issue is that tests like this are, excuse my wording, 
> utter crap.  Instead of checking for exact values, they should of course 
> check that results are in whatever acceptable range according to a spec. 
>   But Calc doesn't even come with such a spec in the first place...)

we have seen more problems in other packages in the past related to
-ffp-contract behaviour on aarch64 and s390x and ppc64le ...


		Dan


More information about the LibreOffice mailing list