Hello community, here is the log from the commit of package llvm7 for openSUSE:Factory checked in at 2019-08-13 13:17:37 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/llvm7 (Old) and /work/SRC/openSUSE:Factory/.llvm7.new.9556 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "llvm7" Tue Aug 13 13:17:37 2019 rev:15 rq:722148 version:7.0.1 Changes: -------- --- /work/SRC/openSUSE:Factory/llvm7/llvm7.changes 2019-06-22 11:22:14.325260988 +0200 +++ /work/SRC/openSUSE:Factory/.llvm7.new.9556/llvm7.changes 2019-08-13 13:17:41.949471903 +0200 @@ -1,0 +2,19 @@ +Sat Aug 10 06:06:57 UTC 2019 - Petr Tesařík <[email protected]> + +- Allow use of Gold linker to be conditional. + +------------------------------------------------------------------- +Fri Aug 9 20:18:20 UTC 2019 - Petr Tesařík <[email protected]> + +- llvm-skip-broken-float-test.patch + * Skip a test that is broken with 387 FPU registers. + * Avoids check failure on i586 (bsc#1145085). + +------------------------------------------------------------------- +Fri Aug 9 14:34:09 UTC 2019 - Petr Tesařík <[email protected]> + +- openmp-link-with-atomic-if-needed.patch + * Link libomp with atomic if needed (bsc#1145085). + * Fixes build using gcc-4.8 (e.g. SLE-12). + +------------------------------------------------------------------- New: ---- llvm-skip-broken-float-test.patch openmp-link-with-atomic-if-needed.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ llvm7.spec ++++++ --- /var/tmp/diff_new_pack.dgMMtp/_old 2019-08-13 13:17:45.969470973 +0200 +++ /var/tmp/diff_new_pack.dgMMtp/_new 2019-08-13 13:17:45.973470972 +0200 @@ -112,6 +112,8 @@ Patch28: llvm-Ensure-that-variant-part-discriminator-is-read-by-Me.patch Patch29: llvm-test-Fix-Assembler-debug-info.ll.patch Patch30: clang-deterministic-selector-order.patch +Patch31: openmp-link-with-atomic-if-needed.patch +Patch32: llvm-skip-broken-float-test.patch BuildRequires: binutils-devel >= 2.21.90 %if %{with gold} BuildRequires: binutils-gold @@ -173,7 +175,9 @@ Requires: libstdc++-devel Requires: libtool Requires: llvm%{_sonum}-LTO-devel +%if %{with gold} Requires: llvm%{_sonum}-gold +%endif Requires: llvm%{_sonum}-polly-devel Requires: ncurses-devel Requires: pkgconfig @@ -297,6 +301,7 @@ This package contains the link-time optimizer for LLVM. (development files) +%if %{with gold} %package gold Summary: Gold linker plugin for LLVM # Avoid multiple provider errors @@ -307,6 +312,7 @@ %description gold This package contains the Gold linker plugin for LLVM. +%endif %package -n libomp%{_sonum}-devel Summary: MPI plugin for LLVM @@ -544,6 +550,7 @@ %patch27 -p1 %patch28 -p1 %patch29 -p1 +%patch32 -p1 pushd cfe-%{_relver}.src %patch1 -p1 @@ -570,6 +577,12 @@ #%patch17 -p1 popd +%if %{with openmp} +pushd openmp-%{_relver}.src +%patch31 -p1 +popd +%endif + # Move into right place mv cfe-%{_relver}.src tools/clang mv compiler-rt-%{_relver}.src projects/compiler-rt @@ -818,7 +831,9 @@ # Note that bfd-plugins is always in /usr/lib/bfd-plugins, no matter what _libdir is. mkdir -p %{buildroot}/usr/lib/bfd-plugins +%if %{with gold} ln -s %{_libdir}/LLVMgold.so %{buildroot}/usr/lib/bfd-plugins/ +%endif install -m 755 -d %{buildroot}%{_datadir}/vim/site/ for i in ftdetect ftplugin indent syntax; do @@ -1025,8 +1040,10 @@ %postun -n liblldb%{_sonum} -p /sbin/ldconfig %endif +%if %{with gold} %post gold -p /sbin/ldconfig %postun gold -p /sbin/ldconfig +%endif %post devel -p /sbin/ldconfig %postun devel -p /sbin/ldconfig %post LTO-devel -p /sbin/ldconfig @@ -1593,12 +1610,16 @@ %license CREDITS.TXT LICENSE.TXT %{_libdir}/libLTO.so.* +%if %{with gold} %files gold %license CREDITS.TXT LICENSE.TXT %{_libdir}/LLVMgold.so # Note that bfd-plugins is always in /usr/lib/bfd-plugins, no matter what _libdir is. %dir /usr/lib/bfd-plugins/ /usr/lib/bfd-plugins/LLVMgold.so +%else +%exclude %{_libdir}/LLVMgold.so +%endif %if %{with openmp} %files -n libomp%{_sonum}-devel ++++++ llvm-skip-broken-float-test.patch ++++++ From: Petr Tesarik <[email protected]> Subject: Skip broken floating-point tests on i586 References: bsc#1145085 Patch-mainline: not yet, needs further research The test suite fails like this on i586: [ 1254s] FAIL: LLVM-Unit :: Support/./SupportTests/JSONTest.Integers (2436 of 27030) [ 1254s] ******************** TEST 'LLVM-Unit :: Support/./SupportTests/JSONTest.Integers' FAILED ******************** [ 1254s] Note: Google Test filter = JSONTest.Integers [ 1254s] [==========] Running 1 test from 1 test case. [ 1254s] [----------] Global test environment set-up. [ 1254s] [----------] 1 test from JSONTest [ 1254s] [ RUN ] JSONTest.Integers [ 1254s] ../unittests/Support/JSONTest.cpp:319: Failure [ 1254s] Expected: Doc->getAsNumber() [ 1254s] Which is: 12-byte object <00-00 00-00 00-00 D0-43 01-38 D1-08> [ 1254s] To be equal to: T.AsNumber [ 1254s] Which is: 12-byte object <00-00 00-00 00-00 D0-43 01-B0 92-F2> [ 1254s] Integer, not exact double. Stored as int64, convertible. [ 1254s] ../unittests/Support/JSONTest.cpp:319: Failure [ 1254s] Expected: Doc->getAsNumber() [ 1254s] Which is: 12-byte object <00-00 00-00 00-00 D0-C3 01-60 D1-08> [ 1254s] To be equal to: T.AsNumber [ 1254s] Which is: 12-byte object <00-00 00-00 00-00 D0-C3 01-00 00-00> [ 1254s] Negative integer, not exact double. Stored as int64, convertible. [ 1254s] [ FAILED ] JSONTest.Integers (0 ms) [ 1254s] [----------] 1 test from JSONTest (0 ms total) [ 1254s] [ 1254s] [----------] Global test environment tear-down [ 1254s] [==========] 1 test from 1 test case ran. (1 ms total) [ 1254s] [ PASSED ] 0 tests. [ 1254s] [ FAILED ] 1 test, listed below: [ 1254s] [ FAILED ] JSONTest.Integers Essentially, there is a check that an int64_t converted to a double matches a pre-calculated value exactly. This does not work for a large 64-bit integer which cannot be interpreted exactly as a 64-bit double. That's because the integer value is stored in a hardware floating-point register (using the FILD instruction). This register has 80 bits, so it can represent the integer value exactly. This register is then compared with the 64-bit value (loaded into another 80-bit floating-point register from memory using FLD instruction). Of course, the two do not match. It is not an issue on x86-64, because 64-bit XMM registers are used in that case, so there is no extra precision. I believe this unit test is broken, at least on i586. Signed-off-by: Petr Tesarik <[email protected]> --- unittests/Support/JSONTest.cpp | 2 ++ 1 file changed, 2 insertions(+) --- a/unittests/Support/JSONTest.cpp +++ b/unittests/Support/JSONTest.cpp @@ -279,6 +279,7 @@ TEST(JSONTest, Integers) { 1.5, }, +#ifndef __i386__ { "Integer, not exact double. Stored as int64, convertible.", int64_t{0x4000000000000001}, @@ -294,6 +295,7 @@ TEST(JSONTest, Integers) { int64_t{-0x4000000000000001}, double{-0x4000000000000000}, }, +#endif { "Dynamically exact integer. Stored as double, convertible.", ++++++ openmp-link-with-atomic-if-needed.patch ++++++ From: Petr Tesarik <[email protected]> Subject: Link libomp with atomic if needed References: bsc#1145085 Patch-mainline: never, fix not needed with more recent gcc libatomic is needed for 64-bit atomics on i586. The check is already performed by LLVM7, but the result is not used by openmp. Signed-off-by: Petr Tesarik <[email protected]> --- runtime/src/CMakeLists.txt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) --- a/runtime/src/CMakeLists.txt +++ b/runtime/src/CMakeLists.txt @@ -174,7 +174,13 @@ endif() # Linking command will include libraries in LIBOMP_CONFIGURED_LIBFLAGS libomp_get_libflags(LIBOMP_CONFIGURED_LIBFLAGS) -target_link_libraries(omp ${LIBOMP_CONFIGURED_LIBFLAGS} ${CMAKE_DL_LIBS}) + +set(LIBOMP_SYSTEM_LIBS) +if (NOT HAVE_CXX_ATOMICS64_WITHOUT_LIB ) + list(APPEND LIBOMP_SYSTEM_LIBS atomic) +endif() + +target_link_libraries(omp ${LIBOMP_CONFIGURED_LIBFLAGS} ${LIBOMP_SYSTEM_LIBS} ${CMAKE_DL_LIBS}) # Create *.inc before compiling any sources # objects depend on : .inc files
