diff options
author | dim <dim@FreeBSD.org> | 2015-01-18 16:23:48 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2015-01-18 16:23:48 +0000 |
commit | c86b984ea8ecb3e944dc3de48539f4c1f65851ea (patch) | |
tree | 3eb853da77d46cc77c4b017525a422f9ddb1385b /test/Preprocessor | |
parent | c696171ff15f0ee60dea4abfd99a135473c95656 (diff) | |
download | FreeBSD-src-c86b984ea8ecb3e944dc3de48539f4c1f65851ea.zip FreeBSD-src-c86b984ea8ecb3e944dc3de48539f4c1f65851ea.tar.gz |
Vendor import of clang RELEASE_360/rc1 tag r226102 (effectively, 3.6.0 RC1):
https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_360/rc1@226102
Diffstat (limited to 'test/Preprocessor')
24 files changed, 924 insertions, 66 deletions
diff --git a/test/Preprocessor/_Pragma.c b/test/Preprocessor/_Pragma.c index 15725a4..120e754 100644 --- a/test/Preprocessor/_Pragma.c +++ b/test/Preprocessor/_Pragma.c @@ -11,3 +11,5 @@ _Pragma("message(\"foo \\\\\\\\ bar\")") // expected-warning {{foo \\ bar}} #ifdef macro #error #define invalid #endif + +_Pragma( // expected-error{{_Pragma takes a parenthesized string literal}} diff --git a/test/Preprocessor/aarch64-target-features.c b/test/Preprocessor/aarch64-target-features.c index 137a1d8..4e9e6c7 100644 --- a/test/Preprocessor/aarch64-target-features.c +++ b/test/Preprocessor/aarch64-target-features.c @@ -12,8 +12,11 @@ // CHECK: __ARM_FEATURE_CLZ 1 // CHECK-NOT: __ARM_FEATURE_CRC32 1 // CHECK-NOT: __ARM_FEATURE_CRYPTO 1 +// CHECK: __ARM_FEATURE_DIRECTED_ROUNDING 1 // CHECK: __ARM_FEATURE_DIV 1 // CHECK: __ARM_FEATURE_FMA 1 +// CHECK: __ARM_FEATURE_IDIV 1 +// CHECK: __ARM_FEATURE_NUMERIC_MAXMIN 1 // CHECK: __ARM_FEATURE_UNALIGNED 1 // CHECK: __ARM_FP 0xe // CHECK: __ARM_FP16_FORMAT_IEEE 1 @@ -70,6 +73,9 @@ // CHECK-MCPU-A53: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+neon" "-target-feature" "+crc" "-target-feature" "+crypto" // CHECK-MCPU-A57: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+neon" "-target-feature" "+crc" "-target-feature" "+crypto" +// RUN: %clang -target x86_64-apple-macosx -arch arm64 -### -c %s 2>&1 | FileCheck --check-prefix=CHECK-ARCH-ARM64 %s +// CHECK-ARCH-ARM64: "-target-cpu" "cyclone" "-target-feature" "+neon" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+zcm" "-target-feature" "+zcz" + // RUN: %clang -target aarch64 -march=armv8-a+fp+simd+crc+crypto -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MARCH-1 %s // RUN: %clang -target aarch64 -march=armv8-a+nofp+nosimd+nocrc+nocrypto+fp+simd+crc+crypto -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MARCH-1 %s // RUN: %clang -target aarch64 -march=armv8-a+nofp+nosimd+nocrc+nocrypto -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MARCH-2 %s diff --git a/test/Preprocessor/arm-acle-6.4.c b/test/Preprocessor/arm-acle-6.4.c index a656f76..fc228d0 100644 --- a/test/Preprocessor/arm-acle-6.4.c +++ b/test/Preprocessor/arm-acle-6.4.c @@ -5,6 +5,8 @@ // CHECK-CORTEX-M0-NOT: __ARM_ARCH_ISA_ARM // CHECK-CORTEX-M0: __ARM_ARCH_ISA_THUMB 1 // CHECK-CORTEX-M0: __ARM_ARCH_PROFILE 'M' +// CHECK-CORTEX-M0-NOT: __ARM_FEATURE_NUMERIC_MAXMIN +// CHECK-CORTEX-M0-NOT: __ARM_FEATURE_DIRECTED_ROUNDING // RUN: %clang -target arm-eabi -mcpu=arm810 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-ARM810 @@ -13,6 +15,8 @@ // CHECK-ARM810: __ARM_ARCH_ISA_ARM 1 // CHECK-ARM810-NOT: __ARM_ARCH_ISA_THUMB // CHECK-ARM810-NOT: __ARM_ARCH_PROFILE +// CHECK-ARM810-NOT: __ARM_FEATURE_NUMERIC_MAXMIN +// CHECK-ARM810-NOT: __ARM_FEATURE_DIRECTED_ROUNDING // RUN: %clang -target arm-eabi -mcpu=arm7tdmi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-ARM7TDMI @@ -29,6 +33,8 @@ // CHECK-CORTEX-A7: __ARM_ARCH_ISA_ARM 1 // CHECK-CORTEX-A7: __ARM_ARCH_ISA_THUMB 2 // CHECK-CORTEX-A7: __ARM_ARCH_PROFILE 'A' +// CHECK-CORTEX-A7-NOT: __ARM_FEATURE_NUMERIC_MAXMIN +// CHECK-CORTEX-A7-NOT: __ARM_FEATURE_DIRECTED_ROUNDING // RUN: %clang -target arm-eabi -mcpu=cortex-r4 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-CORTEX-R4 diff --git a/test/Preprocessor/arm-acle-6.5.c b/test/Preprocessor/arm-acle-6.5.c new file mode 100644 index 0000000..9db83b7 --- /dev/null +++ b/test/Preprocessor/arm-acle-6.5.c @@ -0,0 +1,22 @@ +// RUN: %clang -target arm-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-DEFAULT + +// CHECK-DEFAULT-NOT: __ARM_FP + +// RUN: %clang -target arm-eabi -mfpu=vfp -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-SP-DP +// RUN: %clang -target arm-eabi -mfpu=vfp3 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-SP-DP +// RUN: %clang -target arm-eabi -mfpu=vfp3-d16 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-SP-DP +// RUN: %clang -target arm-eabi -mfpu=neon -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-SP-DP +// RUN: %clang -target arm-eabi -mfpu=vfp3 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-SP-DP +// RUN: %clang -target armv7-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-SP-DP + +// CHECK-SP-DP: __ARM_FP 0xC + +// RUN: %clang -target arm-eabi -mfpu=vfpv4 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-SP-DP-HP +// RUN: %clang -target arm-eabi -mfpu=vfpv4-d16 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-SP-DP-HP +// RUN: %clang -target arm-eabi -mfpu=fp-armv8 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-SP-DP-HP +// RUN: %clang -target arm-eabi -mfpu=neon-fp-armv8 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-SP-DP-HP +// RUN: %clang -target arm-eabi -mfpu=crypto-neon-fp-armv8 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-SP-DP-HP +// RUN: %clang -target armv8-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-SP-DP-HP + +// CHECK-SP-DP-HP: __ARM_FP 0xE + diff --git a/test/Preprocessor/arm-target-features.c b/test/Preprocessor/arm-target-features.c index 08fe29a..e95a50d 100644 --- a/test/Preprocessor/arm-target-features.c +++ b/test/Preprocessor/arm-target-features.c @@ -3,18 +3,24 @@ // CHECK: __ARM_ARCH 8 // CHECK: __ARM_ARCH_8A__ 1 // CHECK: __ARM_FEATURE_CRC32 1 +// CHECK: __ARM_FEATURE_DIRECTED_ROUNDING 1 +// CHECK: __ARM_FEATURE_NUMERIC_MAXMIN 1 // RUN: %clang -target armv7a-none-linux-gnu -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-V7 %s // CHECK-V7: __ARMEL__ 1 // CHECK-V7: __ARM_ARCH 7 // CHECK-V7: __ARM_ARCH_7A__ 1 // CHECK-V7-NOT: __ARM_FEATURE_CRC32 +// CHECK-V7-NOT: __ARM_FEATURE_NUMERIC_MAXMIN +// CHECK-V7-NOT: __ARM_FEATURE_DIRECTED_ROUNDING // RUN: %clang -target armv8a -mfloat-abi=hard -x c -E -dM %s | FileCheck --check-prefix=CHECK-V8-BAREHF %s // CHECK-V8-BAREHF: __ARMEL__ 1 // CHECK-V8-BAREHF: __ARM_ARCH 8 // CHECK-V8-BAREHF: __ARM_ARCH_8A__ 1 // CHECK-V8-BAREHF: __ARM_FEATURE_CRC32 1 +// CHECK-V8-BAREHF: __ARM_FEATURE_DIRECTED_ROUNDING 1 +// CHECK-V8-BAREHF: __ARM_FEATURE_NUMERIC_MAXMIN 1 // CHECK-V8-BAREHF: __ARM_NEON__ 1 // CHECK-V8-BAREHF: __VFP_FP__ 1 @@ -137,18 +143,31 @@ // NONEON-A5:#define __ARM_VFPV4__ 1 // FIXME: add check for further predefines +// Test whether predefines are as expected when targeting ep9312. +// RUN: %clang -target armv4t -mcpu=ep9312 -x c -E -dM %s -o - | FileCheck --check-prefix=A4T %s +// A4T-NOT:#define __ARM_FEATURE_DSP + +// Test whether predefines are as expected when targeting arm10tdmi. +// RUN: %clang -target armv5 -mcpu=arm10tdmi -x c -E -dM %s -o - | FileCheck --check-prefix=A5T %s +// A5T-NOT:#define __ARM_FEATURE_DSP + // Test whether predefines are as expected when targeting cortex-a5. // RUN: %clang -target armv7 -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck --check-prefix=A5-ARM %s // A5-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__ +// A5-ARM:#define __ARM_FEATURE_DSP // RUN: %clang -target armv7 -mthumb -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck --check-prefix=A5-THUMB %s // A5-THUMB-NOT:#define __ARM_ARCH_EXT_IDIV__ +// A5-THUMB:#define __ARM_FEATURE_DSP // RUN: %clang -target armv7 -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck --check-prefix=A5 %s // RUN: %clang -target armv7 -mthumb -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck --check-prefix=A5 %s // A5:#define __ARM_ARCH 7 // A5:#define __ARM_ARCH_7A__ 1 // A5:#define __ARM_ARCH_PROFILE 'A' +// A5-NOT: #define __ARM_FEATURE_NUMERIC_MAXMIN +// A5-NOT: #define __ARM_FEATURE_DIRECTED_ROUNDING +// A5:#define __ARM_FEATURE_DSP // Test whether predefines are as expected when targeting cortex-a7. // RUN: %clang -target armv7 -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck --check-prefix=A7 %s @@ -157,20 +176,25 @@ // A7:#define __ARM_ARCH_7A__ 1 // A7:#define __ARM_ARCH_EXT_IDIV__ 1 // A7:#define __ARM_ARCH_PROFILE 'A' +// A7:#define __ARM_FEATURE_DSP // Test whether predefines are as expected when targeting cortex-a8. // RUN: %clang -target armv7 -mcpu=cortex-a8 -x c -E -dM %s -o - | FileCheck --check-prefix=A8-ARM %s // A8-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__ +// A8-ARM:#define __ARM_FEATURE_DSP // RUN: %clang -target armv7 -mthumb -mcpu=cortex-a8 -x c -E -dM %s -o - | FileCheck --check-prefix=A8-THUMB %s // A8-THUMB-NOT:#define __ARM_ARCH_EXT_IDIV__ +// A8-THUMB:#define __ARM_FEATURE_DSP // Test whether predefines are as expected when targeting cortex-a9. // RUN: %clang -target armv7 -mcpu=cortex-a9 -x c -E -dM %s -o - | FileCheck --check-prefix=A9-ARM %s // A9-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__ +// A9-ARM:#define __ARM_FEATURE_DSP // RUN: %clang -target armv7 -mthumb -mcpu=cortex-a9 -x c -E -dM %s -o - | FileCheck --check-prefix=A9-THUMB %s // A9-THUMB-NOT:#define __ARM_ARCH_EXT_IDIV__ +// A9-THUMB:#define __ARM_FEATURE_DSP // Check that -mfpu works properly for Cortex-A12 (enabled by default). @@ -191,53 +215,91 @@ // A12:#define __ARM_ARCH_7A__ 1 // A12:#define __ARM_ARCH_EXT_IDIV__ 1 // A12:#define __ARM_ARCH_PROFILE 'A' +// A12:#define __ARM_FEATURE_DSP // Test whether predefines are as expected when targeting cortex-a15. // RUN: %clang -target armv7 -mcpu=cortex-a15 -x c -E -dM %s -o - | FileCheck --check-prefix=A15-ARM %s // A15-ARM:#define __ARM_ARCH_EXT_IDIV__ 1 +// A15-ARM:#define __ARM_FEATURE_DSP // RUN: %clang -target armv7 -mthumb -mcpu=cortex-a15 -x c -E -dM %s -o - | FileCheck --check-prefix=A15-THUMB %s // A15-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1 +// A15-THUMB:#define __ARM_FEATURE_DSP + +// Check that -mfpu works properly for Cortex-A17 (enabled by default). +// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a17 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A17 %s +// RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a17 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A17 %s +// DEFAULTFPU-A17:#define __ARM_NEON__ 1 +// DEFAULTFPU-A17:#define __ARM_VFPV4__ 1 + +// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a17 -mfpu=none -x c -E -dM %s -o - | FileCheck --check-prefix=FPUNONE-A17 %s +// RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a17 -mfpu=none -x c -E -dM %s -o - | FileCheck --check-prefix=FPUNONE-A17 %s +// FPUNONE-A17-NOT:#define __ARM_NEON__ 1 +// FPUNONE-A17-NOT:#define __ARM_VFPV4__ 1 + +// Test whether predefines are as expected when targeting cortex-a17. +// RUN: %clang -target armv7 -mcpu=cortex-a17 -x c -E -dM %s -o - | FileCheck --check-prefix=A17 %s +// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a17 -x c -E -dM %s -o - | FileCheck --check-prefix=A17 %s +// A17:#define __ARM_ARCH 7 +// A17:#define __ARM_ARCH_7A__ 1 +// A17:#define __ARM_ARCH_EXT_IDIV__ 1 +// A17:#define __ARM_ARCH_PROFILE 'A' +// A17:#define __ARM_FEATURE_DSP // Test whether predefines are as expected when targeting swift. // RUN: %clang -target armv7s -mcpu=swift -x c -E -dM %s -o - | FileCheck --check-prefix=SWIFT-ARM %s // SWIFT-ARM:#define __ARM_ARCH_EXT_IDIV__ 1 +// SWIFT:#define __ARM_FEATURE_DSP // RUN: %clang -target armv7s -mthumb -mcpu=swift -x c -E -dM %s -o - | FileCheck --check-prefix=SWIFT-THUMB %s // SWIFT-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1 +// SWIFT-THUMB:#define __ARM_FEATURE_DSP // Test whether predefines are as expected when targeting cortex-a53. // RUN: %clang -target armv8 -mcpu=cortex-a53 -x c -E -dM %s -o - | FileCheck --check-prefix=A53-ARM %s // A53-ARM:#define __ARM_ARCH_EXT_IDIV__ 1 +// A53-ARM:#define __ARM_FEATURE_DSP // RUN: %clang -target armv8 -mthumb -mcpu=cortex-a53 -x c -E -dM %s -o - | FileCheck --check-prefix=A53-THUMB %s // A53-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1 +// A53-THUMB:#define __ARM_FEATURE_DSP // Test whether predefines are as expected when targeting cortex-r5. // RUN: %clang -target armv7 -mcpu=cortex-r5 -x c -E -dM %s -o - | FileCheck --check-prefix=R5-ARM %s // R5-ARM:#define __ARM_ARCH_EXT_IDIV__ 1 +// R5-ARM:#define __ARM_FEATURE_DSP // RUN: %clang -target armv7 -mthumb -mcpu=cortex-r5 -x c -E -dM %s -o - | FileCheck --check-prefix=R5-THUMB %s // R5-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1 +// R5-THUMB:#define __ARM_FEATURE_DSP // Test whether predefines are as expected when targeting cortex-m0. // RUN: %clang -target armv7 -mthumb -mcpu=cortex-m0 -x c -E -dM %s -o - | FileCheck --check-prefix=M0-THUMB %s // M0-THUMB-NOT:#define __ARM_ARCH_EXT_IDIV__ +// M0-THUMB-NOT:#define __ARM_FEATURE_DSP // Test whether predefines are as expected when targeting cortex-m3. // RUN: %clang -target armv7 -mthumb -mcpu=cortex-m3 -x c -E -dM %s -o - | FileCheck --check-prefix=M3-THUMB %s // M3-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1 +// M3-THUMB-NOT:#define __ARM_FEATURE_DSP // Test whether predefines are as expected when targeting cortex-m4. // RUN: %clang -target armv7 -mthumb -mcpu=cortex-m4 -x c -E -dM %s -o - | FileCheck --check-prefix=M4-THUMB %s // M4-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1 +// M4-THUMB:#define __ARM_FEATURE_DSP + +// Test whether predefines are as expected when targeting cortex-m7. +// RUN: %clang -target armv7 -mthumb -mcpu=cortex-m7 -x c -E -dM %s -o - | FileCheck --check-prefix=M7-THUMB %s +// M7-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1 +// M7-THUMB:#define __ARM_FEATURE_DSP // Test whether predefines are as expected when targeting krait. // RUN: %clang -target armv7 -mcpu=krait -x c -E -dM %s -o - | FileCheck --check-prefix=KRAIT-ARM %s // KRAIT-ARM:#define __ARM_ARCH_EXT_IDIV__ 1 +// KRAIT-ARM:#define __ARM_FEATURE_DSP // KRAIT-ARM:#define __ARM_VFPV4__ 1 // RUN: %clang -target armv7 -mthumb -mcpu=krait -x c -E -dM %s -o - | FileCheck --check-prefix=KRAIT-THUMB %s // KRAIT-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1 +// KRAIT-THUMB:#define __ARM_FEATURE_DSP // KRAIT-THUMB:#define __ARM_VFPV4__ 1 - diff --git a/test/Preprocessor/cxx_oper_keyword_ms_compat.cpp b/test/Preprocessor/cxx_oper_keyword_ms_compat.cpp index 8e1351e..24a3898 100644 --- a/test/Preprocessor/cxx_oper_keyword_ms_compat.cpp +++ b/test/Preprocessor/cxx_oper_keyword_ms_compat.cpp @@ -1,6 +1,8 @@ // RUN: %clang_cc1 %s -E -verify -fms-extensions // expected-no-diagnostics +#pragma clang diagnostic ignored "-Wkeyword-macro" + bool f() { // Check that operators still work before redefining them. #if compl 0 bitand 1 diff --git a/test/Preprocessor/feature_tests.c b/test/Preprocessor/feature_tests.c index 5a2c300..fbde6a6 100644 --- a/test/Preprocessor/feature_tests.c +++ b/test/Preprocessor/feature_tests.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 %s -triple=i686-apple-darwin9 +// RUN: %clang_cc1 %s -triple=i686-apple-darwin9 -verify -DVERIFY // RUN: %clang_cc1 %s -E -triple=i686-apple-darwin9 #ifndef __has_feature #error Should have __has_feature @@ -53,3 +53,10 @@ #if !HAS_BUILTIN(MY_ALIAS_BUILTIN) || !HAS_FEATURE(MY_ALIAS_FEATURE) #error Expansion should have occurred #endif + +#ifdef VERIFY +// expected-error@+2 {{builtin feature check macro requires a parenthesized identifier}} +// expected-error@+1 {{expected value in expression}} +#if __has_feature('x') +#endif +#endif diff --git a/test/Preprocessor/has_attribute.c b/test/Preprocessor/has_attribute.c index 5fe060e..0ef5b48 100644 --- a/test/Preprocessor/has_attribute.c +++ b/test/Preprocessor/has_attribute.c @@ -48,3 +48,8 @@ int has_no_volatile_attribute(); #if !__has_attribute(dllexport) int does_not_have_dllexport(); #endif + +// CHECK: does_not_have_uuid +#if !__has_attribute(uuid) + int does_not_have_uuid +#endif diff --git a/test/Preprocessor/has_attribute.cpp b/test/Preprocessor/has_attribute.cpp new file mode 100644 index 0000000..1ab4502 --- /dev/null +++ b/test/Preprocessor/has_attribute.cpp @@ -0,0 +1,68 @@ +// RUN: %clang_cc1 -triple i386-unknown-unknown -fms-compatibility -std=c++11 -E %s -o - | FileCheck %s + +// CHECK: has_cxx11_carries_dep +#if __has_cpp_attribute(carries_dependency) + int has_cxx11_carries_dep(); +#endif + +// CHECK: has_clang_fallthrough_1 +#if __has_cpp_attribute(clang::fallthrough) + int has_clang_fallthrough_1(); +#endif + +// CHECK: does_not_have_selectany +#if !__has_cpp_attribute(selectany) + int does_not_have_selectany(); +#endif + +// The attribute name can be bracketed with double underscores. +// CHECK: has_clang_fallthrough_2 +#if __has_cpp_attribute(clang::__fallthrough__) + int has_clang_fallthrough_2(); +#endif + +// The scope cannot be bracketed with double underscores. +// CHECK: does_not_have___clang___fallthrough +#if !__has_cpp_attribute(__clang__::fallthrough) + int does_not_have___clang___fallthrough(); +#endif + +// Test that C++11, target-specific attributes behave properly. + +// CHECK: does_not_have_mips16 +#if !__has_cpp_attribute(gnu::mips16) + int does_not_have_mips16(); +#endif + +// Test that the version numbers of attributes listed in SD-6 are supported +// correctly. + +// CHECK: has_cxx11_carries_dep_vers +#if __has_cpp_attribute(carries_dependency) == 200809 + int has_cxx11_carries_dep_vers(); +#endif + +// CHECK: has_cxx11_noreturn_vers +#if __has_cpp_attribute(noreturn) == 200809 + int has_cxx11_noreturn_vers(); +#endif + +// CHECK: has_cxx14_deprecated_vers +#if __has_cpp_attribute(deprecated) == 201309 + int has_cxx14_deprecated_vers(); +#endif + +// CHECK: has_declspec_uuid +#if __has_declspec_attribute(uuid) + int has_declspec_uuid(); +#endif + +// CHECK: has_declspec_uuid2 +#if __has_declspec_attribute(__uuid__) + int has_declspec_uuid2(); +#endif + +// CHECK: does_not_have_declspec_fallthrough +#if !__has_declspec_attribute(fallthrough) + int does_not_have_declspec_fallthrough(); +#endif diff --git a/test/Preprocessor/headermap-rel2.c b/test/Preprocessor/headermap-rel2.c index 430854d..d61f338 100644 --- a/test/Preprocessor/headermap-rel2.c +++ b/test/Preprocessor/headermap-rel2.c @@ -1,8 +1,8 @@ // This uses a headermap with this entry: // someheader.h -> Product/someheader.h -// RUN: %clang_cc1 -triple x86_64-apple-darwin13 -v -fsyntax-only %s -iquote %S/Inputs/headermap-rel2/project-headers.hmap -isysroot %S/Inputs/headermap-rel2/system -I %S/Inputs/headermap-rel2 -H -// RUN: %clang_cc1 -triple x86_64-apple-darwin13 -fsyntax-only %s -iquote %S/Inputs/headermap-rel2/project-headers.hmap -isysroot %S/Inputs/headermap-rel2/system -I %S/Inputs/headermap-rel2 -H 2> %t.out +// RUN: %clang_cc1 -v -fsyntax-only %s -iquote %S/Inputs/headermap-rel2/project-headers.hmap -isystem %S/Inputs/headermap-rel2/system/usr/include -I %S/Inputs/headermap-rel2 -H +// RUN: %clang_cc1 -fsyntax-only %s -iquote %S/Inputs/headermap-rel2/project-headers.hmap -isystem %S/Inputs/headermap-rel2/system/usr/include -I %S/Inputs/headermap-rel2 -H 2> %t.out // RUN: FileCheck %s -input-file %t.out // CHECK: Product/someheader.h diff --git a/test/Preprocessor/init.c b/test/Preprocessor/init.c index 7b73ce0..4f32114 100644 --- a/test/Preprocessor/init.c +++ b/test/Preprocessor/init.c @@ -80,7 +80,7 @@ // COMMON:#define __ORDER_LITTLE_ENDIAN__ 1234 // COMMON:#define __ORDER_PDP_ENDIAN__ 3412 // COMMON:#define __STDC_HOSTED__ 1 -// COMMON:#define __STDC_VERSION__ +// COMMON:#define __STDC_VERSION__ 201112L // COMMON:#define __STDC__ 1 // COMMON:#define __VERSION__ // COMMON:#define __clang__ 1 @@ -422,7 +422,6 @@ // AARCH64:#define __aarch64__ 1 // // RUN: %clang_cc1 -E -dM -ffreestanding -triple=aarch64_be-none-none < /dev/null | FileCheck -check-prefix AARCH64-BE %s -// RUN: %clang_cc1 -E -dM -ffreestanding -triple=arm64_be-none-none < /dev/null | FileCheck -check-prefix AARCH64-BE %s // // AARCH64-BE:#define _LP64 1 // AARCH64-BE:#define __AARCH64EB__ 1 @@ -802,6 +801,199 @@ // AARCH64-NETBSD:#define __WINT_TYPE__ int // AARCH64-NETBSD:#define __WINT_WIDTH__ 32 // AARCH64-NETBSD:#define __aarch64__ 1 +// +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=aarch64-freebsd11 < /dev/null | FileCheck -check-prefix AARCH64-FREEBSD %s +// +// AARCH64-FREEBSD:#define _LP64 1 +// AARCH64-FREEBSD-NOT:#define __AARCH64EB__ 1 +// AARCH64-FREEBSD:#define __AARCH64EL__ 1 +// AARCH64-FREEBSD-NOT:#define __AARCH_BIG_ENDIAN 1 +// AARCH64-FREEBSD:#define __ARM_64BIT_STATE 1 +// AARCH64-FREEBSD:#define __ARM_ARCH 8 +// AARCH64-FREEBSD:#define __ARM_ARCH_ISA_A64 1 +// AARCH64-FREEBSD-NOT:#define __ARM_BIG_ENDIAN 1 +// AARCH64-FREEBSD:#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__ +// AARCH64-FREEBSD:#define __CHAR16_TYPE__ unsigned short +// AARCH64-FREEBSD:#define __CHAR32_TYPE__ unsigned int +// AARCH64-FREEBSD:#define __CHAR_BIT__ 8 +// AARCH64-FREEBSD:#define __DBL_DENORM_MIN__ 4.9406564584124654e-324 +// AARCH64-FREEBSD:#define __DBL_DIG__ 15 +// AARCH64-FREEBSD:#define __DBL_EPSILON__ 2.2204460492503131e-16 +// AARCH64-FREEBSD:#define __DBL_HAS_DENORM__ 1 +// AARCH64-FREEBSD:#define __DBL_HAS_INFINITY__ 1 +// AARCH64-FREEBSD:#define __DBL_HAS_QUIET_NAN__ 1 +// AARCH64-FREEBSD:#define __DBL_MANT_DIG__ 53 +// AARCH64-FREEBSD:#define __DBL_MAX_10_EXP__ 308 +// AARCH64-FREEBSD:#define __DBL_MAX_EXP__ 1024 +// AARCH64-FREEBSD:#define __DBL_MAX__ 1.7976931348623157e+308 +// AARCH64-FREEBSD:#define __DBL_MIN_10_EXP__ (-307) +// AARCH64-FREEBSD:#define __DBL_MIN_EXP__ (-1021) +// AARCH64-FREEBSD:#define __DBL_MIN__ 2.2250738585072014e-308 +// AARCH64-FREEBSD:#define __DECIMAL_DIG__ 36 +// AARCH64-FREEBSD:#define __ELF__ 1 +// AARCH64-FREEBSD:#define __FLT_DENORM_MIN__ 1.40129846e-45F +// AARCH64-FREEBSD:#define __FLT_DIG__ 6 +// AARCH64-FREEBSD:#define __FLT_EPSILON__ 1.19209290e-7F +// AARCH64-FREEBSD:#define __FLT_EVAL_METHOD__ 0 +// AARCH64-FREEBSD:#define __FLT_HAS_DENORM__ 1 +// AARCH64-FREEBSD:#define __FLT_HAS_INFINITY__ 1 +// AARCH64-FREEBSD:#define __FLT_HAS_QUIET_NAN__ 1 +// AARCH64-FREEBSD:#define __FLT_MANT_DIG__ 24 +// AARCH64-FREEBSD:#define __FLT_MAX_10_EXP__ 38 +// AARCH64-FREEBSD:#define __FLT_MAX_EXP__ 128 +// AARCH64-FREEBSD:#define __FLT_MAX__ 3.40282347e+38F +// AARCH64-FREEBSD:#define __FLT_MIN_10_EXP__ (-37) +// AARCH64-FREEBSD:#define __FLT_MIN_EXP__ (-125) +// AARCH64-FREEBSD:#define __FLT_MIN__ 1.17549435e-38F +// AARCH64-FREEBSD:#define __FLT_RADIX__ 2 +// AARCH64-FREEBSD:#define __FreeBSD__ 11 +// AARCH64-FREEBSD:#define __INT16_C_SUFFIX__ {{$}} +// AARCH64-FREEBSD:#define __INT16_FMTd__ "hd" +// AARCH64-FREEBSD:#define __INT16_FMTi__ "hi" +// AARCH64-FREEBSD:#define __INT16_MAX__ 32767 +// AARCH64-FREEBSD:#define __INT16_TYPE__ short +// AARCH64-FREEBSD:#define __INT32_C_SUFFIX__ {{$}} +// AARCH64-FREEBSD:#define __INT32_FMTd__ "d" +// AARCH64-FREEBSD:#define __INT32_FMTi__ "i" +// AARCH64-FREEBSD:#define __INT32_MAX__ 2147483647 +// AARCH64-FREEBSD:#define __INT32_TYPE__ int +// AARCH64-FREEBSD:#define __INT64_C_SUFFIX__ L +// AARCH64-FREEBSD:#define __INT64_FMTd__ "ld" +// AARCH64-FREEBSD:#define __INT64_FMTi__ "li" +// AARCH64-FREEBSD:#define __INT64_MAX__ 9223372036854775807L +// AARCH64-FREEBSD:#define __INT64_TYPE__ long int +// AARCH64-FREEBSD:#define __INT8_C_SUFFIX__ {{$}} +// AARCH64-FREEBSD:#define __INT8_FMTd__ "hhd" +// AARCH64-FREEBSD:#define __INT8_FMTi__ "hhi" +// AARCH64-FREEBSD:#define __INT8_MAX__ 127 +// AARCH64-FREEBSD:#define __INT8_TYPE__ signed char +// AARCH64-FREEBSD:#define __INTMAX_C_SUFFIX__ L +// AARCH64-FREEBSD:#define __INTMAX_FMTd__ "ld" +// AARCH64-FREEBSD:#define __INTMAX_FMTi__ "li" +// AARCH64-FREEBSD:#define __INTMAX_MAX__ 9223372036854775807L +// AARCH64-FREEBSD:#define __INTMAX_TYPE__ long int +// AARCH64-FREEBSD:#define __INTMAX_WIDTH__ 64 +// AARCH64-FREEBSD:#define __INTPTR_FMTd__ "ld" +// AARCH64-FREEBSD:#define __INTPTR_FMTi__ "li" +// AARCH64-FREEBSD:#define __INTPTR_MAX__ 9223372036854775807L +// AARCH64-FREEBSD:#define __INTPTR_TYPE__ long int +// AARCH64-FREEBSD:#define __INTPTR_WIDTH__ 64 +// AARCH64-FREEBSD:#define __INT_FAST16_FMTd__ "hd" +// AARCH64-FREEBSD:#define __INT_FAST16_FMTi__ "hi" +// AARCH64-FREEBSD:#define __INT_FAST16_MAX__ 32767 +// AARCH64-FREEBSD:#define __INT_FAST16_TYPE__ short +// AARCH64-FREEBSD:#define __INT_FAST32_FMTd__ "d" +// AARCH64-FREEBSD:#define __INT_FAST32_FMTi__ "i" +// AARCH64-FREEBSD:#define __INT_FAST32_MAX__ 2147483647 +// AARCH64-FREEBSD:#define __INT_FAST32_TYPE__ int +// AARCH64-FREEBSD:#define __INT_FAST64_FMTd__ "ld" +// AARCH64-FREEBSD:#define __INT_FAST64_FMTi__ "li" +// AARCH64-FREEBSD:#define __INT_FAST64_MAX__ 9223372036854775807L +// AARCH64-FREEBSD:#define __INT_FAST64_TYPE__ long int +// AARCH64-FREEBSD:#define __INT_FAST8_FMTd__ "hhd" +// AARCH64-FREEBSD:#define __INT_FAST8_FMTi__ "hhi" +// AARCH64-FREEBSD:#define __INT_FAST8_MAX__ 127 +// AARCH64-FREEBSD:#define __INT_FAST8_TYPE__ signed char +// AARCH64-FREEBSD:#define __INT_LEAST16_FMTd__ "hd" +// AARCH64-FREEBSD:#define __INT_LEAST16_FMTi__ "hi" +// AARCH64-FREEBSD:#define __INT_LEAST16_MAX__ 32767 +// AARCH64-FREEBSD:#define __INT_LEAST16_TYPE__ short +// AARCH64-FREEBSD:#define __INT_LEAST32_FMTd__ "d" +// AARCH64-FREEBSD:#define __INT_LEAST32_FMTi__ "i" +// AARCH64-FREEBSD:#define __INT_LEAST32_MAX__ 2147483647 +// AARCH64-FREEBSD:#define __INT_LEAST32_TYPE__ int +// AARCH64-FREEBSD:#define __INT_LEAST64_FMTd__ "ld" +// AARCH64-FREEBSD:#define __INT_LEAST64_FMTi__ "li" +// AARCH64-FREEBSD:#define __INT_LEAST64_MAX__ 9223372036854775807L +// AARCH64-FREEBSD:#define __INT_LEAST64_TYPE__ long int +// AARCH64-FREEBSD:#define __INT_LEAST8_FMTd__ "hhd" +// AARCH64-FREEBSD:#define __INT_LEAST8_FMTi__ "hhi" +// AARCH64-FREEBSD:#define __INT_LEAST8_MAX__ 127 +// AARCH64-FREEBSD:#define __INT_LEAST8_TYPE__ signed char +// AARCH64-FREEBSD:#define __INT_MAX__ 2147483647 +// AARCH64-FREEBSD:#define __LDBL_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966L +// AARCH64-FREEBSD:#define __LDBL_DIG__ 33 +// AARCH64-FREEBSD:#define __LDBL_EPSILON__ 1.92592994438723585305597794258492732e-34L +// AARCH64-FREEBSD:#define __LDBL_HAS_DENORM__ 1 +// AARCH64-FREEBSD:#define __LDBL_HAS_INFINITY__ 1 +// AARCH64-FREEBSD:#define __LDBL_HAS_QUIET_NAN__ 1 +// AARCH64-FREEBSD:#define __LDBL_MANT_DIG__ 113 +// AARCH64-FREEBSD:#define __LDBL_MAX_10_EXP__ 4932 +// AARCH64-FREEBSD:#define __LDBL_MAX_EXP__ 16384 +// AARCH64-FREEBSD:#define __LDBL_MAX__ 1.18973149535723176508575932662800702e+4932L +// AARCH64-FREEBSD:#define __LDBL_MIN_10_EXP__ (-4931) +// AARCH64-FREEBSD:#define __LDBL_MIN_EXP__ (-16381) +// AARCH64-FREEBSD:#define __LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L +// AARCH64-FREEBSD:#define __LITTLE_ENDIAN__ 1 +// AARCH64-FREEBSD:#define __LONG_LONG_MAX__ 9223372036854775807LL +// AARCH64-FREEBSD:#define __LONG_MAX__ 9223372036854775807L +// AARCH64-FREEBSD:#define __LP64__ 1 +// AARCH64-FREEBSD:#define __POINTER_WIDTH__ 64 +// AARCH64-FREEBSD:#define __PTRDIFF_TYPE__ long int +// AARCH64-FREEBSD:#define __PTRDIFF_WIDTH__ 64 +// AARCH64-FREEBSD:#define __SCHAR_MAX__ 127 +// AARCH64-FREEBSD:#define __SHRT_MAX__ 32767 +// AARCH64-FREEBSD:#define __SIG_ATOMIC_MAX__ 2147483647 +// AARCH64-FREEBSD:#define __SIG_ATOMIC_WIDTH__ 32 +// AARCH64-FREEBSD:#define __SIZEOF_DOUBLE__ 8 +// AARCH64-FREEBSD:#define __SIZEOF_FLOAT__ 4 +// AARCH64-FREEBSD:#define __SIZEOF_INT128__ 16 +// AARCH64-FREEBSD:#define __SIZEOF_INT__ 4 +// AARCH64-FREEBSD:#define __SIZEOF_LONG_DOUBLE__ 16 +// AARCH64-FREEBSD:#define __SIZEOF_LONG_LONG__ 8 +// AARCH64-FREEBSD:#define __SIZEOF_LONG__ 8 +// AARCH64-FREEBSD:#define __SIZEOF_POINTER__ 8 +// AARCH64-FREEBSD:#define __SIZEOF_PTRDIFF_T__ 8 +// AARCH64-FREEBSD:#define __SIZEOF_SHORT__ 2 +// AARCH64-FREEBSD:#define __SIZEOF_SIZE_T__ 8 +// AARCH64-FREEBSD:#define __SIZEOF_WCHAR_T__ 4 +// AARCH64-FREEBSD:#define __SIZEOF_WINT_T__ 4 +// AARCH64-FREEBSD:#define __SIZE_MAX__ 18446744073709551615UL +// AARCH64-FREEBSD:#define __SIZE_TYPE__ long unsigned int +// AARCH64-FREEBSD:#define __SIZE_WIDTH__ 64 +// AARCH64-FREEBSD:#define __UINT16_C_SUFFIX__ {{$}} +// AARCH64-FREEBSD:#define __UINT16_MAX__ 65535 +// AARCH64-FREEBSD:#define __UINT16_TYPE__ unsigned short +// AARCH64-FREEBSD:#define __UINT32_C_SUFFIX__ U +// AARCH64-FREEBSD:#define __UINT32_MAX__ 4294967295U +// AARCH64-FREEBSD:#define __UINT32_TYPE__ unsigned int +// AARCH64-FREEBSD:#define __UINT64_C_SUFFIX__ UL +// AARCH64-FREEBSD:#define __UINT64_MAX__ 18446744073709551615UL +// AARCH64-FREEBSD:#define __UINT64_TYPE__ long unsigned int +// AARCH64-FREEBSD:#define __UINT8_C_SUFFIX__ {{$}} +// AARCH64-FREEBSD:#define __UINT8_MAX__ 255 +// AARCH64-FREEBSD:#define __UINT8_TYPE__ unsigned char +// AARCH64-FREEBSD:#define __UINTMAX_C_SUFFIX__ UL +// AARCH64-FREEBSD:#define __UINTMAX_MAX__ 18446744073709551615UL +// AARCH64-FREEBSD:#define __UINTMAX_TYPE__ long unsigned int +// AARCH64-FREEBSD:#define __UINTMAX_WIDTH__ 64 +// AARCH64-FREEBSD:#define __UINTPTR_MAX__ 18446744073709551615UL +// AARCH64-FREEBSD:#define __UINTPTR_TYPE__ long unsigned int +// AARCH64-FREEBSD:#define __UINTPTR_WIDTH__ 64 +// AARCH64-FREEBSD:#define __UINT_FAST16_MAX__ 65535 +// AARCH64-FREEBSD:#define __UINT_FAST16_TYPE__ unsigned short +// AARCH64-FREEBSD:#define __UINT_FAST32_MAX__ 4294967295U +// AARCH64-FREEBSD:#define __UINT_FAST32_TYPE__ unsigned int +// AARCH64-FREEBSD:#define __UINT_FAST64_MAX__ 18446744073709551615UL +// AARCH64-FREEBSD:#define __UINT_FAST64_TYPE__ long unsigned int +// AARCH64-FREEBSD:#define __UINT_FAST8_MAX__ 255 +// AARCH64-FREEBSD:#define __UINT_FAST8_TYPE__ unsigned char +// AARCH64-FREEBSD:#define __UINT_LEAST16_MAX__ 65535 +// AARCH64-FREEBSD:#define __UINT_LEAST16_TYPE__ unsigned short +// AARCH64-FREEBSD:#define __UINT_LEAST32_MAX__ 4294967295U +// AARCH64-FREEBSD:#define __UINT_LEAST32_TYPE__ unsigned int +// AARCH64-FREEBSD:#define __UINT_LEAST64_MAX__ 18446744073709551615UL +// AARCH64-FREEBSD:#define __UINT_LEAST64_TYPE__ long unsigned int +// AARCH64-FREEBSD:#define __UINT_LEAST8_MAX__ 255 +// AARCH64-FREEBSD:#define __UINT_LEAST8_TYPE__ unsigned char +// AARCH64-FREEBSD:#define __USER_LABEL_PREFIX__ +// AARCH64-FREEBSD:#define __WCHAR_MAX__ 4294967295U +// AARCH64-FREEBSD:#define __WCHAR_TYPE__ unsigned int +// AARCH64-FREEBSD:#define __WCHAR_UNSIGNED__ 1 +// AARCH64-FREEBSD:#define __WCHAR_WIDTH__ 32 +// AARCH64-FREEBSD:#define __WINT_TYPE__ int +// AARCH64-FREEBSD:#define __WINT_WIDTH__ 32 +// AARCH64-FREEBSD:#define __aarch64__ 1 // RUN: %clang_cc1 -E -dM -ffreestanding -triple=arm-none-none < /dev/null | FileCheck -check-prefix ARM %s // @@ -1765,12 +1957,13 @@ // ARM-NETBSD:#define __arm 1 // ARM-NETBSD:#define __arm__ 1 -// RUN: %clang -target arm -arch armv7s -x c -E -dM %s -o - | FileCheck --check-prefix=ARM-DARWIN-NO-EABI %s -// RUN: %clang -target arm -arch armv6m -x c -E -dM %s -o - | FileCheck --check-prefix=ARM-DARWIN-NO-EABI %s -// RUN: %clang -target arm -arch armv7m -x c -E -dM %s -o - | FileCheck --check-prefix=ARM-DARWIN-NO-EABI %s -// RUN: %clang -target arm -arch armv7em -x c -E -dM %s -o - | FileCheck --check-prefix=ARM-DARWIN-NO-EABI %s +// RUN: %clang -target arm-apple-darwin-eabi -arch armv7s -x c -E -dM %s -o - | FileCheck --check-prefix=ARM-DARWIN-NO-EABI %s +// RUN: %clang -target arm-apple-darwin-eabi -arch armv6m -x c -E -dM %s -o - | FileCheck --check-prefix=ARM-DARWIN-EABI %s +// RUN: %clang -target arm-apple-darwin-eabi -arch armv7m -x c -E -dM %s -o - | FileCheck --check-prefix=ARM-DARWIN-EABI %s +// RUN: %clang -target arm-apple-darwin-eabi -arch armv7em -x c -E -dM %s -o - | FileCheck --check-prefix=ARM-DARWIN-EABI %s // RUN: %clang -target thumbv7-apple-darwin-eabi -arch armv7 -x c -E -dM %s -o - | FileCheck --check-prefix=ARM-DARWIN-NO-EABI %s // ARM-DARWIN-NO-EABI-NOT: #define __ARM_EABI__ 1 +// ARM-DARWIN-EABI: #define __ARM_EABI__ 1 // Check that -mhwdiv works properly for targets which don't have the hwdiv feature enabled by default. @@ -2546,7 +2739,7 @@ // MIPS32BE:#define __SIZE_TYPE__ unsigned int // MIPS32BE:#define __SIZE_WIDTH__ 32 // MIPS32BE:#define __STDC_HOSTED__ 0 -// MIPS32BE:#define __STDC_VERSION__ 199901L +// MIPS32BE:#define __STDC_VERSION__ 201112L // MIPS32BE:#define __STDC__ 1 // MIPS32BE:#define __UINT16_C_SUFFIX__ {{$}} // MIPS32BE:#define __UINT16_MAX__ 65535 @@ -2945,6 +3138,7 @@ // MIPS64BE:#define __SIG_ATOMIC_WIDTH__ 32 // MIPS64BE:#define __SIZEOF_DOUBLE__ 8 // MIPS64BE:#define __SIZEOF_FLOAT__ 4 +// MIPS64BE-NOT:#define __SIZEOF_INT128__ 16 // MIPS64BE:#define __SIZEOF_INT__ 4 // MIPS64BE:#define __SIZEOF_LONG_DOUBLE__ 16 // MIPS64BE:#define __SIZEOF_LONG_LONG__ 8 @@ -3152,6 +3346,7 @@ // MIPS64EL:#define __SIG_ATOMIC_WIDTH__ 32 // MIPS64EL:#define __SIZEOF_DOUBLE__ 8 // MIPS64EL:#define __SIZEOF_FLOAT__ 4 +// MIPS64EL-NOT:#define __SIZEOF_INT128__ 16 // MIPS64EL:#define __SIZEOF_INT__ 4 // MIPS64EL:#define __SIZEOF_LONG_DOUBLE__ 16 // MIPS64EL:#define __SIZEOF_LONG_LONG__ 8 @@ -4917,6 +5112,15 @@ // PPC64-LINUX:#define __powerpc__ 1 // PPC64-LINUX:#define __ppc64__ 1 // PPC64-LINUX:#define __ppc__ 1 + +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-unknown-linux-gnu < /dev/null | FileCheck -check-prefix PPC64-ELFv1 %s +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-unknown-linux-gnu -target-abi elfv1 < /dev/null | FileCheck -check-prefix PPC64-ELFv1 %s +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-unknown-linux-gnu -target-abi elfv2 < /dev/null | FileCheck -check-prefix PPC64-ELFv2 %s +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64le-unknown-linux-gnu < /dev/null | FileCheck -check-prefix PPC64-ELFv2 %s +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64le-unknown-linux-gnu -target-abi elfv1 < /dev/null | FileCheck -check-prefix PPC64-ELFv1 %s +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64le-unknown-linux-gnu -target-abi elfv2 < /dev/null | FileCheck -check-prefix PPC64-ELFv2 %s +// PPC64-ELFv1:#define _CALL_ELF 1 +// PPC64-ELFv2:#define _CALL_ELF 2 // // RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc-none-none -fno-signed-char < /dev/null | FileCheck -check-prefix PPC %s // @@ -5449,7 +5653,7 @@ // PPC-DARWIN:#define __SIZE_TYPE__ long unsigned int // PPC-DARWIN:#define __SIZE_WIDTH__ 32 // PPC-DARWIN:#define __STDC_HOSTED__ 0 -// PPC-DARWIN:#define __STDC_VERSION__ 199901L +// PPC-DARWIN:#define __STDC_VERSION__ 201112L // PPC-DARWIN:#define __STDC__ 1 // PPC-DARWIN:#define __UINT16_C_SUFFIX__ {{$}} // PPC-DARWIN:#define __UINT16_MAX__ 65535 @@ -6222,6 +6426,13 @@ // X86_64:#define __x86_64 1 // X86_64:#define __x86_64__ 1 // +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=x86_64h-none-none < /dev/null | FileCheck -check-prefix X86_64H %s +// +// X86_64H:#define __x86_64 1 +// X86_64H:#define __x86_64__ 1 +// X86_64H:#define __x86_64h 1 +// X86_64H:#define __x86_64h__ 1 + // RUN: %clang_cc1 -E -dM -ffreestanding -triple=x86_64-none-none-gnux32 < /dev/null | FileCheck -check-prefix X32 %s // // X32:#define _ILP32 1 diff --git a/test/Preprocessor/iwithprefix.c b/test/Preprocessor/iwithprefix.c index 59935ac..a65a804 100644 --- a/test/Preprocessor/iwithprefix.c +++ b/test/Preprocessor/iwithprefix.c @@ -9,7 +9,7 @@ // CHECK: #include <...> search starts here: // CHECK: {{.*}}.tmps/first -// CHECK: {{/|\\}}lib{{/|\\}}clang{{/|\\}}{{[.0-9]+}}{{/|\\}}include +// CHECK: {{/|\\}}lib{{(32|64)?}}{{/|\\}}clang{{/|\\}}{{[.0-9]+}}{{/|\\}}include // CHECK: {{.*}}.tmps/second // CHECK-NOT: {{.*}}.tmps diff --git a/test/Preprocessor/line-directive.c b/test/Preprocessor/line-directive.c index 0dd658f..2ebe87e 100644 --- a/test/Preprocessor/line-directive.c +++ b/test/Preprocessor/line-directive.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s +// RUN: %clang_cc1 -std=c99 -fsyntax-only -verify -pedantic %s // RUN: not %clang_cc1 -E %s 2>&1 | grep 'blonk.c:92:2: error: ABC' // RUN: not %clang_cc1 -E %s 2>&1 | grep 'blonk.c:93:2: error: DEF' diff --git a/test/Preprocessor/macro-reserved-cxx11.cpp b/test/Preprocessor/macro-reserved-cxx11.cpp new file mode 100644 index 0000000..a740ff6 --- /dev/null +++ b/test/Preprocessor/macro-reserved-cxx11.cpp @@ -0,0 +1,7 @@ +// RUN: %clang_cc1 -fsyntax-only -std=c++11 -pedantic -verify %s + +#define for 0 // expected-warning {{keyword is hidden by macro definition}} +#define final 1 // expected-warning {{keyword is hidden by macro definition}} +#define override // expected-warning {{keyword is hidden by macro definition}} + +int x; diff --git a/test/Preprocessor/macro-reserved-ms.c b/test/Preprocessor/macro-reserved-ms.c new file mode 100644 index 0000000..c533ee3 --- /dev/null +++ b/test/Preprocessor/macro-reserved-ms.c @@ -0,0 +1,7 @@ +// RUN: %clang_cc1 -fsyntax-only -fms-extensions -verify %s +// expected-no-diagnostics + +#define inline _inline +#undef inline + +int x; diff --git a/test/Preprocessor/macro-reserved.c b/test/Preprocessor/macro-reserved.c new file mode 100644 index 0000000..84b9262 --- /dev/null +++ b/test/Preprocessor/macro-reserved.c @@ -0,0 +1,64 @@ +// RUN: %clang_cc1 -fsyntax-only -pedantic -verify %s + +#define for 0 // expected-warning {{keyword is hidden by macro definition}} +#define final 1 +#define __HAVE_X 0 +#define __cplusplus +#define _HAVE_X 0 +#define X__Y + +#undef for +#undef final +#undef __HAVE_X +#undef __cplusplus +#undef _HAVE_X +#undef X__Y + +// whitelisted definitions +#define while while +#define const +#define static +#define extern +#define inline + +#undef while +#undef const +#undef static +#undef extern +#undef inline + +#define inline __inline +#undef inline +#define inline __inline__ +#undef inline + +#define inline inline__ // expected-warning {{keyword is hidden by macro definition}} +#undef inline +#define extern __inline // expected-warning {{keyword is hidden by macro definition}} +#undef extern +#define extern __extern // expected-warning {{keyword is hidden by macro definition}} +#undef extern +#define extern __extern__ // expected-warning {{keyword is hidden by macro definition}} +#undef extern + +#define inline _inline // expected-warning {{keyword is hidden by macro definition}} +#undef inline +#define volatile // expected-warning {{keyword is hidden by macro definition}} +#undef volatile + +#pragma clang diagnostic warning "-Wreserved-id-macro" + +#define switch if // expected-warning {{keyword is hidden by macro definition}} +#define final 1 +#define __clusplus // expected-warning {{macro name is a reserved identifier}} +#define __HAVE_X 0 // expected-warning {{macro name is a reserved identifier}} +#define _HAVE_X 0 // expected-warning {{macro name is a reserved identifier}} +#define X__Y + +#undef switch +#undef final +#undef __cplusplus // expected-warning {{macro name is a reserved identifier}} +#undef _HAVE_X // expected-warning {{macro name is a reserved identifier}} +#undef X__Y + +int x; diff --git a/test/Preprocessor/macro-reserved.cpp b/test/Preprocessor/macro-reserved.cpp new file mode 100644 index 0000000..ba1594a --- /dev/null +++ b/test/Preprocessor/macro-reserved.cpp @@ -0,0 +1,63 @@ +// RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s + +#define for 0 // expected-warning {{keyword is hidden by macro definition}} +#define final 1 +#define __HAVE_X 0 +#define _HAVE_X 0 +#define X__Y + +#undef for +#undef final +#undef __HAVE_X +#undef _HAVE_X +#undef X__Y + +#undef __cplusplus +#define __cplusplus + +// whitelisted definitions +#define while while +#define const +#define static +#define extern +#define inline + +#undef while +#undef const +#undef static +#undef extern +#undef inline + +#define inline __inline +#undef inline +#define inline __inline__ +#undef inline + +#define inline inline__ // expected-warning {{keyword is hidden by macro definition}} +#undef inline +#define extern __inline // expected-warning {{keyword is hidden by macro definition}} +#undef extern +#define extern __extern // expected-warning {{keyword is hidden by macro definition}} +#undef extern +#define extern __extern__ // expected-warning {{keyword is hidden by macro definition}} +#undef extern + +#define inline _inline // expected-warning {{keyword is hidden by macro definition}} +#undef inline +#define volatile // expected-warning {{keyword is hidden by macro definition}} +#undef volatile + + +#pragma clang diagnostic warning "-Wreserved-id-macro" + +#define switch if // expected-warning {{keyword is hidden by macro definition}} +#define final 1 +#define __HAVE_X 0 // expected-warning {{macro name is a reserved identifier}} +#define _HAVE_X 0 // expected-warning {{macro name is a reserved identifier}} +#define X__Y // expected-warning {{macro name is a reserved identifier}} + +#undef __cplusplus // expected-warning {{macro name is a reserved identifier}} +#undef _HAVE_X // expected-warning {{macro name is a reserved identifier}} +#undef X__Y // expected-warning {{macro name is a reserved identifier}} + +int x; diff --git a/test/Preprocessor/macro_arg_directive.c b/test/Preprocessor/macro_arg_directive.c index 5bc2236..21d1b20 100644 --- a/test/Preprocessor/macro_arg_directive.c +++ b/test/Preprocessor/macro_arg_directive.c @@ -7,6 +7,11 @@ a(n = a); _Static_assert(n == 5, ""); +#define M(A) +M( +#pragma pack(pop) // expected-error {{embedding a #pragma directive within macro arguments is not supported}} +) + // header1.h void fail(const char *); #define MUNCH(...) \ diff --git a/test/Preprocessor/macro_paste_bad.c b/test/Preprocessor/macro_paste_bad.c index ec10006..2377724 100644 --- a/test/Preprocessor/macro_paste_bad.c +++ b/test/Preprocessor/macro_paste_bad.c @@ -34,3 +34,11 @@ int VA; // expected-warning {{__VA_ARGS__ can only appear in the expansion of #define LOG_ON_ERROR(x) x ## #y; // expected-error {{'#' is not followed by a macro parameter}} LOG_ON_ERROR(0); + +#define PR21379A(x) printf ##x // expected-note {{macro 'PR21379A' defined here}} +PR21379A(0 {, }) // expected-error {{too many arguments provided to function-like macro invocation}} + // expected-note@-1 {{parentheses are required around macro argument containing braced initializer list}} + +#define PR21379B(x) printf #x // expected-note {{macro 'PR21379B' defined here}} +PR21379B(0 {, }) // expected-error {{too many arguments provided to function-like macro invocation}} + // expected-note@-1 {{parentheses are required around macro argument containing braced initializer list}} diff --git a/test/Preprocessor/predefined-arch-macros.c b/test/Preprocessor/predefined-arch-macros.c index cba458e..5bdbdbc 100644 --- a/test/Preprocessor/predefined-arch-macros.c +++ b/test/Preprocessor/predefined-arch-macros.c @@ -562,6 +562,70 @@ // CHECK_CORE_AVX2_M64: #define __x86_64 1 // CHECK_CORE_AVX2_M64: #define __x86_64__ 1 // +// RUN: %clang -march=broadwell -m32 -E -dM %s -o - 2>&1 \ +// RUN: -target i386-unknown-linux \ +// RUN: | FileCheck %s -check-prefix=CHECK_BROADWELL_M32 +// CHECK_BROADWELL_M32: #define __ADX__ 1 +// CHECK_BROADWELL_M32: #define __AES__ 1 +// CHECK_BROADWELL_M32: #define __AVX2__ 1 +// CHECK_BROADWELL_M32: #define __AVX__ 1 +// CHECK_BROADWELL_M32: #define __BMI2__ 1 +// CHECK_BROADWELL_M32: #define __BMI__ 1 +// CHECK_BROADWELL_M32: #define __F16C__ 1 +// CHECK_BROADWELL_M32: #define __FMA__ 1 +// CHECK_BROADWELL_M32: #define __LZCNT__ 1 +// CHECK_BROADWELL_M32: #define __MMX__ 1 +// CHECK_BROADWELL_M32: #define __PCLMUL__ 1 +// CHECK_BROADWELL_M32: #define __POPCNT__ 1 +// CHECK_BROADWELL_M32: #define __RDRND__ 1 +// CHECK_BROADWELL_M32: #define __RDSEED__ 1 +// CHECK_BROADWELL_M32: #define __RTM__ 1 +// CHECK_BROADWELL_M32: #define __SSE2__ 1 +// CHECK_BROADWELL_M32: #define __SSE3__ 1 +// CHECK_BROADWELL_M32: #define __SSE4_1__ 1 +// CHECK_BROADWELL_M32: #define __SSE4_2__ 1 +// CHECK_BROADWELL_M32: #define __SSE__ 1 +// CHECK_BROADWELL_M32: #define __SSSE3__ 1 +// CHECK_BROADWELL_M32: #define __corei7 1 +// CHECK_BROADWELL_M32: #define __corei7__ 1 +// CHECK_BROADWELL_M32: #define __i386 1 +// CHECK_BROADWELL_M32: #define __i386__ 1 +// CHECK_BROADWELL_M32: #define __tune_corei7__ 1 +// CHECK_BROADWELL_M32: #define i386 1 +// RUN: %clang -march=broadwell -m64 -E -dM %s -o - 2>&1 \ +// RUN: -target i386-unknown-linux \ +// RUN: | FileCheck %s -check-prefix=CHECK_BROADWELL_M64 +// CHECK_BROADWELL_M64: #define __ADX__ 1 +// CHECK_BROADWELL_M64: #define __AES__ 1 +// CHECK_BROADWELL_M64: #define __AVX2__ 1 +// CHECK_BROADWELL_M64: #define __AVX__ 1 +// CHECK_BROADWELL_M64: #define __BMI2__ 1 +// CHECK_BROADWELL_M64: #define __BMI__ 1 +// CHECK_BROADWELL_M64: #define __F16C__ 1 +// CHECK_BROADWELL_M64: #define __FMA__ 1 +// CHECK_BROADWELL_M64: #define __LZCNT__ 1 +// CHECK_BROADWELL_M64: #define __MMX__ 1 +// CHECK_BROADWELL_M64: #define __PCLMUL__ 1 +// CHECK_BROADWELL_M64: #define __POPCNT__ 1 +// CHECK_BROADWELL_M64: #define __RDRND__ 1 +// CHECK_BROADWELL_M64: #define __RDSEED__ 1 +// CHECK_BROADWELL_M64: #define __RTM__ 1 +// CHECK_BROADWELL_M64: #define __SSE2_MATH__ 1 +// CHECK_BROADWELL_M64: #define __SSE2__ 1 +// CHECK_BROADWELL_M64: #define __SSE3__ 1 +// CHECK_BROADWELL_M64: #define __SSE4_1__ 1 +// CHECK_BROADWELL_M64: #define __SSE4_2__ 1 +// CHECK_BROADWELL_M64: #define __SSE_MATH__ 1 +// CHECK_BROADWELL_M64: #define __SSE__ 1 +// CHECK_BROADWELL_M64: #define __SSSE3__ 1 +// CHECK_BROADWELL_M64: #define __amd64 1 +// CHECK_BROADWELL_M64: #define __amd64__ 1 +// CHECK_BROADWELL_M64: #define __corei7 1 +// CHECK_BROADWELL_M64: #define __corei7__ 1 +// CHECK_BROADWELL_M64: #define __tune_corei7__ 1 +// CHECK_BROADWELL_M64: #define __x86_64 1 +// CHECK_BROADWELL_M64: #define __x86_64__ 1 +// // RUN: %clang -march=knl -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck %s -check-prefix=CHECK_KNL_M32 @@ -594,6 +658,7 @@ // CHECK_KNL_M32: #define __knl__ 1 // CHECK_KNL_M32: #define __tune_knl__ 1 // CHECK_KNL_M32: #define i386 1 + // RUN: %clang -march=knl -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck %s -check-prefix=CHECK_KNL_M64 @@ -630,6 +695,77 @@ // CHECK_KNL_M64: #define __x86_64 1 // CHECK_KNL_M64: #define __x86_64__ 1 // +// RUN: %clang -march=skx -m32 -E -dM %s -o - 2>&1 \ +// RUN: -target i386-unknown-linux \ +// RUN: | FileCheck %s -check-prefix=CHECK_SKX_M32 +// CHECK_SKX_M32: #define __AES__ 1 +// CHECK_SKX_M32: #define __AVX2__ 1 +// CHECK_SKX_M32: #define __AVX512BW__ 1 +// CHECK_SKX_M32: #define __AVX512CD__ 1 +// CHECK_SKX_M32: #define __AVX512DQ__ 1 +// CHECK_SKX_M32: #define __AVX512F__ 1 +// CHECK_SKX_M32: #define __AVX512VL__ 1 +// CHECK_SKX_M32: #define __AVX__ 1 +// CHECK_SKX_M32: #define __BMI2__ 1 +// CHECK_SKX_M32: #define __BMI__ 1 +// CHECK_SKX_M32: #define __F16C__ 1 +// CHECK_SKX_M32: #define __FMA__ 1 +// CHECK_SKX_M32: #define __LZCNT__ 1 +// CHECK_SKX_M32: #define __MMX__ 1 +// CHECK_SKX_M32: #define __PCLMUL__ 1 +// CHECK_SKX_M32: #define __POPCNT__ 1 +// CHECK_SKX_M32: #define __RDRND__ 1 +// CHECK_SKX_M32: #define __RTM__ 1 +// CHECK_SKX_M32: #define __SSE2__ 1 +// CHECK_SKX_M32: #define __SSE3__ 1 +// CHECK_SKX_M32: #define __SSE4_1__ 1 +// CHECK_SKX_M32: #define __SSE4_2__ 1 +// CHECK_SKX_M32: #define __SSE__ 1 +// CHECK_SKX_M32: #define __SSSE3__ 1 +// CHECK_SKX_M32: #define __i386 1 +// CHECK_SKX_M32: #define __i386__ 1 +// CHECK_SKX_M32: #define __skx 1 +// CHECK_SKX_M32: #define __skx__ 1 +// CHECK_SKX_M32: #define __tune_skx__ 1 +// CHECK_SKX_M32: #define i386 1 + +// RUN: %clang -march=skx -m64 -E -dM %s -o - 2>&1 \ +// RUN: -target i386-unknown-linux \ +// RUN: | FileCheck %s -check-prefix=CHECK_SKX_M64 +// CHECK_SKX_M64: #define __AES__ 1 +// CHECK_SKX_M64: #define __AVX2__ 1 +// CHECK_SKX_M64: #define __AVX512BW__ 1 +// CHECK_SKX_M64: #define __AVX512CD__ 1 +// CHECK_SKX_M64: #define __AVX512DQ__ 1 +// CHECK_SKX_M64: #define __AVX512F__ 1 +// CHECK_SKX_M64: #define __AVX512VL__ 1 +// CHECK_SKX_M64: #define __AVX__ 1 +// CHECK_SKX_M64: #define __BMI2__ 1 +// CHECK_SKX_M64: #define __BMI__ 1 +// CHECK_SKX_M64: #define __F16C__ 1 +// CHECK_SKX_M64: #define __FMA__ 1 +// CHECK_SKX_M64: #define __LZCNT__ 1 +// CHECK_SKX_M64: #define __MMX__ 1 +// CHECK_SKX_M64: #define __PCLMUL__ 1 +// CHECK_SKX_M64: #define __POPCNT__ 1 +// CHECK_SKX_M64: #define __RDRND__ 1 +// CHECK_SKX_M64: #define __RTM__ 1 +// CHECK_SKX_M64: #define __SSE2_MATH__ 1 +// CHECK_SKX_M64: #define __SSE2__ 1 +// CHECK_SKX_M64: #define __SSE3__ 1 +// CHECK_SKX_M64: #define __SSE4_1__ 1 +// CHECK_SKX_M64: #define __SSE4_2__ 1 +// CHECK_SKX_M64: #define __SSE_MATH__ 1 +// CHECK_SKX_M64: #define __SSE__ 1 +// CHECK_SKX_M64: #define __SSSE3__ 1 +// CHECK_SKX_M64: #define __amd64 1 +// CHECK_SKX_M64: #define __amd64__ 1 +// CHECK_SKX_M64: #define __skx 1 +// CHECK_SKX_M64: #define __skx__ 1 +// CHECK_SKX_M64: #define __tune_skx__ 1 +// CHECK_SKX_M64: #define __x86_64 1 +// CHECK_SKX_M64: #define __x86_64__ 1 +// // RUN: %clang -march=atom -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck %s -check-prefix=CHECK_ATOM_M32 @@ -1206,8 +1342,11 @@ // CHECK_BTVER2_M32-NOT: #define __3dNOW__ 1 // CHECK_BTVER2_M32: #define __AES__ 1 // CHECK_BTVER2_M32: #define __AVX__ 1 +// CHECK_BTVER2_M32: #define __BMI__ 1 +// CHECK_BTVER2_M32: #define __F16C__ 1 // CHECK_BTVER2_M32: #define __LZCNT__ 1 // CHECK_BTVER2_M32: #define __MMX__ 1 +// CHECK_BTVER2_M32: #define __PCLMUL__ 1 // CHECK_BTVER2_M32: #define __POPCNT__ 1 // CHECK_BTVER2_M32: #define __PRFCHW__ 1 // CHECK_BTVER2_M32: #define __SSE2_MATH__ 1 @@ -1229,8 +1368,11 @@ // CHECK_BTVER2_M64-NOT: #define __3dNOW__ 1 // CHECK_BTVER2_M64: #define __AES__ 1 // CHECK_BTVER2_M64: #define __AVX__ 1 +// CHECK_BTVER2_M64: #define __BMI__ 1 +// CHECK_BTVER2_M64: #define __F16C__ 1 // CHECK_BTVER2_M64: #define __LZCNT__ 1 // CHECK_BTVER2_M64: #define __MMX__ 1 +// CHECK_BTVER2_M64: #define __PCLMUL__ 1 // CHECK_BTVER2_M64: #define __POPCNT__ 1 // CHECK_BTVER2_M64: #define __PRFCHW__ 1 // CHECK_BTVER2_M64: #define __SSE2_MATH__ 1 @@ -1382,6 +1524,7 @@ // CHECK_BDVER3_M32: #define __F16C__ 1 // CHECK_BDVER3_M32: #define __FMA4__ 1 // CHECK_BDVER3_M32: #define __FMA__ 1 +// CHECK_BDVER3_M32: #define __FSGSBASE__ 1 // CHECK_BDVER3_M32: #define __LZCNT__ 1 // CHECK_BDVER3_M32: #define __MMX__ 1 // CHECK_BDVER3_M32: #define __PCLMUL__ 1 @@ -1414,6 +1557,7 @@ // CHECK_BDVER3_M64: #define __F16C__ 1 // CHECK_BDVER3_M64: #define __FMA4__ 1 // CHECK_BDVER3_M64: #define __FMA__ 1 +// CHECK_BDVER3_M64: #define __FSGSBASE__ 1 // CHECK_BDVER3_M64: #define __LZCNT__ 1 // CHECK_BDVER3_M64: #define __MMX__ 1 // CHECK_BDVER3_M64: #define __PCLMUL__ 1 @@ -1450,6 +1594,7 @@ // CHECK_BDVER4_M32: #define __F16C__ 1 // CHECK_BDVER4_M32: #define __FMA4__ 1 // CHECK_BDVER4_M32: #define __FMA__ 1 +// CHECK_BDVER4_M32: #define __FSGSBASE__ 1 // CHECK_BDVER4_M32: #define __LZCNT__ 1 // CHECK_BDVER4_M32: #define __MMX__ 1 // CHECK_BDVER4_M32: #define __PCLMUL__ 1 @@ -1484,6 +1629,7 @@ // CHECK_BDVER4_M64: #define __F16C__ 1 // CHECK_BDVER4_M64: #define __FMA4__ 1 // CHECK_BDVER4_M64: #define __FMA__ 1 +// CHECK_BDVER4_M64: #define __FSGSBASE__ 1 // CHECK_BDVER4_M64: #define __LZCNT__ 1 // CHECK_BDVER4_M64: #define __MMX__ 1 // CHECK_BDVER4_M64: #define __PCLMUL__ 1 @@ -1516,3 +1662,10 @@ // RUN: | FileCheck %s -check-prefix=CHECK_PPC_VSX_M64 // // CHECK_PPC_VSX_M64: #define __VSX__ +// +// RUN: %clang -mpower8-vector -E -dM %s -o - 2>&1 \ +// RUN: -target powerpc64-unknown-linux \ +// RUN: | FileCheck %s -check-prefix=CHECK_PPC_POWER8_VECTOR_M64 +// +// CHECK_PPC_POWER8_VECTOR_M64: #define __POWER8_VECTOR__ +// diff --git a/test/Preprocessor/predefined-exceptions.m b/test/Preprocessor/predefined-exceptions.m index c13f429..0791075 100644 --- a/test/Preprocessor/predefined-exceptions.m +++ b/test/Preprocessor/predefined-exceptions.m @@ -1,6 +1,6 @@ // RUN: %clang_cc1 -x objective-c -fobjc-exceptions -fexceptions -E -dM %s | FileCheck -check-prefix=CHECK-OBJC-NOCXX %s // CHECK-OBJC-NOCXX: #define OBJC_ZEROCOST_EXCEPTIONS 1 -// CHECK-OBJC-NOCXX-NOT: #define __EXCEPTIONS 1 +// CHECK-OBJC-NOCXX: #define __EXCEPTIONS 1 // RUN: %clang_cc1 -x objective-c++ -fobjc-exceptions -fexceptions -fcxx-exceptions -E -dM %s | FileCheck -check-prefix=CHECK-OBJC-CXX %s // CHECK-OBJC-CXX: #define OBJC_ZEROCOST_EXCEPTIONS 1 diff --git a/test/Preprocessor/predefined-macros.c b/test/Preprocessor/predefined-macros.c index 1db9080..a32f4a1 100644 --- a/test/Preprocessor/predefined-macros.c +++ b/test/Preprocessor/predefined-macros.c @@ -28,59 +28,59 @@ // // RUN: %clang_cc1 %s -E -dM -triple i686-pc-win32 -fms-compatibility \ // RUN: -o - | FileCheck %s --check-prefix=CHECK-MS-STDINT -// CHECK-MS-STDINT-NOT:#define __INT16_MAX__ 32767 -// CHECK-MS-STDINT-NOT:#define __INT32_MAX__ 2147483647 -// CHECK-MS-STDINT-NOT:#define __INT64_MAX__ 9223372036854775807LL -// CHECK-MS-STDINT-NOT:#define __INT8_MAX__ 127 -// CHECK-MS-STDINT-NOT:#define __INTPTR_MAX__ 2147483647 -// CHECK-MS-STDINT-NOT:#define __INT_FAST16_MAX__ 32767 -// CHECK-MS-STDINT-NOT:#define __INT_FAST16_TYPE__ short -// CHECK-MS-STDINT-NOT:#define __INT_FAST32_MAX__ 2147483647 -// CHECK-MS-STDINT-NOT:#define __INT_FAST32_TYPE__ int -// CHECK-MS-STDINT-NOT:#define __INT_FAST64_MAX__ 9223372036854775807LL -// CHECK-MS-STDINT-NOT:#define __INT_FAST64_TYPE__ long long int -// CHECK-MS-STDINT-NOT:#define __INT_FAST8_MAX__ 127 -// CHECK-MS-STDINT-NOT:#define __INT_FAST8_TYPE__ char -// CHECK-MS-STDINT-NOT:#define __INT_LEAST16_MAX__ 32767 -// CHECK-MS-STDINT-NOT:#define __INT_LEAST16_TYPE__ short -// CHECK-MS-STDINT-NOT:#define __INT_LEAST32_MAX__ 2147483647 -// CHECK-MS-STDINT-NOT:#define __INT_LEAST32_TYPE__ int -// CHECK-MS-STDINT-NOT:#define __INT_LEAST64_MAX__ 9223372036854775807LL -// CHECK-MS-STDINT-NOT:#define __INT_LEAST64_TYPE__ long long int -// CHECK-MS-STDINT-NOT:#define __INT_LEAST8_MAX__ 127 -// CHECK-MS-STDINT-NOT:#define __INT_LEAST8_TYPE__ char +// CHECK-MS-STDINT:#define __INT16_MAX__ 32767 +// CHECK-MS-STDINT:#define __INT32_MAX__ 2147483647 +// CHECK-MS-STDINT:#define __INT64_MAX__ 9223372036854775807LL +// CHECK-MS-STDINT:#define __INT8_MAX__ 127 +// CHECK-MS-STDINT:#define __INTPTR_MAX__ 2147483647 +// CHECK-MS-STDINT:#define __INT_FAST16_MAX__ 32767 +// CHECK-MS-STDINT:#define __INT_FAST16_TYPE__ short +// CHECK-MS-STDINT:#define __INT_FAST32_MAX__ 2147483647 +// CHECK-MS-STDINT:#define __INT_FAST32_TYPE__ int +// CHECK-MS-STDINT:#define __INT_FAST64_MAX__ 9223372036854775807LL +// CHECK-MS-STDINT:#define __INT_FAST64_TYPE__ long long int +// CHECK-MS-STDINT:#define __INT_FAST8_MAX__ 127 +// CHECK-MS-STDINT:#define __INT_FAST8_TYPE__ signed char +// CHECK-MS-STDINT:#define __INT_LEAST16_MAX__ 32767 +// CHECK-MS-STDINT:#define __INT_LEAST16_TYPE__ short +// CHECK-MS-STDINT:#define __INT_LEAST32_MAX__ 2147483647 +// CHECK-MS-STDINT:#define __INT_LEAST32_TYPE__ int +// CHECK-MS-STDINT:#define __INT_LEAST64_MAX__ 9223372036854775807LL +// CHECK-MS-STDINT:#define __INT_LEAST64_TYPE__ long long int +// CHECK-MS-STDINT:#define __INT_LEAST8_MAX__ 127 +// CHECK-MS-STDINT:#define __INT_LEAST8_TYPE__ signed char // CHECK-MS-STDINT-NOT:#define __UINT16_C_SUFFIX__ U -// CHECK-MS-STDINT-NOT:#define __UINT16_MAX__ 65535U -// CHECK-MS-STDINT-NOT:#define __UINT16_TYPE__ unsigned short -// CHECK-MS-STDINT-NOT:#define __UINT32_C_SUFFIX__ U -// CHECK-MS-STDINT-NOT:#define __UINT32_MAX__ 4294967295U -// CHECK-MS-STDINT-NOT:#define __UINT32_TYPE__ unsigned int -// CHECK-MS-STDINT-NOT:#define __UINT64_C_SUFFIX__ ULL -// CHECK-MS-STDINT-NOT:#define __UINT64_MAX__ 18446744073709551615ULL -// CHECK-MS-STDINT-NOT:#define __UINT64_TYPE__ long long unsigned int +// CHECK-MS-STDINT:#define __UINT16_MAX__ 65535 +// CHECK-MS-STDINT:#define __UINT16_TYPE__ unsigned short +// CHECK-MS-STDINT:#define __UINT32_C_SUFFIX__ U +// CHECK-MS-STDINT:#define __UINT32_MAX__ 4294967295U +// CHECK-MS-STDINT:#define __UINT32_TYPE__ unsigned int +// CHECK-MS-STDINT:#define __UINT64_C_SUFFIX__ ULL +// CHECK-MS-STDINT:#define __UINT64_MAX__ 18446744073709551615ULL +// CHECK-MS-STDINT:#define __UINT64_TYPE__ long long unsigned int // CHECK-MS-STDINT-NOT:#define __UINT8_C_SUFFIX__ U -// CHECK-MS-STDINT-NOT:#define __UINT8_MAX__ 255U -// CHECK-MS-STDINT-NOT:#define __UINT8_TYPE__ unsigned char -// CHECK-MS-STDINT-NOT:#define __UINTMAX_MAX__ 18446744073709551615ULL -// CHECK-MS-STDINT-NOT:#define __UINTPTR_MAX__ 4294967295U -// CHECK-MS-STDINT-NOT:#define __UINTPTR_TYPE__ unsigned int -// CHECK-MS-STDINT-NOT:#define __UINTPTR_WIDTH__ 32 -// CHECK-MS-STDINT-NOT:#define __UINT_FAST16_MAX__ 65535U -// CHECK-MS-STDINT-NOT:#define __UINT_FAST16_TYPE__ unsigned short -// CHECK-MS-STDINT-NOT:#define __UINT_FAST32_MAX__ 4294967295U -// CHECK-MS-STDINT-NOT:#define __UINT_FAST32_TYPE__ unsigned int -// CHECK-MS-STDINT-NOT:#define __UINT_FAST64_MAX__ 18446744073709551615ULL -// CHECK-MS-STDINT-NOT:#define __UINT_FAST64_TYPE__ long long unsigned int -// CHECK-MS-STDINT-NOT:#define __UINT_FAST8_MAX__ 255U -// CHECK-MS-STDINT-NOT:#define __UINT_FAST8_TYPE__ unsigned char -// CHECK-MS-STDINT-NOT:#define __UINT_LEAST16_MAX__ 65535U -// CHECK-MS-STDINT-NOT:#define __UINT_LEAST16_TYPE__ unsigned short -// CHECK-MS-STDINT-NOT:#define __UINT_LEAST32_MAX__ 4294967295U -// CHECK-MS-STDINT-NOT:#define __UINT_LEAST32_TYPE__ unsigned int -// CHECK-MS-STDINT-NOT:#define __UINT_LEAST64_MAX__ 18446744073709551615ULL -// CHECK-MS-STDINT-NOT:#define __UINT_LEAST64_TYPE__ long long unsigned int -// CHECK-MS-STDINT-NOT:#define __UINT_LEAST8_MAX__ 255U -// CHECK-MS-STDINT-NOT:#define __UINT_LEAST8_TYPE__ unsigned char +// CHECK-MS-STDINT:#define __UINT8_MAX__ 255 +// CHECK-MS-STDINT:#define __UINT8_TYPE__ unsigned char +// CHECK-MS-STDINT:#define __UINTMAX_MAX__ 18446744073709551615ULL +// CHECK-MS-STDINT:#define __UINTPTR_MAX__ 4294967295U +// CHECK-MS-STDINT:#define __UINTPTR_TYPE__ unsigned int +// CHECK-MS-STDINT:#define __UINTPTR_WIDTH__ 32 +// CHECK-MS-STDINT:#define __UINT_FAST16_MAX__ 65535 +// CHECK-MS-STDINT:#define __UINT_FAST16_TYPE__ unsigned short +// CHECK-MS-STDINT:#define __UINT_FAST32_MAX__ 4294967295U +// CHECK-MS-STDINT:#define __UINT_FAST32_TYPE__ unsigned int +// CHECK-MS-STDINT:#define __UINT_FAST64_MAX__ 18446744073709551615ULL +// CHECK-MS-STDINT:#define __UINT_FAST64_TYPE__ long long unsigned int +// CHECK-MS-STDINT:#define __UINT_FAST8_MAX__ 255 +// CHECK-MS-STDINT:#define __UINT_FAST8_TYPE__ unsigned char +// CHECK-MS-STDINT:#define __UINT_LEAST16_MAX__ 65535 +// CHECK-MS-STDINT:#define __UINT_LEAST16_TYPE__ unsigned short +// CHECK-MS-STDINT:#define __UINT_LEAST32_MAX__ 4294967295U +// CHECK-MS-STDINT:#define __UINT_LEAST32_TYPE__ unsigned int +// CHECK-MS-STDINT:#define __UINT_LEAST64_MAX__ 18446744073709551615ULL +// CHECK-MS-STDINT:#define __UINT_LEAST64_TYPE__ long long unsigned int +// CHECK-MS-STDINT:#define __UINT_LEAST8_MAX__ 255 +// CHECK-MS-STDINT:#define __UINT_LEAST8_TYPE__ unsigned char // // RUN: %clang_cc1 %s -E -dM -ffast-math -o - \ // RUN: | FileCheck %s --check-prefix=CHECK-FAST-MATH diff --git a/test/Preprocessor/stdint.c b/test/Preprocessor/stdint.c index 94d5b0b..c7189f6 100644 --- a/test/Preprocessor/stdint.c +++ b/test/Preprocessor/stdint.c @@ -634,6 +634,113 @@ // PPC64:INTMAX_C_(0) 0L // PPC64:UINTMAX_C_(0) 0UL // +// RUN: %clang_cc1 -E -ffreestanding -triple=powerpc64-none-netbsd %s | FileCheck -check-prefix PPC64-NETBSD %s +// +// PPC64-NETBSD:typedef long long int int64_t; +// PPC64-NETBSD:typedef long long unsigned int uint64_t; +// PPC64-NETBSD:typedef int64_t int_least64_t; +// PPC64-NETBSD:typedef uint64_t uint_least64_t; +// PPC64-NETBSD:typedef int64_t int_fast64_t; +// PPC64-NETBSD:typedef uint64_t uint_fast64_t; +// +// PPC64-NETBSD:typedef int int32_t; +// PPC64-NETBSD:typedef unsigned int uint32_t; +// PPC64-NETBSD:typedef int32_t int_least32_t; +// PPC64-NETBSD:typedef uint32_t uint_least32_t; +// PPC64-NETBSD:typedef int32_t int_fast32_t; +// PPC64-NETBSD:typedef uint32_t uint_fast32_t; +// +// PPC64-NETBSD:typedef short int16_t; +// PPC64-NETBSD:typedef unsigned short uint16_t; +// PPC64-NETBSD:typedef int16_t int_least16_t; +// PPC64-NETBSD:typedef uint16_t uint_least16_t; +// PPC64-NETBSD:typedef int16_t int_fast16_t; +// PPC64-NETBSD:typedef uint16_t uint_fast16_t; +// +// PPC64-NETBSD:typedef signed char int8_t; +// PPC64-NETBSD:typedef unsigned char uint8_t; +// PPC64-NETBSD:typedef int8_t int_least8_t; +// PPC64-NETBSD:typedef uint8_t uint_least8_t; +// PPC64-NETBSD:typedef int8_t int_fast8_t; +// PPC64-NETBSD:typedef uint8_t uint_fast8_t; +// +// PPC64-NETBSD:typedef int64_t intptr_t; +// PPC64-NETBSD:typedef uint64_t uintptr_t; +// +// PPC64-NETBSD:typedef long long int intmax_t; +// PPC64-NETBSD:typedef long long unsigned int uintmax_t; +// +// PPC64-NETBSD:INT8_MAX_ 127 +// PPC64-NETBSD:INT8_MIN_ (-127 -1) +// PPC64-NETBSD:UINT8_MAX_ 255 +// PPC64-NETBSD:INT_LEAST8_MIN_ (-127 -1) +// PPC64-NETBSD:INT_LEAST8_MAX_ 127 +// PPC64-NETBSD:UINT_LEAST8_MAX_ 255 +// PPC64-NETBSD:INT_FAST8_MIN_ (-127 -1) +// PPC64-NETBSD:INT_FAST8_MAX_ 127 +// PPC64-NETBSD:UINT_FAST8_MAX_ 255 +// +// PPC64-NETBSD:INT16_MAX_ 32767 +// PPC64-NETBSD:INT16_MIN_ (-32767 -1) +// PPC64-NETBSD:UINT16_MAX_ 65535 +// PPC64-NETBSD:INT_LEAST16_MIN_ (-32767 -1) +// PPC64-NETBSD:INT_LEAST16_MAX_ 32767 +// PPC64-NETBSD:UINT_LEAST16_MAX_ 65535 +// PPC64-NETBSD:INT_FAST16_MIN_ (-32767 -1) +// PPC64-NETBSD:INT_FAST16_MAX_ 32767 +// PPC64-NETBSD:UINT_FAST16_MAX_ 65535 +// +// PPC64-NETBSD:INT32_MAX_ 2147483647 +// PPC64-NETBSD:INT32_MIN_ (-2147483647 -1) +// PPC64-NETBSD:UINT32_MAX_ 4294967295U +// PPC64-NETBSD:INT_LEAST32_MIN_ (-2147483647 -1) +// PPC64-NETBSD:INT_LEAST32_MAX_ 2147483647 +// PPC64-NETBSD:UINT_LEAST32_MAX_ 4294967295U +// PPC64-NETBSD:INT_FAST32_MIN_ (-2147483647 -1) +// PPC64-NETBSD:INT_FAST32_MAX_ 2147483647 +// PPC64-NETBSD:UINT_FAST32_MAX_ 4294967295U +// +// PPC64-NETBSD:INT64_MAX_ 9223372036854775807LL +// PPC64-NETBSD:INT64_MIN_ (-9223372036854775807LL -1) +// PPC64-NETBSD:UINT64_MAX_ 18446744073709551615ULL +// PPC64-NETBSD:INT_LEAST64_MIN_ (-9223372036854775807LL -1) +// PPC64-NETBSD:INT_LEAST64_MAX_ 9223372036854775807LL +// PPC64-NETBSD:UINT_LEAST64_MAX_ 18446744073709551615ULL +// PPC64-NETBSD:INT_FAST64_MIN_ (-9223372036854775807LL -1) +// PPC64-NETBSD:INT_FAST64_MAX_ 9223372036854775807LL +// PPC64-NETBSD:UINT_FAST64_MAX_ 18446744073709551615ULL +// +// PPC64-NETBSD:INTPTR_MIN_ (-9223372036854775807LL -1) +// PPC64-NETBSD:INTPTR_MAX_ 9223372036854775807LL +// PPC64-NETBSD:UINTPTR_MAX_ 18446744073709551615ULL +// PPC64-NETBSD:PTRDIFF_MIN_ (-9223372036854775807LL -1) +// PPC64-NETBSD:PTRDIFF_MAX_ 9223372036854775807LL +// PPC64-NETBSD:SIZE_MAX_ 18446744073709551615ULL +// +// PPC64-NETBSD:INTMAX_MIN_ (-9223372036854775807LL -1) +// PPC64-NETBSD:INTMAX_MAX_ 9223372036854775807LL +// PPC64-NETBSD:UINTMAX_MAX_ 18446744073709551615ULL +// +// PPC64-NETBSD:SIG_ATOMIC_MIN_ (-2147483647 -1) +// PPC64-NETBSD:SIG_ATOMIC_MAX_ 2147483647 +// PPC64-NETBSD:WINT_MIN_ (-2147483647 -1) +// PPC64-NETBSD:WINT_MAX_ 2147483647 +// +// PPC64-NETBSD:WCHAR_MAX_ 2147483647 +// PPC64-NETBSD:WCHAR_MIN_ (-2147483647 -1) +// +// PPC64-NETBSD:INT8_C_(0) 0 +// PPC64-NETBSD:UINT8_C_(0) 0U +// PPC64-NETBSD:INT16_C_(0) 0 +// PPC64-NETBSD:UINT16_C_(0) 0U +// PPC64-NETBSD:INT32_C_(0) 0 +// PPC64-NETBSD:UINT32_C_(0) 0U +// PPC64-NETBSD:INT64_C_(0) 0LL +// PPC64-NETBSD:UINT64_C_(0) 0ULL +// +// PPC64-NETBSD:INTMAX_C_(0) 0LL +// PPC64-NETBSD:UINTMAX_C_(0) 0ULL +// // RUN: %clang_cc1 -E -ffreestanding -triple=powerpc-none-none %s | FileCheck -check-prefix PPC %s // // diff --git a/test/Preprocessor/x86_target_features.c b/test/Preprocessor/x86_target_features.c index 7bc5cd8..806eeec 100644 --- a/test/Preprocessor/x86_target_features.c +++ b/test/Preprocessor/x86_target_features.c @@ -114,6 +114,51 @@ // AVX512PF: #define __SSE__ 1 // AVX512PF: #define __SSSE3__ 1 +// RUN: %clang -target i386-unknown-unknown -march=atom -mavx512dq -x c -E -dM -o - %s | FileCheck --check-prefix=AVX512DQ %s + +// AVX512DQ: #define __AVX2__ 1 +// AVX512DQ: #define __AVX512DQ__ 1 +// AVX512DQ: #define __AVX512F__ 1 +// AVX512DQ: #define __AVX__ 1 +// AVX512DQ: #define __SSE2_MATH__ 1 +// AVX512DQ: #define __SSE2__ 1 +// AVX512DQ: #define __SSE3__ 1 +// AVX512DQ: #define __SSE4_1__ 1 +// AVX512DQ: #define __SSE4_2__ 1 +// AVX512DQ: #define __SSE_MATH__ 1 +// AVX512DQ: #define __SSE__ 1 +// AVX512DQ: #define __SSSE3__ 1 + +// RUN: %clang -target i386-unknown-unknown -march=atom -mavx512bw -x c -E -dM -o - %s | FileCheck --check-prefix=AVX512BW %s + +// AVX512BW: #define __AVX2__ 1 +// AVX512BW: #define __AVX512BW__ 1 +// AVX512BW: #define __AVX512F__ 1 +// AVX512BW: #define __AVX__ 1 +// AVX512BW: #define __SSE2_MATH__ 1 +// AVX512BW: #define __SSE2__ 1 +// AVX512BW: #define __SSE3__ 1 +// AVX512BW: #define __SSE4_1__ 1 +// AVX512BW: #define __SSE4_2__ 1 +// AVX512BW: #define __SSE_MATH__ 1 +// AVX512BW: #define __SSE__ 1 +// AVX512BW: #define __SSSE3__ 1 + +// RUN: %clang -target i386-unknown-unknown -march=atom -mavx512vl -x c -E -dM -o - %s | FileCheck --check-prefix=AVX512VL %s + +// AVX512VL: #define __AVX2__ 1 +// AVX512VL: #define __AVX512F__ 1 +// AVX512VL: #define __AVX512VL__ 1 +// AVX512VL: #define __AVX__ 1 +// AVX512VL: #define __SSE2_MATH__ 1 +// AVX512VL: #define __SSE2__ 1 +// AVX512VL: #define __SSE3__ 1 +// AVX512VL: #define __SSE4_1__ 1 +// AVX512VL: #define __SSE4_2__ 1 +// AVX512VL: #define __SSE_MATH__ 1 +// AVX512VL: #define __SSE__ 1 +// AVX512VL: #define __SSSE3__ 1 + // RUN: %clang -target i386-unknown-unknown -march=atom -mavx512pf -mno-avx512f -x c -E -dM -o - %s | FileCheck --check-prefix=AVX512F2 %s // AVX512F2: #define __AVX2__ 1 @@ -236,3 +281,11 @@ // NO3DNOWPRFCHW: #define __PRFCHW__ 1 +// RUN: %clang -target i386-unknown-unknown -march=atom -madx -x c -E -dM -o - %s | FileCheck --check-prefix=ADX %s + +// ADX: #define __ADX__ 1 + +// RUN: %clang -target i386-unknown-unknown -march=atom -mrdseed -x c -E -dM -o - %s | FileCheck --check-prefix=RDSEED %s + +// RDSEED: #define __RDSEED__ 1 + |