This changes adds the pipeline config for both 32-bit and 64-bit AIX targets. As well, we add a lit feature `LIBCXX-AIX-FIXME` which is used to mark the failing tests which remain to be investigated on AIX, so that the CI produces a clean build.
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D111359
============ =============== ========================== =====================
Clang 12, 13 latest two stable releases per `LLVM's release page <https://releases.llvm.org>`_
AppleClang 12 latest stable release per `Xcode's release page <https://developer.apple.com/documentation/xcode-release-notes>`_
+Open XL 17.1 (AIX) latest stable release per `Open XL's documentation page <https://www.ibm.com/docs/en/openxl-c-and-cpp-aix>`_
GCC 11 In C++11 or later only latest stable release per `GCC's release page <https://gcc.gnu.org/releases.html>`_
============ =============== ========================== =====================
FreeBSD 10+ i386, x86_64, arm
Linux i386, x86_64, arm, arm64
Windows x86_64
+AIX powerpc, powerpc64
=============== ========================= ============================
Generally speaking, libc++ should work on any platform that provides a fairly complete
'{} %{{libcxx}}/utils/run.py --execdir %T --env LIBPATH=%{{install}}/lib -- '.format(sys.executable)
))
+# LIBCXX-AIX-FIXME is the feature name used to XFAIL the
+# initial AIX failures until they can be properly diagnosed
+# and fixed. This allows easier detection of new test failures
+# and regressions. Note: New failures should not be suppressed
+# using this feature. (Also see llvm.org/PR52188)
+config.available_features.add('LIBCXX-AIX-FIXME')
+
import os, site
site.addsitedir(os.path.join('@LIBCXX_SOURCE_DIR@', 'utils'))
import libcxx.test.params, libcxx.test.newconfig
//
//===----------------------------------------------------------------------===//
+// XFAIL: LIBCXX-AIX-FIXME
+
// This test checks that we retain extern template instantiation declarations
// for members of <locale> even when the debug mode is enabled, which is
// necessary for correctness. See https://llvm.org/D94718 for details.
//===----------------------------------------------------------------------===//
// UNSUPPORTED: c++03, c++11
+// XFAIL: LIBCXX-AIX-FIXME
#include <cassert>
#include <cmath>
//
//===----------------------------------------------------------------------===//
+// XFAIL: LIBCXX-AIX-FIXME
+
// test libc++'s implementation of align_val_t, and the relevant new/delete
// overloads in all dialects when -faligned-allocation is present.
//
//===----------------------------------------------------------------------===//
+// XFAIL: LIBCXX-AIX-FIXME
+
// <memory>
// Test unique_ptr<T> with trivial_abi as return-type.
//
//===----------------------------------------------------------------------===//
+// XFAIL: LIBCXX-AIX-FIXME
+
// <memory>
// Test weak_ptr<T> with trivial_abi as return-type.
// UNSUPPORTED: c++03, c++11, c++14, c++17
// UNSUPPORTED: libcpp-no-concepts
// UNSUPPORTED: libcpp-has-no-incomplete-format
+// XFAIL: LIBCXX-AIX-FIXME
// <format>
// UNSUPPORTED: c++03, c++11, c++14, c++17
// UNSUPPORTED: libcpp-no-concepts
// UNSUPPORTED: libcpp-has-no-incomplete-format
+// XFAIL: LIBCXX-AIX-FIXME
// <format>
// UNSUPPORTED: c++03, c++11, c++14, c++17
// UNSUPPORTED: libcpp-no-concepts
// UNSUPPORTED: libcpp-has-no-incomplete-format
+// XFAIL: LIBCXX-AIX-FIXME
// <format>
// UNSUPPORTED: c++03, c++11, c++14, c++17
// UNSUPPORTED: libcpp-no-concepts
// UNSUPPORTED: libcpp-has-no-incomplete-format
+// XFAIL: LIBCXX-AIX-FIXME
// <format>
// UNSUPPORTED: libcpp-no-concepts
// UNSUPPORTED: libcpp-has-no-incomplete-format
+// Fails for 32-bit builds on AIX.
+// UNSUPPORTED: LIBCXX-AIX-FIXME
+
// UTF-32 doesn't work properly
// XFAIL: windows
//
// UNSUPPORTED: libcpp-has-no-threads, c++03, c++11, c++14
+// Fails for 32-bit builds.
+// UNSUPPORTED: LIBCXX-AIX-FIXME
+
// <atomic>
// static constexpr bool is_always_lock_free;
//
//===----------------------------------------------------------------------===//
+// XFAIL: LIBCXX-AIX-FIXME
+
// <math.h>
#include <math.h>
// XFAIL: suse-linux-enterprise-server-11
// XFAIL: darwin
// XFAIL: netbsd
+// XFAIL: LIBCXX-AIX-FIXME
// <uchar.h>
// XFAIL: suse-linux-enterprise-server-11
// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}}
+// XFAIL: LIBCXX-AIX-FIXME
// <system_error>
//
//===----------------------------------------------------------------------===//
+// XFAIL: LIBCXX-AIX-FIXME
+
// <system_error>
// class error_category
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// class directory_entry
//===----------------------------------------------------------------------===//
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
// The string reported on errors changed, which makes those tests fail when run
// against already-released libc++'s.
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// class directory_entry
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// The string reported on errors changed, which makes those tests fail when run
// against already-released libc++'s.
// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.15
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// class directory_entry
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// The string reported on errors changed, which makes those tests fail when run
// against already-released libc++'s.
// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.15
//===----------------------------------------------------------------------===//
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
// The string reported on errors changed, which makes those tests fail when run
// against already-released libc++'s.
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// class directory_entry
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// class directory_entry
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// class directory_iterator
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// class directory_iterator
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// class directory_iterator
//===----------------------------------------------------------------------===//
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
// <filesystem>
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// class directory_iterator
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// class directory_iterator
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// class directory_iterator
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// class path
//===----------------------------------------------------------------------===//
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
// <filesystem>
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// class recursive_directory_iterator
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// class recursive_directory_iterator
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// class directory_iterator
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// class recursive_directory_iterator
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// class recursive_directory_iterator
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// class recursive_directory_iterator
//===----------------------------------------------------------------------===//
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
// <filesystem>
//===----------------------------------------------------------------------===//
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
// <filesystem>
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// class recursive_directory_iterator
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// class recursive_directory_iterator
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// class recursive_directory_iterator
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// path canonical(const path& p);
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// void copy(const path& from, const path& to);
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// This test requires the dylib support introduced in D92769.
// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.15
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// This test requires the dylib support introduced in D92769.
// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.15
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// path current_path();
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// bool equivalent(path const& lhs, path const& rhs);
//===----------------------------------------------------------------------===//
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
// <filesystem>
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// The string reported on errors changed, which makes those tests fail when run
// against already-released libc++'s.
// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.15
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// uintmax_t hard_link_count(const path& p);
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// bool is_block_file(file_status s) noexcept
//===----------------------------------------------------------------------===//
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
// <filesystem>
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// bool is_directory(file_status s) noexcept
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// bool is_empty(path const& p);
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// bool is_fifo(file_status s) noexcept
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// bool is_other(file_status s) noexcept
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// bool is_regular_file(file_status s) noexcept
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// bool is_socket(file_status s) noexcept
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// bool is_symlink(file_status s) noexcept
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// The string reported on errors changed, which makes those tests fail when run
// against already-released libc++'s.
// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.15
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// void permissions(const path& p, perms prms,
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// path read_symlink(const path& p);
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// path proximate(const path& p, error_code &ec)
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// void rename(const path& old_p, const path& new_p);
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// void resize_file(const path& p, uintmax_t new_size);
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// space_info space(const path& p);
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// file_status status(const path& p);
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// file_status symlink_status(const path& p);
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
+
// <filesystem>
// path weakly_canonical(const path& p);
// UNSUPPORTED: c++03, c++11, c++14
// UNSUPPORTED: sanitizer-new-delete
+// XFAIL: LIBCXX-AIX-FIXME
+
// Aligned allocation was not provided before macosx10.14 and as a result we
// get availability errors when the deployment target is older than macosx10.14.
// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
// UNSUPPORTED: sanitizer-new-delete
// XFAIL: libcpp-no-vcruntime
+// XFAIL: LIBCXX-AIX-FIXME
#include <new>
#include <cstddef>
// UNSUPPORTED: sanitizer-new-delete
// XFAIL: libcpp-no-vcruntime
-
+// XFAIL: LIBCXX-AIX-FIXME
#include <new>
#include <cstddef>
// UNSUPPORTED: c++03, c++11, c++14
// UNSUPPORTED: sanitizer-new-delete
+// XFAIL: LIBCXX-AIX-FIXME
+
// Aligned allocation was not provided before macosx10.14 and as a result we
// get availability errors when the deployment target is older than macosx10.14.
// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13}}
// UNSUPPORTED: sanitizer-new-delete
// XFAIL: libcpp-no-vcruntime
+// XFAIL: LIBCXX-AIX-FIXME
#include <new>
#include <cstddef>
// std::timespec and std::timespec_get
// UNSUPPORTED: c++03, c++11, c++14
-
+// XFAIL: LIBCXX-AIX-FIXME
// ::timespec_get is provided by the C library, but it's marked as
// unavailable until macOS 10.15
// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13|14}}
//
//===----------------------------------------------------------------------===//
+// XFAIL: LIBCXX-AIX-FIXME
// REQUIRES: locale.en_US.UTF-8
// <locale>
//
//===----------------------------------------------------------------------===//
+// XFAIL: LIBCXX-AIX-FIXME
+
// <locale>
// template <> class ctype<char>
// REQUIRES: locale.en_US.UTF-8
// XFAIL: LIBCXX-WINDOWS-FIXME
+// XFAIL: LIBCXX-AIX-FIXME
// XFAIL: libcpp-has-no-wide-characters
// <locale>
// REQUIRES: locale.en_US.UTF-8
// XFAIL: LIBCXX-WINDOWS-FIXME
+// XFAIL: LIBCXX-AIX-FIXME
// XFAIL: libcpp-has-no-wide-characters
// <locale>
// XFAIL: netbsd
// XFAIL: LIBCXX-WINDOWS-FIXME
+// XFAIL: LIBCXX-AIX-FIXME
// REQUIRES: locale.zh_CN.UTF-8
// XFAIL: netbsd
// XFAIL: LIBCXX-WINDOWS-FIXME
+// XFAIL: LIBCXX-AIX-FIXME
// REQUIRES: locale.zh_CN.UTF-8
//
//===----------------------------------------------------------------------===//
+// XFAIL: LIBCXX-AIX-FIXME
+
// <locale>
// class num_put<charT, OutputIterator>
//
//===----------------------------------------------------------------------===//
+// XFAIL: LIBCXX-AIX-FIXME
+
// <locale>
// class num_put<charT, OutputIterator>
//
//===----------------------------------------------------------------------===//
+// XFAIL: LIBCXX-AIX-FIXME
+
// <cmath>
#include <cmath>
//
//===----------------------------------------------------------------------===//
+// XFAIL: LIBCXX-AIX-FIXME
+
// <complex>
// template<Arithmetic T>
//
//===----------------------------------------------------------------------===//
+// XFAIL: LIBCXX-AIX-FIXME
+
// <complex>
// template<Arithmetic T, Arithmetic U>
//
//===----------------------------------------------------------------------===//
+// XFAIL: LIBCXX-AIX-FIXME
+
// <complex>
// template<class T>
//
//===----------------------------------------------------------------------===//
+// XFAIL: LIBCXX-AIX-FIXME
+
// <complex>
// template<class T>
//
//===----------------------------------------------------------------------===//
+// XFAIL: LIBCXX-AIX-FIXME
+
// <complex>
// template<class T>
//
//===----------------------------------------------------------------------===//
+// XFAIL: LIBCXX-AIX-FIXME
+
// <complex>
// template<class T>
//
//===----------------------------------------------------------------------===//
+// XFAIL: LIBCXX-AIX-FIXME
+
// <complex>
// template<class T>
//
//===----------------------------------------------------------------------===//
+// XFAIL: LIBCXX-AIX-FIXME
+
// <complex>
// template<class T>
//
//===----------------------------------------------------------------------===//
+// XFAIL: LIBCXX-AIX-FIXME
+
// <complex>
// template<class T>
//
//===----------------------------------------------------------------------===//
+// XFAIL: LIBCXX-AIX-FIXME
+
// <complex>
// template<class T>
//
//===----------------------------------------------------------------------===//
+// XFAIL: LIBCXX-AIX-FIXME
+
// <complex>
// template<class T>
//
//===----------------------------------------------------------------------===//
+// XFAIL: LIBCXX-AIX-FIXME
+
// <complex>
// template<class T>
//
//===----------------------------------------------------------------------===//
+// XFAIL: LIBCXX-AIX-FIXME
+
// <complex>
// template<class T>
//
//===----------------------------------------------------------------------===//
+// XFAIL: LIBCXX-AIX-FIXME
+
// <complex>
// template<class T>
//
//===----------------------------------------------------------------------===//
+// XFAIL: LIBCXX-AIX-FIXME
+
// <complex>
// template<class T>
//===----------------------------------------------------------------------===//
//
// UNSUPPORTED: c++03, c++11, c++14, c++17
+// XFAIL: LIBCXX-AIX-FIXME
// <numeric>
// template <class _Float>
//===----------------------------------------------------------------------===//
// XFAIL: LIBCXX-WINDOWS-FIXME
+// XFAIL: LIBCXX-AIX-FIXME
// <regex>
//===----------------------------------------------------------------------===//
// XFAIL: LIBCXX-WINDOWS-FIXME
+// XFAIL: LIBCXX-AIX-FIXME
// <regex>
//===----------------------------------------------------------------------===//
//
// UNSUPPORTED: libcpp-has-no-threads
+// XFAIL: LIBCXX-AIX-FIXME
// <thread>
//===----------------------------------------------------------------------===//
//
// UNSUPPORTED: libcpp-has-no-threads
+// XFAIL: LIBCXX-AIX-FIXME
// <thread>
//===----------------------------------------------------------------------===//
// UNSUPPORTED: c++03
+// XFAIL: LIBCXX-AIX-FIXME
// <functional>
//
//===----------------------------------------------------------------------===//
+// Fails for 32-bit builds on AIX.
+// UNSUPPORTED: LIBCXX-AIX-FIXME
+
// type_traits
// alignment_of
- exit_status: -1 # Agent was lost
limit: 2
timeout_in_minutes: 120
+
+ - label: "AIX (32-bit)"
+ command: "libcxx/utils/ci/run-buildbot aix"
+ artifact_paths:
+ - "**/test-results.xml"
+ retry:
+ automatic:
+ - exit_status: -1 # Agent was lost
+ limit: 2
+ env:
+ OBJECT_MODE: "32"
+ agents:
+ queue: libcxx-builders
+ os: aix
+ retry:
+ automatic:
+ - exit_status: -1 # Agent was lost
+ limit: 2
+ timeout_in_minutes: 120
+
+ - label: "AIX (64-bit)"
+ command: "libcxx/utils/ci/run-buildbot aix"
+ artifact_paths:
+ - "**/test-results.xml"
+ env:
+ OBJECT_MODE: "64"
+ agents:
+ queue: libcxx-builders
+ os: aix
+ retry:
+ automatic:
+ - exit_status: -1 # Agent was lost
+ limit: 2
+ timeout_in_minutes: 120