[libcxx] Fix XFAILs for aligned allocation tests on older OSX versions

Summary:
Since r338934, Clang emits an error when aligned allocation functions are
used in conjunction with a system libc++ dylib that does not support those
functions. This causes some tests to fail when testing against older libc++
dylibs. This commit marks those tests as UNSUPPORTED, and also documents the
various reasons for the tests being unsupported.

Reviewers: vsapsai, EricWF

Subscribers: christof, dexonsmith, cfe-commits, mclow.lists, EricWF

Differential Revision: https://reviews.llvm.org/D50341

llvm-svn: 339743
This commit is contained in:
Louis Dionne 2018-08-15 00:30:03 +00:00
parent feb0427c91
commit 7c6baa2184
16 changed files with 190 additions and 99 deletions

View File

@ -8,12 +8,14 @@
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
// UNSUPPORTED: c++98, c++03, c++11, c++14 // UNSUPPORTED: c++98, c++03, c++11, c++14
// XFAIL: with_system_cxx_lib=macosx10.12
// XFAIL: with_system_cxx_lib=macosx10.11 // aligned allocation functions are not provided prior to macosx10.13
// XFAIL: with_system_cxx_lib=macosx10.10 // XFAIL: macosx10.12
// XFAIL: with_system_cxx_lib=macosx10.9 // XFAIL: macosx10.11
// XFAIL: with_system_cxx_lib=macosx10.8 // XFAIL: macosx10.10
// XFAIL: with_system_cxx_lib=macosx10.7 // XFAIL: macosx10.9
// XFAIL: macosx10.8
// XFAIL: macosx10.7
#include <new> #include <new>

View File

@ -12,17 +12,27 @@
// UNSUPPORTED: sanitizer-new-delete, c++98, c++03, c++11, c++14 // UNSUPPORTED: sanitizer-new-delete, c++98, c++03, c++11, c++14
// Older Clang versions do not support this // Older Clang versions do not support this
// XFAIL: clang-3, apple-clang-7, apple-clang-8 // UNSUPPORTED: clang-3, apple-clang-7, apple-clang-8
// None of the current GCC compilers support this. // None of the current GCC compilers support this.
// XFAIL: gcc-5, gcc-6 // UNSUPPORTED: gcc-5, gcc-6
// XFAIL: with_system_cxx_lib=macosx10.12 // dylibs shipped before macosx10.13 do not provide aligned allocation, so that's a link error
// XFAIL: with_system_cxx_lib=macosx10.11 // UNSUPPORTED: with_system_cxx_lib=macosx10.12
// XFAIL: with_system_cxx_lib=macosx10.10 // UNSUPPORTED: with_system_cxx_lib=macosx10.11
// XFAIL: with_system_cxx_lib=macosx10.9 // UNSUPPORTED: with_system_cxx_lib=macosx10.10
// XFAIL: with_system_cxx_lib=macosx10.7 // UNSUPPORTED: with_system_cxx_lib=macosx10.9
// XFAIL: with_system_cxx_lib=macosx10.8 // UNSUPPORTED: with_system_cxx_lib=macosx10.8
// UNSUPPORTED: with_system_cxx_lib=macosx10.7
// Using aligned allocation functions is a compiler error when deploying to
// platforms older than macosx10.13
// UNSUPPORTED: macosx10.12
// UNSUPPORTED: macosx10.11
// UNSUPPORTED: macosx10.10
// UNSUPPORTED: macosx10.9
// UNSUPPORTED: macosx10.8
// UNSUPPORTED: macosx10.7
// On Windows libc++ doesn't provide its own definitions for new/delete // On Windows libc++ doesn't provide its own definitions for new/delete
// but instead depends on the ones in VCRuntime. However VCRuntime does not // but instead depends on the ones in VCRuntime. However VCRuntime does not

View File

@ -15,13 +15,22 @@
// FIXME change this to XFAIL. // FIXME change this to XFAIL.
// UNSUPPORTED: no-aligned-allocation && !gcc // UNSUPPORTED: no-aligned-allocation && !gcc
// XFAIL: with_system_cxx_lib=macosx10.12 // dylibs shipped before macosx10.13 do not provide aligned allocation, so that's a link error
// XFAIL: with_system_cxx_lib=macosx10.11 // UNSUPPORTED: with_system_cxx_lib=macosx10.12
// XFAIL: with_system_cxx_lib=macosx10.10 // UNSUPPORTED: with_system_cxx_lib=macosx10.11
// XFAIL: with_system_cxx_lib=macosx10.9 // UNSUPPORTED: with_system_cxx_lib=macosx10.10
// XFAIL: with_system_cxx_lib=macosx10.7 // UNSUPPORTED: with_system_cxx_lib=macosx10.9
// XFAIL: with_system_cxx_lib=macosx10.8 // UNSUPPORTED: with_system_cxx_lib=macosx10.8
// UNSUPPORTED: with_system_cxx_lib=macosx10.7
// Using aligned allocation functions is a compiler error when deploying to
// platforms older than macosx10.13
// UNSUPPORTED: macosx10.12
// UNSUPPORTED: macosx10.11
// UNSUPPORTED: macosx10.10
// UNSUPPORTED: macosx10.9
// UNSUPPORTED: macosx10.8
// UNSUPPORTED: macosx10.7
// On Windows libc++ doesn't provide its own definitions for new/delete // On Windows libc++ doesn't provide its own definitions for new/delete
// but instead depends on the ones in VCRuntime. However VCRuntime does not // but instead depends on the ones in VCRuntime. However VCRuntime does not

View File

@ -15,12 +15,22 @@
// FIXME turn this into an XFAIL // FIXME turn this into an XFAIL
// UNSUPPORTED: no-aligned-allocation && !gcc // UNSUPPORTED: no-aligned-allocation && !gcc
// XFAIL: with_system_cxx_lib=macosx10.12 // dylibs shipped before macosx10.13 do not provide aligned allocation, so that's a link error
// XFAIL: with_system_cxx_lib=macosx10.11 // UNSUPPORTED: with_system_cxx_lib=macosx10.12
// XFAIL: with_system_cxx_lib=macosx10.10 // UNSUPPORTED: with_system_cxx_lib=macosx10.11
// XFAIL: with_system_cxx_lib=macosx10.9 // UNSUPPORTED: with_system_cxx_lib=macosx10.10
// XFAIL: with_system_cxx_lib=macosx10.7 // UNSUPPORTED: with_system_cxx_lib=macosx10.9
// XFAIL: with_system_cxx_lib=macosx10.8 // UNSUPPORTED: with_system_cxx_lib=macosx10.8
// UNSUPPORTED: with_system_cxx_lib=macosx10.7
// Using aligned allocation functions is a compiler error when deploying to
// platforms older than macosx10.13
// UNSUPPORTED: macosx10.12
// UNSUPPORTED: macosx10.11
// UNSUPPORTED: macosx10.10
// UNSUPPORTED: macosx10.9
// UNSUPPORTED: macosx10.8
// UNSUPPORTED: macosx10.7
// On Windows libc++ doesn't provide its own definitions for new/delete // On Windows libc++ doesn't provide its own definitions for new/delete
// but instead depends on the ones in VCRuntime. However VCRuntime does not // but instead depends on the ones in VCRuntime. However VCRuntime does not

View File

@ -10,12 +10,24 @@
// UNSUPPORTED: c++98, c++03, c++11, c++14 // UNSUPPORTED: c++98, c++03, c++11, c++14
// UNSUPPORTED: sanitizer-new-delete // UNSUPPORTED: sanitizer-new-delete
// XFAIL: with_system_cxx_lib=macosx10.12 // dylibs shipped before macosx10.13 do not provide aligned allocation, so our
// XFAIL: with_system_cxx_lib=macosx10.11 // custom aligned allocation functions are not called and the test fails
// XFAIL: with_system_cxx_lib=macosx10.10 // UNSUPPORTED: with_system_cxx_lib=macosx10.12
// XFAIL: with_system_cxx_lib=macosx10.9 // UNSUPPORTED: with_system_cxx_lib=macosx10.11
// XFAIL: with_system_cxx_lib=macosx10.7 // UNSUPPORTED: with_system_cxx_lib=macosx10.10
// XFAIL: with_system_cxx_lib=macosx10.8 // UNSUPPORTED: with_system_cxx_lib=macosx10.9
// UNSUPPORTED: with_system_cxx_lib=macosx10.8
// UNSUPPORTED: with_system_cxx_lib=macosx10.7
// Our custom aligned allocation functions are not called when deploying to
// platforms older than macosx10.13, since those platforms don't support
// aligned allocation.
// UNSUPPORTED: macosx10.12
// UNSUPPORTED: macosx10.11
// UNSUPPORTED: macosx10.10
// UNSUPPORTED: macosx10.9
// UNSUPPORTED: macosx10.8
// UNSUPPORTED: macosx10.7
// XFAIL: no-aligned-allocation && !gcc // XFAIL: no-aligned-allocation && !gcc

View File

@ -15,11 +15,12 @@
// UNSUPPORTED: c++98, c++03, c++11, c++14, c++17 // UNSUPPORTED: c++98, c++03, c++11, c++14, c++17
// UNSUPPORTED: clang-3.3, clang-3.4, clang-3.5, clang-3.6, clang-3.7, clang-3.8 // UNSUPPORTED: clang-3.3, clang-3.4, clang-3.5, clang-3.6, clang-3.7, clang-3.8
#include <new> // REQUIRES: -faligned-allocation
// RUN: %compile %verify -faligned-allocation
#include "test_macros.h" #include <new>
int main () int main ()
{ {
::operator new[](4); // expected-error {{ignoring return value of function declared with 'nodiscard' attribute}} ::operator new[](4); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
} }

View File

@ -0,0 +1,26 @@
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <new>
// void* operator new[](std::size_t, std::align_val_t);
// UNSUPPORTED: c++98, c++03, c++11, c++14, c++17
// UNSUPPORTED: clang-3.3, clang-3.4, clang-3.5, clang-3.6, clang-3.7, clang-3.8
// REQUIRES: -faligned-allocation
// RUN: %compile %verify -faligned-allocation
#include <new>
int main ()
{
::operator new[](4, std::align_val_t{4}); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
}

View File

@ -15,11 +15,12 @@
// UNSUPPORTED: c++98, c++03, c++11, c++14, c++17 // UNSUPPORTED: c++98, c++03, c++11, c++14, c++17
// UNSUPPORTED: clang-3.3, clang-3.4, clang-3.5, clang-3.6, clang-3.7, clang-3.8 // UNSUPPORTED: clang-3.3, clang-3.4, clang-3.5, clang-3.6, clang-3.7, clang-3.8
#include <new> // REQUIRES: -faligned-allocation
// RUN: %compile %verify -faligned-allocation
#include "test_macros.h" #include <new>
int main () int main ()
{ {
::operator new[](4, std::align_val_t{4}, std::nothrow); // expected-error {{ignoring return value of function declared with 'nodiscard' attribute}} ::operator new[](4, std::align_val_t{4}, std::nothrow); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
} }

View File

@ -15,11 +15,12 @@
// UNSUPPORTED: c++98, c++03, c++11, c++14, c++17 // UNSUPPORTED: c++98, c++03, c++11, c++14, c++17
// UNSUPPORTED: clang-3.3, clang-3.4, clang-3.5, clang-3.6, clang-3.7, clang-3.8 // UNSUPPORTED: clang-3.3, clang-3.4, clang-3.5, clang-3.6, clang-3.7, clang-3.8
#include <new> // REQUIRES: -faligned-allocation
// RUN: %compile %verify -faligned-allocation
#include "test_macros.h" #include <new>
int main () int main ()
{ {
::operator new[](4, std::nothrow); // expected-error {{ignoring return value of function declared with 'nodiscard' attribute}} ::operator new[](4, std::nothrow); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
} }

View File

@ -11,17 +11,27 @@
// UNSUPPORTED: sanitizer-new-delete, c++98, c++03, c++11, c++14 // UNSUPPORTED: sanitizer-new-delete, c++98, c++03, c++11, c++14
// Older Clang versions do not support this // Older Clang versions do not support this
// XFAIL: clang-3, apple-clang-7, apple-clang-8 // UNSUPPORTED: clang-3, apple-clang-7, apple-clang-8
// None of the current GCC compilers support this. // None of the current GCC compilers support this.
// XFAIL: gcc-5, gcc-6 // UNSUPPORTED: gcc-5, gcc-6
// XFAIL: with_system_cxx_lib=macosx10.12 // dylibs shipped before macosx10.13 do not provide aligned allocation, so that's a link error
// XFAIL: with_system_cxx_lib=macosx10.11 // UNSUPPORTED: with_system_cxx_lib=macosx10.12
// XFAIL: with_system_cxx_lib=macosx10.10 // UNSUPPORTED: with_system_cxx_lib=macosx10.11
// XFAIL: with_system_cxx_lib=macosx10.9 // UNSUPPORTED: with_system_cxx_lib=macosx10.10
// XFAIL: with_system_cxx_lib=macosx10.7 // UNSUPPORTED: with_system_cxx_lib=macosx10.9
// XFAIL: with_system_cxx_lib=macosx10.8 // UNSUPPORTED: with_system_cxx_lib=macosx10.8
// UNSUPPORTED: with_system_cxx_lib=macosx10.7
// Using aligned allocation functions is a compiler error when deploying to
// platforms older than macosx10.13
// UNSUPPORTED: macosx10.12
// UNSUPPORTED: macosx10.11
// UNSUPPORTED: macosx10.10
// UNSUPPORTED: macosx10.9
// UNSUPPORTED: macosx10.8
// UNSUPPORTED: macosx10.7
// On Windows libc++ doesn't provide its own definitions for new/delete // On Windows libc++ doesn't provide its own definitions for new/delete
// but instead depends on the ones in VCRuntime. However VCRuntime does not // but instead depends on the ones in VCRuntime. However VCRuntime does not

View File

@ -9,12 +9,22 @@
// UNSUPPORTED: c++98, c++03, c++11, c++14 // UNSUPPORTED: c++98, c++03, c++11, c++14
// XFAIL: with_system_cxx_lib=macosx10.12 // dylibs shipped before macosx10.13 do not provide aligned allocation, so that's a link error
// XFAIL: with_system_cxx_lib=macosx10.11 // UNSUPPORTED: with_system_cxx_lib=macosx10.12
// XFAIL: with_system_cxx_lib=macosx10.10 // UNSUPPORTED: with_system_cxx_lib=macosx10.11
// XFAIL: with_system_cxx_lib=macosx10.9 // UNSUPPORTED: with_system_cxx_lib=macosx10.10
// XFAIL: with_system_cxx_lib=macosx10.7 // UNSUPPORTED: with_system_cxx_lib=macosx10.9
// XFAIL: with_system_cxx_lib=macosx10.8 // UNSUPPORTED: with_system_cxx_lib=macosx10.8
// UNSUPPORTED: with_system_cxx_lib=macosx10.7
// Using aligned allocation functions is a compiler error when deploying to
// platforms older than macosx10.13
// UNSUPPORTED: macosx10.12
// UNSUPPORTED: macosx10.11
// UNSUPPORTED: macosx10.10
// UNSUPPORTED: macosx10.9
// UNSUPPORTED: macosx10.8
// UNSUPPORTED: macosx10.7
// asan and msan will not call the new handler. // asan and msan will not call the new handler.
// UNSUPPORTED: sanitizer-new-delete // UNSUPPORTED: sanitizer-new-delete

View File

@ -9,12 +9,22 @@
// UNSUPPORTED: c++98, c++03, c++11, c++14 // UNSUPPORTED: c++98, c++03, c++11, c++14
// XFAIL: with_system_cxx_lib=macosx10.12 // dylibs shipped before macosx10.13 do not provide aligned allocation, so that's a link error
// XFAIL: with_system_cxx_lib=macosx10.11 // UNSUPPORTED: with_system_cxx_lib=macosx10.12
// XFAIL: with_system_cxx_lib=macosx10.10 // UNSUPPORTED: with_system_cxx_lib=macosx10.11
// XFAIL: with_system_cxx_lib=macosx10.9 // UNSUPPORTED: with_system_cxx_lib=macosx10.10
// XFAIL: with_system_cxx_lib=macosx10.7 // UNSUPPORTED: with_system_cxx_lib=macosx10.9
// XFAIL: with_system_cxx_lib=macosx10.8 // UNSUPPORTED: with_system_cxx_lib=macosx10.8
// UNSUPPORTED: with_system_cxx_lib=macosx10.7
// Using aligned allocation functions is a compiler error when deploying to
// platforms older than macosx10.13
// UNSUPPORTED: macosx10.12
// UNSUPPORTED: macosx10.11
// UNSUPPORTED: macosx10.10
// UNSUPPORTED: macosx10.9
// UNSUPPORTED: macosx10.8
// UNSUPPORTED: macosx10.7
// asan and msan will not call the new handler. // asan and msan will not call the new handler.
// UNSUPPORTED: sanitizer-new-delete // UNSUPPORTED: sanitizer-new-delete

View File

@ -10,12 +10,24 @@
// UNSUPPORTED: c++98, c++03, c++11, c++14 // UNSUPPORTED: c++98, c++03, c++11, c++14
// UNSUPPORTED: sanitizer-new-delete // UNSUPPORTED: sanitizer-new-delete
// XFAIL: with_system_cxx_lib=macosx10.12 // dylibs shipped before macosx10.13 do not provide aligned allocation, so our
// XFAIL: with_system_cxx_lib=macosx10.11 // custom aligned allocation functions are not called and the test fails
// XFAIL: with_system_cxx_lib=macosx10.10 // UNSUPPORTED: with_system_cxx_lib=macosx10.12
// XFAIL: with_system_cxx_lib=macosx10.9 // UNSUPPORTED: with_system_cxx_lib=macosx10.11
// XFAIL: with_system_cxx_lib=macosx10.7 // UNSUPPORTED: with_system_cxx_lib=macosx10.10
// XFAIL: with_system_cxx_lib=macosx10.8 // UNSUPPORTED: with_system_cxx_lib=macosx10.9
// UNSUPPORTED: with_system_cxx_lib=macosx10.8
// UNSUPPORTED: with_system_cxx_lib=macosx10.7
// Our custom aligned allocation functions are not called when deploying to
// platforms older than macosx10.13, since those platforms don't support
// aligned allocation.
// UNSUPPORTED: macosx10.12
// UNSUPPORTED: macosx10.11
// UNSUPPORTED: macosx10.10
// UNSUPPORTED: macosx10.9
// UNSUPPORTED: macosx10.8
// UNSUPPORTED: macosx10.7
// NOTE: gcc doesn't provide -faligned-allocation flag to test for // NOTE: gcc doesn't provide -faligned-allocation flag to test for
// XFAIL: no-aligned-allocation && !gcc // XFAIL: no-aligned-allocation && !gcc

View File

@ -1,25 +0,0 @@
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <new>
// void* operator new(std::size_t, std::align_val_t);
// UNSUPPORTED: c++98, c++03, c++11, c++14, c++17
// UNSUPPORTED: clang-3.3, clang-3.4, clang-3.5, clang-3.6, clang-3.7, clang-3.8
#include <new>
#include "test_macros.h"
int main ()
{
::operator new(4, std::align_val_t{4}); // expected-error {{ignoring return value of function declared with 'nodiscard' attribute}}
}

View File

@ -10,16 +10,17 @@
// <new> // <new>
// void* operator new[](std::size_t, std::align_val_t); // void* operator new(std::size_t, std::align_val_t);
// UNSUPPORTED: c++98, c++03, c++11, c++14, c++17 // UNSUPPORTED: c++98, c++03, c++11, c++14, c++17
// UNSUPPORTED: clang-3.3, clang-3.4, clang-3.5, clang-3.6, clang-3.7, clang-3.8 // UNSUPPORTED: clang-3.3, clang-3.4, clang-3.5, clang-3.6, clang-3.7, clang-3.8
#include <new> // REQUIRES: -faligned-allocation
// RUN: %compile %verify -faligned-allocation
#include "test_macros.h" #include <new>
int main () int main ()
{ {
::operator new[](4, std::align_val_t{4}); // expected-error {{ignoring return value of function declared with 'nodiscard' attribute}} ::operator new(4, std::align_val_t{4}); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
} }

View File

@ -15,11 +15,12 @@
// UNSUPPORTED: c++98, c++03, c++11, c++14, c++17 // UNSUPPORTED: c++98, c++03, c++11, c++14, c++17
// UNSUPPORTED: clang-3.3, clang-3.4, clang-3.5, clang-3.6, clang-3.7, clang-3.8 // UNSUPPORTED: clang-3.3, clang-3.4, clang-3.5, clang-3.6, clang-3.7, clang-3.8
#include <new> // REQUIRES: -faligned-allocation
// RUN: %compile %verify -faligned-allocation
#include "test_macros.h" #include <new>
int main () int main ()
{ {
::operator new(4, std::align_val_t{4}, std::nothrow); // expected-error {{ignoring return value of function declared with 'nodiscard' attribute}} ::operator new(4, std::align_val_t{4}, std::nothrow); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}}
} }