forked from OSchip/llvm-project
[libc++] Add a job running GCC with C++11
This configuration is interesting because GCC has a different level of strictness for some C++ rules. In particular, it implements the older standards more stringently than Clang, which can help find places where we are non-conforming (especially in the test suite). Differential Revision: https://reviews.llvm.org/D105936
This commit is contained in:
parent
766a08df12
commit
851a335b1e
|
@ -27,10 +27,11 @@ template <class T>
|
||||||
struct TestFn {
|
struct TestFn {
|
||||||
void operator()() const {
|
void operator()() const {
|
||||||
typedef std::atomic<T> A;
|
typedef std::atomic<T> A;
|
||||||
A t = T();
|
T t = T();
|
||||||
bool b1 = std::atomic_is_lock_free(static_cast<const A*>(&t));
|
A a(t);
|
||||||
volatile A vt = T();
|
bool b1 = std::atomic_is_lock_free(static_cast<const A*>(&a));
|
||||||
bool b2 = std::atomic_is_lock_free(static_cast<const volatile A*>(&vt));
|
volatile A va(t);
|
||||||
|
bool b2 = std::atomic_is_lock_free(static_cast<const volatile A*>(&va));
|
||||||
assert(b1 == b2);
|
assert(b1 == b2);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -19,6 +19,8 @@ public:
|
||||||
A(const A& a) : id_(a.id_) {++count;}
|
A(const A& a) : id_(a.id_) {++count;}
|
||||||
~A() {assert(id_ >= 0); id_ = -1; --count;}
|
~A() {assert(id_ >= 0); id_ = -1; --count;}
|
||||||
|
|
||||||
|
A& operator=(const A& other) { id_ = other.id_; return *this; }
|
||||||
|
|
||||||
int id() const {return id_;}
|
int id() const {return id_;}
|
||||||
|
|
||||||
static int count;
|
static int count;
|
||||||
|
|
|
@ -19,6 +19,8 @@ public:
|
||||||
A(const A& a) : id_(a.id_) {++count;}
|
A(const A& a) : id_(a.id_) {++count;}
|
||||||
virtual ~A() {assert(id_ >= 0); id_ = -1; --count;}
|
virtual ~A() {assert(id_ >= 0); id_ = -1; --count;}
|
||||||
|
|
||||||
|
A& operator=(const A& other) { id_ = other.id_; return *this; }
|
||||||
|
|
||||||
static int count;
|
static int count;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -148,7 +148,10 @@ int main(int, char**)
|
||||||
#ifndef _LIBCPP_HAS_NO_STDIN
|
#ifndef _LIBCPP_HAS_NO_STDIN
|
||||||
static_assert((std::is_same<decltype(std::getchar()), int>::value), "");
|
static_assert((std::is_same<decltype(std::getchar()), int>::value), "");
|
||||||
#if TEST_STD_VER <= 11
|
#if TEST_STD_VER <= 11
|
||||||
|
# pragma GCC diagnostic push
|
||||||
|
# pragma GCC diagnostic ignored "-Wdeprecated-declarations" // disable the warning from the C library
|
||||||
static_assert((std::is_same<decltype(std::gets(cp)), char*>::value), "");
|
static_assert((std::is_same<decltype(std::gets(cp)), char*>::value), "");
|
||||||
|
# pragma GCC diagnostic pop
|
||||||
#endif
|
#endif
|
||||||
static_assert((std::is_same<decltype(std::scanf(" ")), int>::value), "");
|
static_assert((std::is_same<decltype(std::scanf(" ")), int>::value), "");
|
||||||
static_assert((std::is_same<decltype(std::vscanf(" ",va)), int>::value), "");
|
static_assert((std::is_same<decltype(std::vscanf(" ",va)), int>::value), "");
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
//
|
//
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
// XFAIL: gcc-10, gcc-11
|
|
||||||
// GCC's __builtin_strlen isn't constexpr yet
|
// GCC's __builtin_strlen isn't constexpr yet
|
||||||
|
// XFAIL: (gcc-10 || gcc-11) && !(c++11 || c++14 || c++17)
|
||||||
// UNSUPPORTED: LIBCXX-DEBUG-FIXME
|
// UNSUPPORTED: LIBCXX-DEBUG-FIXME
|
||||||
|
|
||||||
// <string_view>
|
// <string_view>
|
||||||
|
|
|
@ -36,7 +36,7 @@ int A::count = 0;
|
||||||
struct B : public A {
|
struct B : public A {
|
||||||
static int count;
|
static int count;
|
||||||
B() { ++count; }
|
B() { ++count; }
|
||||||
B(const B&) { ++count; }
|
B(const B& b) : A(b) { ++count; }
|
||||||
virtual ~B() { --count; }
|
virtual ~B() { --count; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -139,7 +139,7 @@
|
||||||
# define TEST_NOEXCEPT_COND(...)
|
# define TEST_NOEXCEPT_COND(...)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if TEST_STD_VER >= 17
|
#if TEST_STD_VER >= 11
|
||||||
# define TEST_THROW_SPEC(...)
|
# define TEST_THROW_SPEC(...)
|
||||||
#else
|
#else
|
||||||
# define TEST_THROW_SPEC(...) throw(__VA_ARGS__)
|
# define TEST_THROW_SPEC(...) throw(__VA_ARGS__)
|
||||||
|
|
|
@ -132,7 +132,7 @@ steps:
|
||||||
- exit_status: -1 # Agent was lost
|
- exit_status: -1 # Agent was lost
|
||||||
limit: 2
|
limit: 2
|
||||||
|
|
||||||
- label: "GCC 11"
|
- label: "GCC 11 / C++latest"
|
||||||
command: "libcxx/utils/ci/run-buildbot generic-gcc"
|
command: "libcxx/utils/ci/run-buildbot generic-gcc"
|
||||||
artifact_paths:
|
artifact_paths:
|
||||||
- "**/test-results.xml"
|
- "**/test-results.xml"
|
||||||
|
@ -149,6 +149,18 @@ steps:
|
||||||
#
|
#
|
||||||
- wait
|
- wait
|
||||||
|
|
||||||
|
- label: "GCC 11 / C++11"
|
||||||
|
command: "libcxx/utils/ci/run-buildbot generic-gcc-cxx11"
|
||||||
|
artifact_paths:
|
||||||
|
- "**/test-results.xml"
|
||||||
|
agents:
|
||||||
|
queue: "libcxx-builders"
|
||||||
|
os: "linux"
|
||||||
|
retry:
|
||||||
|
automatic:
|
||||||
|
- exit_status: -1 # Agent was lost
|
||||||
|
limit: 2
|
||||||
|
|
||||||
- label: "Clang 11"
|
- label: "Clang 11"
|
||||||
command: "libcxx/utils/ci/run-buildbot generic-clang-11"
|
command: "libcxx/utils/ci/run-buildbot generic-clang-11"
|
||||||
artifact_paths:
|
artifact_paths:
|
||||||
|
|
|
@ -278,6 +278,13 @@ generic-gcc)
|
||||||
generate-cmake
|
generate-cmake
|
||||||
check-cxx-cxxabi
|
check-cxx-cxxabi
|
||||||
;;
|
;;
|
||||||
|
generic-gcc-cxx11)
|
||||||
|
export CC=gcc-11
|
||||||
|
export CXX=g++-11
|
||||||
|
clean
|
||||||
|
generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx11.cmake"
|
||||||
|
check-cxx-cxxabi
|
||||||
|
;;
|
||||||
generic-asan)
|
generic-asan)
|
||||||
clean
|
clean
|
||||||
generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-asan.cmake"
|
generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-asan.cmake"
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
|
|
||||||
#if defined(__GNUC__)
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic ignored "-Wunreachable-code"
|
#pragma GCC diagnostic ignored "-Wunreachable-code"
|
||||||
|
#pragma GCC diagnostic ignored "-Wdeprecated" // dynamic exception specifications are deprecated
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct A
|
struct A
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
|
|
||||||
#if defined(__GNUC__)
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic ignored "-Wunreachable-code"
|
#pragma GCC diagnostic ignored "-Wunreachable-code"
|
||||||
|
#pragma GCC diagnostic ignored "-Wdeprecated" // dynamic exception specifications are deprecated
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct A
|
struct A
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
|
|
||||||
#if defined(__GNUC__)
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic ignored "-Wunreachable-code"
|
#pragma GCC diagnostic ignored "-Wunreachable-code"
|
||||||
|
#pragma GCC diagnostic ignored "-Wdeprecated" // dynamic exception specifications are deprecated
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct A
|
struct A
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
|
|
||||||
#if defined(__GNUC__)
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic ignored "-Wunreachable-code"
|
#pragma GCC diagnostic ignored "-Wunreachable-code"
|
||||||
|
#pragma GCC diagnostic ignored "-Wdeprecated" // dynamic exception specifications are deprecated
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct A
|
struct A
|
||||||
|
|
Loading…
Reference in New Issue