On Monday 11 of November 2019, Luke Benes wrote: > Noel, > > After > https://cgit.freedesktop.org/libreoffice/core/commit/?id=09f77e8ed51fc64fcc >c6a14e87eed48b2f15a28d loplugin:unusedmethods
The guilty commit is actually https://cgit.freedesktop.org/libreoffice/core/commit/?id=f43f9b99603736a4d54f550052509eb5f4d04b45 . The INTRINSICS_CXXFLAGS variable is misdesigned or misused. What happens is that a source file gets unconditionally compiled with whatever configure finds to be the most advanced instruction set, and then the code from the compiled source gets executed unconditionally, without a runtime check. A runtime check is necessary, as flags like -mavx2 allow the compiler to use newer instructions even for source code that doesn't explicitly use them. Looking at tools/qa/cppunit/test_cpuid.cxx, it seems that it doesn't need any special CXXFLAGS, as it doesn't use them. And if it does need them, then those parts need to be split to one source file per instruction set, each compiled with its matching CXXFLAGS, and then another source file (compiled normally) needs to call them only after doing a runtime check. See the description of -mavx2 etc. in 'man gcc' and see 'git grep SSE2 sc/' for an example. > Clang 7 on KDE Neon x86-64, and clang 10-git on openSUSE Tumbleweed i686 is > failing with > > [CUT] tools_test > Illegal instruction (core dumped) [...] > Thread 1 (Thread 0x7f90ea199740 (LWP 8225)): > #0 0x00007f90e824f538 in CppUnit::TestSuiteFactory<(anonymous > namespace)::CpuInstructionSetSupport>::makeTest() () at > /core/workdir/LinkTarget/CppunitTest/libtest_tools_test.so #1 > 0x00007f90e9d66f3b in > CppUnit::TestFactoryRegistry::addTestToSuite(CppUnit::TestSuite*) () at > /core/workdir/UnpackedTarball/cppunit/src/cppunit/.libs/libcppunit-1.14.so. >0 #2 0x00007f90e9d66e67 in CppUnit::TestFactoryRegistry::makeTest() () at > /core/workdir/UnpackedTarball/cppunit/src/cppunit/.libs/libcppunit-1.14.so. >0 #3 0x00000000004042a9 in (anonymous > namespace)::ProtectedFixtureFunctor::run() const () #4 0x00000000004035be > in main () > > > Error: a unit test failed, please do one of: > > make CppunitTest_tools_test CPPUNITTRACE="gdb --args" > ... > $ cat /proc/cpuinfo > model name : Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz > > Newer CPU's like my Broadwell Core i3 Processors have no issue with the > same distros. -- Luboš Luňák l.lu...@collabora.com _______________________________________________ LibreOffice mailing list LibreOffice@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice