mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-25 14:28:54 -04:00

Libc++ needs to know when aligned allocation is supported by clang, but is otherwise unavailable at link time. Otherwise, libc++ will incorrectly end up generating calls to `__builtin_operator_new`/`__builtin_operator_delete` with alignment arguments. This patch implements the following changes: * The `__cpp_aligned_new` feature test macro to no longer be defined when aligned allocation is otherwise enabled but unavailable. * The Darwin driver no longer passes `-faligned-alloc-unavailable` when the user manually specifies `-faligned-allocation` or `-fno-aligned-allocation`. * Instead of a warning Clang now generates a hard error when an aligned allocation or deallocation function is referenced but unavailable. Patch by Eric Fiselier. Reviewers: rsmith, vsapsai, erik.pilkington, ahatanak, dexonsmith Reviewed By: rsmith Subscribers: Quuxplusone, cfe-commits Differential Revision: https://reviews.llvm.org/D45015 llvm-svn: 338934
64 lines
2.4 KiB
C++
64 lines
2.4 KiB
C++
// RUN: %clang -target x86_64-apple-macosx10.12 -c -### %s 2>&1 \
|
|
// RUN: | FileCheck %s -check-prefix=UNAVAILABLE
|
|
//
|
|
// RUN: %clang -target arm64-apple-ios10 -c -### %s 2>&1 \
|
|
// RUN: | FileCheck %s -check-prefix=UNAVAILABLE
|
|
//
|
|
// RUN: %clang -target arm64-apple-tvos10 -c -### %s 2>&1 \
|
|
// RUN: | FileCheck %s -check-prefix=UNAVAILABLE
|
|
//
|
|
// RUN: %clang -target thumbv7-apple-watchos3 -c -### %s 2>&1 \
|
|
// RUN: | FileCheck %s -check-prefix=UNAVAILABLE
|
|
//
|
|
// RUN: %clang -target x86_64-apple-darwin -mios-simulator-version-min=10 \
|
|
// RUN: -c -### %s 2>&1 \
|
|
// RUN: | FileCheck %s -check-prefix=UNAVAILABLE
|
|
//
|
|
// RUN: %clang -target x86_64-apple-darwin -mtvos-simulator-version-min=10 \
|
|
// RUN: -c -### %s 2>&1 \
|
|
// RUN: | FileCheck %s -check-prefix=UNAVAILABLE
|
|
//
|
|
// RUN: %clang -target x86_64-apple-darwin -mwatchos-simulator-version-min=3 \
|
|
// RUN: -c -### %s 2>&1 \
|
|
// RUN: | FileCheck %s -check-prefix=UNAVAILABLE
|
|
//
|
|
// UNAVAILABLE: "-faligned-alloc-unavailable"
|
|
|
|
// RUN: %clang -target x86_64-apple-macosx10.13 -c -### %s 2>&1 \
|
|
// RUN: | FileCheck %s -check-prefix=AVAILABLE
|
|
//
|
|
// RUN: %clang -target arm64-apple-ios11 -c -### %s 2>&1 \
|
|
// RUN: | FileCheck %s -check-prefix=AVAILABLE
|
|
//
|
|
// RUN: %clang -target arm64-apple-tvos11 -c -### %s 2>&1 \
|
|
// RUN: | FileCheck %s -check-prefix=AVAILABLE
|
|
//
|
|
// RUN: %clang -target armv7k-apple-watchos4 -c -### %s 2>&1 \
|
|
// RUN: | FileCheck %s -check-prefix=AVAILABLE
|
|
//
|
|
// RUN: %clang -target x86_64-unknown-linux-gnu -c -### %s 2>&1 \
|
|
// RUN: | FileCheck %s -check-prefix=AVAILABLE
|
|
//
|
|
// RUN: %clang -target x86_64-apple-darwin -mios-simulator-version-min=11 \
|
|
// RUN: -c -### %s 2>&1 \
|
|
// RUN: | FileCheck %s -check-prefix=AVAILABLE
|
|
//
|
|
// RUN: %clang -target x86_64-apple-darwin -mtvos-simulator-version-min=11 \
|
|
// RUN: -c -### %s 2>&1 \
|
|
// RUN: | FileCheck %s -check-prefix=AVAILABLE
|
|
//
|
|
// RUN: %clang -target x86_64-apple-darwin -mwatchos-simulator-version-min=4 \
|
|
// RUN: -c -### %s 2>&1 \
|
|
// RUN: | FileCheck %s -check-prefix=AVAILABLE
|
|
//
|
|
// Check that passing -faligned-allocation or -fno-aligned-allocation stops the
|
|
// driver from passing -faligned-alloc-unavailable to cc1.
|
|
//
|
|
// RUN: %clang -target x86_64-apple-macosx10.12 -faligned-allocation -c -### %s 2>&1 \
|
|
// RUN: | FileCheck %s -check-prefix=AVAILABLE
|
|
//
|
|
// RUN: %clang -target x86_64-apple-macosx10.12 -fno-aligned-allocation -c -### %s 2>&1 \
|
|
// RUN: | FileCheck %s -check-prefix=AVAILABLE
|
|
|
|
// AVAILABLE-NOT: "-faligned-alloc-unavailable"
|