Since 6.3.0-3ubuntu1 some acc autotests fail with "atomic_base.h:390:7: error: inlining failed in call to always_inline"
On zesty.
purpose 1.1-4ubuntu1 in proposed.
acc passed on test prior to GCC 6.3.0-3ubuntu1
Looking at the logs for the more frequent debian autotests on their CI for purpose:
https://ci.debian.net/packages/p/purpose/unstable/amd64/
the bug appeared immediately GCC 6.3.0-3 replaced 6.3.0-2, and persists since.
Other failures examples on ubuntu include test for marble, and libkf5kgeomap against new marble.
------ test artifact extracts --------
The GCC parameters:
gcc -fdump-translation-unit -fkeep-inline-functions -c -x c++-header -fpermissive -w -fPIC -std=c++11 "/tmp/46X9Aqny79/dump1.h" -I/usr/include/KF5/purposewidgets -I/usr/include/KF5/purpose -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/KF5/KCoreAddons -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtCore
In file included from /usr/include/c++/6/atomic:41:0,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qatomic_cxx11.h:45,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qbasicatomic.h:53,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qatomic.h:46,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qglobal.h:1145,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qnamespace.h:43,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs.h:48,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:46,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
from /usr/include/KF5/purpose/purpose/configuration.h:21,
from /usr/include/KF5/purpose/Purpose/Configuration:1,
from /tmp/46X9Aqny79/dump1.h:5:
/usr/include/c++/6/bits/atomic_base.h: In member function ‘std::atomic<bool>::operator bool() const’:
/usr/include/c++/6/bits/atomic_base.h:390:7: error: inlining failed in call to always_inline ‘std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::load(std::memory_order) const noexcept [with _ITp = bool; std::__atomic_base<_IntTp>::__int_type = bool; std::memory_order = std::memory_order]’: function body not available
load(memory_order __m = memory_order_seq_cst) const noexcept
^~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qatomic_cxx11.h:45:0,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qbasicatomic.h:53,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qatomic.h:46,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qglobal.h:1145,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qnamespace.h:43,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs.h:48,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:46,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/QObject:1,
from /usr/include/KF5/purpose/purpose/configuration.h:21,
from /usr/include/KF5/purpose/Purpose/Configuration:1,
from /tmp/46X9Aqny79/dump1.h:5:
/usr/include/c++/6/atomic:81:27: note: called from here
{ return _M_base.load(); }
^
The GCC parameters:
gcc -fdump-translation-unit -fkeep-inline-functions -c -x c++-header -fpermissive -w -fPIC "/tmp/TSJsBYB52L/dump1.h" -I/usr/include/KF5/KGeoMap -I/usr/include/x86_64-linux-gnu/qt5
In file included from /usr/include/c++/6/atomic:41:0,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qatomic_cxx11.h:45,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qbasicatomic.h:53,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qatomic.h:46,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qglobal.h:1145,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qatomic.h:41,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qrefcount.h:43,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:44,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qbitarray.h:43,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/QBitArray:1,
from /usr/include/KF5/KGeoMap/kgeomap/abstractmarkertiler.h:32,
from /usr/include/KF5/KGeoMap/KGeoMap/AbstractMarkerTiler:1,
from /tmp/TSJsBYB52L/dump1.h:4:
/usr/include/c++/6/bits/atomic_base.h: In member function ‘std::atomic<bool>::operator bool() const’:
/usr/include/c++/6/bits/atomic_base.h:390:7: error: inlining failed in call to always_inline ‘std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::load(std::memory_order) const noexcept [with _ITp = bool; std::__atomic_base<_IntTp>::__int_type = bool; std::memory_order = std::memory_order]’: function body not available
load(memory_order __m = memory_order_seq_cst) const noexcept
^~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qatomic_cxx11.h:45:0,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qbasicatomic.h:53,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qatomic.h:46,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qglobal.h:1145,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qatomic.h:41,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qrefcount.h:43,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h:44,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qbitarray.h:43,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/QBitArray:1,
from /usr/include/KF5/KGeoMap/kgeomap/abstractmarkertiler.h:32,
from /usr/include/KF5/KGeoMap/KGeoMap/AbstractMarkerTiler:1,
from /tmp/TSJsBYB52L/dump1.h:4:
/usr/include/c++/6/atomic:81:27: note: called from here
{ return _M_base.load(); }
^
A little more testing to hopefully confirm.......
Running the affected purpose/ libkf5kgeomap/ marble tests locally with autopacktest, the recommended qemu and testbed from the wiki results in:
gcc-6 6.3.0-5ubuntu1 from 'proposed' = FAIL with above errors with the headers
logging into an above testbed that just failed, and downgrading gcc-6 and deps to 6.3.0-2ubuntu1 (i.e. last unaffected version) from release pocket gives
gcc-6 6.3.0-2ubuntu1 from 'release' = PASS