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

Reply via email to