mirror of
https://github.com/boostorg/config.git
synced 2025-07-30 04:17:16 +02:00
Merge pull request #289 from boostorg/gcc9
Add gcc-9, clang-8, xcode-10 to test matrix.
This commit is contained in:
28
.travis.yml
28
.travis.yml
@ -124,6 +124,17 @@ matrix:
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
dist: trusty
|
||||
compiler: g++-9
|
||||
env: TOOLSET=gcc COMPILER=g++-9 CXXSTD=03,11,14,17,2a
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-9
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11
|
||||
|
||||
@ -250,9 +261,24 @@ matrix:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-xenial-7
|
||||
|
||||
- os: linux
|
||||
compiler: clang++-8
|
||||
env: TOOLSET=clang COMPILER=clang++-8 CXXSTD=03,11,14,17,2a
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-8
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-xenial-8
|
||||
|
||||
- os: osx
|
||||
env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,17,2a
|
||||
osx_image: xcode10.2
|
||||
|
||||
- os: osx
|
||||
env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z
|
||||
osx_image: xcode9.1
|
||||
osx_image: xcode9.4
|
||||
|
||||
- os: osx
|
||||
env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z
|
||||
|
@ -999,7 +999,7 @@ namespace std{ using ::type_info; }
|
||||
#if __has_cpp_attribute(nodiscard)
|
||||
# define BOOST_ATTRIBUTE_NODISCARD [[nodiscard]]
|
||||
#endif
|
||||
#if __has_cpp_attribute(no_unique_address)
|
||||
#if __has_cpp_attribute(no_unique_address) && !(defined(__GNUC__) && (__cplusplus < 201100))
|
||||
# define BOOST_ATTRIBUTE_NO_UNIQUE_ADDRESS [[no_unique_address]]
|
||||
#endif
|
||||
#endif
|
||||
|
@ -21,72 +21,78 @@
|
||||
|
||||
namespace boost_no_cxx11_hdr_atomic {
|
||||
|
||||
int test()
|
||||
{
|
||||
std::memory_order m = static_cast<std::memory_order>(std::memory_order_relaxed | std::memory_order_consume | std::memory_order_acquire | std::memory_order_release
|
||||
| std::memory_order_acq_rel | std::memory_order_seq_cst);
|
||||
(void)m;
|
||||
void consume(std::memory_order)
|
||||
{}
|
||||
|
||||
std::atomic<int> a1;
|
||||
std::atomic<unsigned> a2;
|
||||
std::atomic<int*> a3;
|
||||
a1.is_lock_free();
|
||||
a1.store(1);
|
||||
a1.load();
|
||||
a1.exchange(2);
|
||||
int v;
|
||||
a1.compare_exchange_weak(v, 2, std::memory_order_relaxed, std::memory_order_relaxed);
|
||||
a1.compare_exchange_strong(v, 2, std::memory_order_relaxed, std::memory_order_relaxed);
|
||||
a1.fetch_add(2);
|
||||
a1.fetch_sub(3);
|
||||
a1.fetch_and(3);
|
||||
a1.fetch_or(1);
|
||||
a1.fetch_xor(1);
|
||||
a1++;
|
||||
++a1;
|
||||
a1--;
|
||||
--a1;
|
||||
a1 += 2;
|
||||
a1 -= 2;
|
||||
a1 &= 1;
|
||||
a1 |= 2;
|
||||
a1 ^= 3;
|
||||
int test()
|
||||
{
|
||||
consume(std::memory_order_relaxed);
|
||||
consume(std::memory_order_consume);
|
||||
consume(std::memory_order_acquire);
|
||||
consume(std::memory_order_release);
|
||||
consume(std::memory_order_acq_rel);
|
||||
consume(std::memory_order_seq_cst);
|
||||
|
||||
a2 = 0u;
|
||||
std::atomic<int> a1;
|
||||
std::atomic<unsigned> a2;
|
||||
std::atomic<int*> a3;
|
||||
a1.is_lock_free();
|
||||
a1.store(1);
|
||||
a1.load();
|
||||
a1.exchange(2);
|
||||
int v;
|
||||
a1.compare_exchange_weak(v, 2, std::memory_order_relaxed, std::memory_order_relaxed);
|
||||
a1.compare_exchange_strong(v, 2, std::memory_order_relaxed, std::memory_order_relaxed);
|
||||
a1.fetch_add(2);
|
||||
a1.fetch_sub(3);
|
||||
a1.fetch_and(3);
|
||||
a1.fetch_or(1);
|
||||
a1.fetch_xor(1);
|
||||
a1++;
|
||||
++a1;
|
||||
a1--;
|
||||
--a1;
|
||||
a1 += 2;
|
||||
a1 -= 2;
|
||||
a1 &= 1;
|
||||
a1 |= 2;
|
||||
a1 ^= 3;
|
||||
|
||||
a3.store(&v);
|
||||
a3.fetch_add(1);
|
||||
a3.fetch_sub(1);
|
||||
++a3;
|
||||
--a3;
|
||||
a3++;
|
||||
a3--;
|
||||
a3 += 1;
|
||||
a3 -= 1;
|
||||
a2 = 0u;
|
||||
|
||||
std::atomic_is_lock_free(&a1);
|
||||
// This produces linker errors on Mingw32 for some reason, probably not required anyway for most uses??
|
||||
//std::atomic_init(&a1, 2);
|
||||
std::atomic_store(&a1, 3);
|
||||
std::atomic_store_explicit(&a1, 3, std::memory_order_relaxed);
|
||||
std::atomic_load(&a1);
|
||||
std::atomic_load_explicit(&a1, std::memory_order_relaxed);
|
||||
std::atomic_exchange(&a1, 3);
|
||||
std::atomic_compare_exchange_weak(&a1, &v, 2);
|
||||
std::atomic_compare_exchange_strong(&a1, &v, 2);
|
||||
std::atomic_compare_exchange_weak_explicit(&a1, &v, 2, std::memory_order_relaxed, std::memory_order_relaxed);
|
||||
std::atomic_compare_exchange_strong_explicit(&a1, &v, 2, std::memory_order_relaxed, std::memory_order_relaxed);
|
||||
a3.store(&v);
|
||||
a3.fetch_add(1);
|
||||
a3.fetch_sub(1);
|
||||
++a3;
|
||||
--a3;
|
||||
a3++;
|
||||
a3--;
|
||||
a3 += 1;
|
||||
a3 -= 1;
|
||||
|
||||
std::atomic_flag f = ATOMIC_FLAG_INIT;
|
||||
f.test_and_set(std::memory_order_relaxed);
|
||||
f.test_and_set();
|
||||
f.clear(std::memory_order_relaxed);
|
||||
f.clear();
|
||||
std::atomic_is_lock_free(&a1);
|
||||
// This produces linker errors on Mingw32 for some reason, probably not required anyway for most uses??
|
||||
//std::atomic_init(&a1, 2);
|
||||
std::atomic_store(&a1, 3);
|
||||
std::atomic_store_explicit(&a1, 3, std::memory_order_relaxed);
|
||||
std::atomic_load(&a1);
|
||||
std::atomic_load_explicit(&a1, std::memory_order_relaxed);
|
||||
std::atomic_exchange(&a1, 3);
|
||||
std::atomic_compare_exchange_weak(&a1, &v, 2);
|
||||
std::atomic_compare_exchange_strong(&a1, &v, 2);
|
||||
std::atomic_compare_exchange_weak_explicit(&a1, &v, 2, std::memory_order_relaxed, std::memory_order_relaxed);
|
||||
std::atomic_compare_exchange_strong_explicit(&a1, &v, 2, std::memory_order_relaxed, std::memory_order_relaxed);
|
||||
|
||||
std::atomic_thread_fence(std::memory_order_relaxed);
|
||||
std::atomic_signal_fence(std::memory_order_relaxed);
|
||||
std::atomic_flag f = ATOMIC_FLAG_INIT;
|
||||
f.test_and_set(std::memory_order_relaxed);
|
||||
f.test_and_set();
|
||||
f.clear(std::memory_order_relaxed);
|
||||
f.clear();
|
||||
|
||||
return 0;
|
||||
}
|
||||
std::atomic_thread_fence(std::memory_order_relaxed);
|
||||
std::atomic_signal_fence(std::memory_order_relaxed);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ void quiet_warning(const CharT*){}
|
||||
|
||||
int test()
|
||||
{
|
||||
#ifdef __cpp_char8_type
|
||||
#if defined(__cpp_char8_type) || defined(__cpp_char8_t)
|
||||
// The change to char8_t in C++20 is a breaking change to the std:
|
||||
const char8_t* c8 = u8"";
|
||||
#else
|
||||
|
@ -1231,25 +1231,6 @@ void print_boost_macros()
|
||||
PRINT_MACRO(BOOST_NO_USING_TEMPLATE);
|
||||
PRINT_MACRO(BOOST_NO_VOID_RETURNS);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// END GENERATED BLOCK
|
||||
|
||||
PRINT_MACRO(BOOST_INTEL);
|
||||
@ -1267,12 +1248,26 @@ void print_boost_macros()
|
||||
PRINT_MACRO(BOOST_FALLTHROUGH);
|
||||
PRINT_MACRO(BOOST_MAY_ALIAS);
|
||||
PRINT_MACRO(BOOST_NO_MAY_ALIAS);
|
||||
PRINT_MACRO(BOOST_ATTRIBUTE_NO_UNIQUE_ADDRESS);
|
||||
PRINT_MACRO(BOOST_ATTRIBUTE_UNUSED);
|
||||
PRINT_MACRO(BOOST_UNLIKELY);
|
||||
PRINT_MACRO(BOOST_NORETURN);
|
||||
}
|
||||
|
||||
void print_sd6_macros()
|
||||
{
|
||||
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0096r5.html
|
||||
|
||||
// C++20:
|
||||
PRINT_MACRO(__cpp_aggregate_paren_init);
|
||||
PRINT_MACRO(__cpp_char8_t);
|
||||
PRINT_MACRO(__cpp_char8_type);
|
||||
PRINT_MACRO(__cpp_conditional_explicit);
|
||||
PRINT_MACRO(__cpp_coroutines);
|
||||
PRINT_MACRO(__cpp_impl_destroying_delete);
|
||||
PRINT_MACRO(__cpp_impl_three_way_comparison);
|
||||
PRINT_MACRO(__cpp_nontype_template_parameter_class);
|
||||
|
||||
// C++17:
|
||||
PRINT_MACRO(__cpp_hex_float);
|
||||
PRINT_MACRO(__cpp_inline_variables);
|
||||
|
Reference in New Issue
Block a user