diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2017-12-18 20:11:37 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2017-12-18 20:11:37 +0000 |
| commit | 461a67fa15370a9ec88f8f8a240bf7c123bb2029 (patch) | |
| tree | 6942083d7d56bba40ec790a453ca58ad3baf6832 /test/Preprocessor | |
| parent | 75c3240472ba6ac2669ee72ca67eb72d4e2851fc (diff) | |
Notes
Diffstat (limited to 'test/Preprocessor')
24 files changed, 1269 insertions, 115 deletions
diff --git a/test/Preprocessor/arm-target-features.c b/test/Preprocessor/arm-target-features.c index b206e1cf36fd..0067e108d338 100644 --- a/test/Preprocessor/arm-target-features.c +++ b/test/Preprocessor/arm-target-features.c @@ -214,6 +214,7 @@ // A5:#define __ARM_ARCH_7A__ 1 // A5-NOT:#define __ARM_ARCH_EXT_IDIV__ // A5:#define __ARM_ARCH_PROFILE 'A' +// A5-NOT:#define __ARM_DWARF_EH__ 1 // A5-NOT: #define __ARM_FEATURE_DIRECTED_ROUNDING // A5:#define __ARM_FEATURE_DSP 1 // A5-NOT: #define __ARM_FEATURE_NUMERIC_MAXMIN @@ -225,6 +226,7 @@ // A7:#define __ARM_ARCH 7 // A7:#define __ARM_ARCH_EXT_IDIV__ 1 // A7:#define __ARM_ARCH_PROFILE 'A' +// A7-NOT:#define __ARM_DWARF_EH__ 1 // A7:#define __ARM_FEATURE_DSP 1 // A7:#define __ARM_FP 0xE diff --git a/test/Preprocessor/c17.c b/test/Preprocessor/c17.c new file mode 100644 index 000000000000..c610e84f9830 --- /dev/null +++ b/test/Preprocessor/c17.c @@ -0,0 +1,4 @@ +// RUN: %clang_cc1 -fsyntax-only -verify -std=c17 %s +// expected-no-diagnostics + +_Static_assert(__STDC_VERSION__ == 201710L, "Incorrect __STDC_VERSION__"); diff --git a/test/Preprocessor/cuda-types.cu b/test/Preprocessor/cuda-types.cu index 5f7b91655cdf..9e96f6a15e6e 100644 --- a/test/Preprocessor/cuda-types.cu +++ b/test/Preprocessor/cuda-types.cu @@ -5,42 +5,44 @@ // FIXME: We really should make __GCC_HAVE_SYNC_COMPARE_AND_SWAP identical on // host and device, but architecturally this is difficult at the moment. +// RUN: mkdir -p %t + // RUN: %clang --cuda-host-only -nocudainc -target i386-unknown-linux-gnu -x cuda -E -dM -o - /dev/null \ // RUN: | grep 'define __[^ ]*\(TYPE\|MAX\|SIZEOF|WIDTH\)\|define __GCC_ATOMIC' \ -// RUN: | grep -v '__LDBL\|_LONG_DOUBLE' > %T/i386-host-defines-filtered +// RUN: | grep -v '__FLT128\|__LDBL\|_LONG_DOUBLE' > %t/i386-host-defines-filtered // RUN: %clang --cuda-device-only -nocudainc -nocudalib -target i386-unknown-linux-gnu -x cuda -E -dM -o - /dev/null \ // RUN: | grep 'define __[^ ]*\(TYPE\|MAX\|SIZEOF|WIDTH\)\|define __GCC_ATOMIC' \ -// RUN: | grep -v '__LDBL\|_LONG_DOUBLE' > %T/i386-device-defines-filtered -// RUN: diff %T/i386-host-defines-filtered %T/i386-device-defines-filtered +// RUN: | grep -v '__FLT128\|__LDBL\|_LONG_DOUBLE' > %t/i386-device-defines-filtered +// RUN: diff %t/i386-host-defines-filtered %t/i386-device-defines-filtered // RUN: %clang --cuda-host-only -nocudainc -target x86_64-unknown-linux-gnu -x cuda -E -dM -o - /dev/null \ // RUN: | grep 'define __[^ ]*\(TYPE\|MAX\|SIZEOF|WIDTH\)\|define __GCC_ATOMIC' \ -// RUN: | grep -v '__LDBL\|_LONG_DOUBLE' > %T/x86_64-host-defines-filtered +// RUN: | grep -v '__FLT128\|__LDBL\|_LONG_DOUBLE' > %t/x86_64-host-defines-filtered // RUN: %clang --cuda-device-only -nocudainc -nocudalib -target x86_64-unknown-linux-gnu -x cuda -E -dM -o - /dev/null \ // RUN: | grep 'define __[^ ]*\(TYPE\|MAX\|SIZEOF|WIDTH\)\|define __GCC_ATOMIC' \ -// RUN: | grep -v '__LDBL\|_LONG_DOUBLE' > %T/x86_64-device-defines-filtered -// RUN: diff %T/x86_64-host-defines-filtered %T/x86_64-device-defines-filtered +// RUN: | grep -v '__FLT128\|__LDBL\|_LONG_DOUBLE' > %t/x86_64-device-defines-filtered +// RUN: diff %t/x86_64-host-defines-filtered %t/x86_64-device-defines-filtered // RUN: %clang --cuda-host-only -nocudainc -target powerpc64-unknown-linux-gnu -x cuda -E -dM -o - /dev/null \ // RUN: | grep 'define __[^ ]*\(TYPE\|MAX\|SIZEOF|WIDTH\)\|define __GCC_ATOMIC' \ -// RUN: | grep -v '__LDBL\|_LONG_DOUBLE' > %T/powerpc64-host-defines-filtered +// RUN: | grep -v '__FLT128\|__LDBL\|_LONG_DOUBLE' > %t/powerpc64-host-defines-filtered // RUN: %clang --cuda-device-only -nocudainc -nocudalib -target powerpc64-unknown-linux-gnu -x cuda -E -dM -o - /dev/null \ // RUN: | grep 'define __[^ ]*\(TYPE\|MAX\|SIZEOF|WIDTH\)\|define __GCC_ATOMIC' \ -// RUN: | grep -v '__LDBL\|_LONG_DOUBLE' > %T/powerpc64-device-defines-filtered -// RUN: diff %T/powerpc64-host-defines-filtered %T/powerpc64-device-defines-filtered +// RUN: | grep -v '__FLT128\|__LDBL\|_LONG_DOUBLE' > %t/powerpc64-device-defines-filtered +// RUN: diff %t/powerpc64-host-defines-filtered %t/powerpc64-device-defines-filtered // RUN: %clang --cuda-host-only -nocudainc -target i386-windows-msvc -x cuda -E -dM -o - /dev/null \ // RUN: | grep 'define __[^ ]*\(TYPE\|MAX\|SIZEOF|WIDTH\)\|define __GCC_ATOMIC' \ -// RUN: | grep -v '__LDBL\|_LONG_DOUBLE' > %T/i386-msvc-host-defines-filtered +// RUN: | grep -v '__FLT128\|__LDBL\|_LONG_DOUBLE' > %t/i386-msvc-host-defines-filtered // RUN: %clang --cuda-device-only -nocudainc -nocudalib -target i386-windows-msvc -x cuda -E -dM -o - /dev/null \ // RUN: | grep 'define __[^ ]*\(TYPE\|MAX\|SIZEOF|WIDTH\)\|define __GCC_ATOMIC' \ -// RUN: | grep -v '__LDBL\|_LONG_DOUBLE' > %T/i386-msvc-device-defines-filtered -// RUN: diff %T/i386-msvc-host-defines-filtered %T/i386-msvc-device-defines-filtered +// RUN: | grep -v '__FLT128\|__LDBL\|_LONG_DOUBLE' > %t/i386-msvc-device-defines-filtered +// RUN: diff %t/i386-msvc-host-defines-filtered %t/i386-msvc-device-defines-filtered // RUN: %clang --cuda-host-only -nocudainc -target x86_64-windows-msvc -x cuda -E -dM -o - /dev/null \ // RUN: | grep 'define __[^ ]*\(TYPE\|MAX\|SIZEOF|WIDTH\)\|define __GCC_ATOMIC' \ -// RUN: | grep -v '__LDBL\|_LONG_DOUBLE' > %T/x86_64-msvc-host-defines-filtered +// RUN: | grep -v '__FLT128\|__LDBL\|_LONG_DOUBLE' > %t/x86_64-msvc-host-defines-filtered // RUN: %clang --cuda-device-only -nocudainc -nocudalib -target x86_64-windows-msvc -x cuda -E -dM -o - /dev/null \ // RUN: | grep 'define __[^ ]*\(TYPE\|MAX\|SIZEOF|WIDTH\)\|define __GCC_ATOMIC' \ -// RUN: | grep -v '__LDBL\|_LONG_DOUBLE' > %T/x86_64-msvc-device-defines-filtered -// RUN: diff %T/x86_64-msvc-host-defines-filtered %T/x86_64-msvc-device-defines-filtered +// RUN: | grep -v '__FLT128\|__LDBL\|_LONG_DOUBLE' > %t/x86_64-msvc-device-defines-filtered +// RUN: diff %t/x86_64-msvc-host-defines-filtered %t/x86_64-msvc-device-defines-filtered diff --git a/test/Preprocessor/has_c_attribute.c b/test/Preprocessor/has_c_attribute.c new file mode 100644 index 000000000000..dc22da7e4cd6 --- /dev/null +++ b/test/Preprocessor/has_c_attribute.c @@ -0,0 +1,12 @@ +// RUN: %clang_cc1 -fdouble-square-bracket-attributes -std=c11 -E %s -o - | FileCheck %s + +// CHECK: has_fallthrough +#if __has_c_attribute(fallthrough) + int has_fallthrough(); +#endif + +// CHECK: does_not_have_selectany +#if !__has_c_attribute(selectany) + int does_not_have_selectany(); +#endif + diff --git a/test/Preprocessor/hexagon-predefines.c b/test/Preprocessor/hexagon-predefines.c index 065ecc069422..fe87262ae635 100644 --- a/test/Preprocessor/hexagon-predefines.c +++ b/test/Preprocessor/hexagon-predefines.c @@ -1,32 +1,57 @@ // RUN: %clang_cc1 -E -dM -triple hexagon-unknown-elf -target-cpu hexagonv5 %s | FileCheck %s -check-prefix CHECK-V5 - // CHECK-V5: #define __HEXAGON_ARCH__ 5 // CHECK-V5: #define __HEXAGON_V5__ 1 +// CHECK-V5-NOT: #define __HVX_LENGTH__ +// CHECK-V5-NOT: #define __HVX__ 1 // CHECK-V5: #define __hexagon__ 1 // RUN: %clang_cc1 -E -dM -triple hexagon-unknown-elf -target-cpu hexagonv55 %s | FileCheck %s -check-prefix CHECK-V55 - // CHECK-V55: #define __HEXAGON_ARCH__ 55 // CHECK-V55: #define __HEXAGON_V55__ 1 +// CHECK-V55-NOT: #define __HVX_LENGTH__ +// CHECK-V55-NOT: #define __HVX__ 1 // CHECK-V55: #define __hexagon__ 1 // RUN: %clang_cc1 -E -dM -triple hexagon-unknown-elf -target-cpu hexagonv60 %s | FileCheck %s -check-prefix CHECK-V60 - // CHECK-V60: #define __HEXAGON_ARCH__ 60 // CHECK-V60: #define __HEXAGON_V60__ 1 +// CHECK-V60-NOT: #define __HVX_LENGTH__ +// CHECK-V60-NOT: #define __HVX__ 1 // CHECK-V60: #define __hexagon__ 1 -// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-elf -target-cpu hexagonv60 -target-feature +hvx %s | FileCheck %s -check-prefix CHECK-V60HVX - -// CHECK-V60HVX: #define __HEXAGON_ARCH__ 60 -// CHECK-V60HVX: #define __HEXAGON_V60__ 1 -// CHECK-V60HVX: #define __HVX__ 1 +// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-elf -target-cpu hexagonv62 %s | FileCheck %s -check-prefix CHECK-V62 +// CHECK-V62: #define __HEXAGON_ARCH__ 62 +// CHECK-V62: #define __HEXAGON_V62__ 1 +// CHECK-V62-NOT: #define __HVX_LENGTH__ +// CHECK-V62-NOT: #define __HVX__ 1 +// CHECK-V62: #define __hexagon__ 1 -// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-elf -target-cpu hexagonv60 -target-feature +hvx-double %s | FileCheck %s -check-prefix CHECK-V60HVXD +// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-elf -target-cpu hexagonv65 %s | FileCheck %s -check-prefix CHECK-V65 +// CHECK-V65: #define __HEXAGON_ARCH__ 65 +// CHECK-V65: #define __HEXAGON_V65__ 1 +// CHECK-V65-NOT: #define __HVX_LENGTH__ +// CHECK-V65-NOT: #define __HVX__ 1 +// CHECK-V65: #define __hexagon__ 1 -// CHECK-V60HVXD: #define __HEXAGON_ARCH__ 60 -// CHECK-V60HVXD: #define __HEXAGON_V60__ 1 -// CHECK-V60HVXD: #define __HVXDBL__ 1 -// CHECK-V60HVXD: #define __HVX__ 1 -// CHECK-V60HVXD: #define __hexagon__ 1 +// The HVX flags are explicitly defined by the driver. +// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-elf -target-cpu hexagonv60 \ +// RUN: -target-feature +hvxv60 -target-feature +hvx-length64b %s | FileCheck \ +// RUN: %s -check-prefix CHECK-V60HVX-64B +// CHECK-V60HVX-64B: #define __HEXAGON_ARCH__ 60 +// CHECK-V60HVX-64B: #define __HEXAGON_V60__ 1 +// CHECK-V60HVX-64B-NOT: #define __HVXDBL__ 1 +// CHECK-V60HVX-64B: #define __HVX_ARCH__ 60 +// CHECK-V60HVX-64B: #define __HVX_LENGTH__ 64 +// CHECK-V60HVX-64B: #define __HVX__ 1 +// CHECK-V60HVX-64B: #define __hexagon__ 1 +// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-elf -target-cpu hexagonv60 \ +// RUN: -target-feature +hvxv60 -target-feature +hvx-length128b %s | FileCheck \ +// RUN: %s -check-prefix CHECK-V60HVX-128B +// CHECK-V60HVX-128B: #define __HEXAGON_ARCH__ 60 +// CHECK-V60HVX-128B: #define __HEXAGON_V60__ 1 +// CHECK-V60HVX-128B: #define __HVXDBL__ 1 +// CHECK-V60HVX-128B: #define __HVX_ARCH__ 60 +// CHECK-V60HVX-128B: #define __HVX_LENGTH__ 128 +// CHECK-V60HVX-128B: #define __HVX__ 1 +// CHECK-V60HVX-128B: #define __hexagon__ 1 diff --git a/test/Preprocessor/init.c b/test/Preprocessor/init.c index 5a77d06d2403..51e1233456b8 100644 --- a/test/Preprocessor/init.c +++ b/test/Preprocessor/init.c @@ -253,18 +253,18 @@ // SCHAR-NOT:#define __UNSIGNED_CHAR__ // SCHAR:#define __clang__ 1 // -// RUN: %clang_cc1 -E -dM -fshort-wchar < /dev/null | FileCheck -match-full-lines -check-prefix SHORTWCHAR %s +// RUN: %clang_cc1 -E -dM -fwchar-type=short -fno-signed-wchar < /dev/null | FileCheck -match-full-lines -check-prefix SHORTWCHAR %s // wchar_t is u16 for targeting Win32. -// FIXME: Implement and check x86_64-cygwin. -// RUN: %clang_cc1 -E -dM -fno-short-wchar -triple=x86_64-w64-mingw32 < /dev/null | FileCheck -match-full-lines -check-prefix SHORTWCHAR %s +// RUN: %clang_cc1 -E -dM -fwchar-type=short -fno-signed-wchar -triple=x86_64-w64-mingw32 < /dev/null | FileCheck -match-full-lines -check-prefix SHORTWCHAR %s +// RUN: %clang_cc1 -dM -fwchar-type=short -fno-signed-wchar -triple=x86_64-unknown-windows-cygnus -E /dev/null | FileCheck -match-full-lines -check-prefix SHORTWCHAR %s // // SHORTWCHAR: #define __SIZEOF_WCHAR_T__ 2 // SHORTWCHAR: #define __WCHAR_MAX__ 65535 // SHORTWCHAR: #define __WCHAR_TYPE__ unsigned short // SHORTWCHAR: #define __WCHAR_WIDTH__ 16 // -// RUN: %clang_cc1 -E -dM -fno-short-wchar -triple=i686-unknown-unknown < /dev/null | FileCheck -match-full-lines -check-prefix SHORTWCHAR2 %s -// RUN: %clang_cc1 -E -dM -fno-short-wchar -triple=x86_64-unknown-unknown < /dev/null | FileCheck -match-full-lines -check-prefix SHORTWCHAR2 %s +// RUN: %clang_cc1 -E -dM -fwchar-type=int -triple=i686-unknown-unknown < /dev/null | FileCheck -match-full-lines -check-prefix SHORTWCHAR2 %s +// RUN: %clang_cc1 -E -dM -fwchar-type=int -triple=x86_64-unknown-unknown < /dev/null | FileCheck -match-full-lines -check-prefix SHORTWCHAR2 %s // // SHORTWCHAR2: #define __SIZEOF_WCHAR_T__ 4 // SHORTWCHAR2: #define __WCHAR_WIDTH__ 32 @@ -301,6 +301,20 @@ // AARCH64:#define __DBL_MIN_EXP__ (-1021) // AARCH64:#define __DBL_MIN__ 2.2250738585072014e-308 // AARCH64:#define __DECIMAL_DIG__ __LDBL_DECIMAL_DIG__ +// AARCH64:#define __FLT16_DECIMAL_DIG__ 5 +// AARCH64:#define __FLT16_DENORM_MIN__ 5.9604644775390625e-8F16 +// AARCH64:#define __FLT16_DIG__ 3 +// AARCH64:#define __FLT16_EPSILON__ 9.765625e-4F16 +// AARCH64:#define __FLT16_HAS_DENORM__ 1 +// AARCH64:#define __FLT16_HAS_INFINITY__ 1 +// AARCH64:#define __FLT16_HAS_QUIET_NAN__ 1 +// AARCH64:#define __FLT16_MANT_DIG__ 11 +// AARCH64:#define __FLT16_MAX_10_EXP__ 4 +// AARCH64:#define __FLT16_MAX_EXP__ 15 +// AARCH64:#define __FLT16_MAX__ 6.5504e+4F16 +// AARCH64:#define __FLT16_MIN_10_EXP__ (-13) +// AARCH64:#define __FLT16_MIN_EXP__ (-14) +// AARCH64:#define __FLT16_MIN__ 6.103515625e-5F16 // AARCH64:#define __FLT_DENORM_MIN__ 1.40129846e-45F // AARCH64:#define __FLT_DIG__ 6 // AARCH64:#define __FLT_EPSILON__ 1.19209290e-7F @@ -946,7 +960,7 @@ // AARCH64-OPENBSD:#define __INT_LEAST32_FMTd__ "d" // AARCH64-OPENBSD:#define __INT_LEAST32_FMTi__ "i" // AARCH64-OPENBSD:#define __INT_LEAST32_MAX__ 2147483647 -// AARCH64-OPENSD:#define __INT_LEAST32_TYPE__ int +// AARCH64-OPENBSD:#define __INT_LEAST32_TYPE__ int // AARCH64-OPENBSD:#define __INT_LEAST64_FMTd__ "ld" // AARCH64-OPENBSD:#define __INT_LEAST64_FMTi__ "li" // AARCH64-OPENBSD:#define __INT_LEAST64_MAX__ 9223372036854775807L @@ -1229,6 +1243,7 @@ // AARCH64-FREEBSD:#define __WCHAR_TYPE__ unsigned int // AARCH64-FREEBSD:#define __WCHAR_UNSIGNED__ 1 // AARCH64-FREEBSD:#define __WCHAR_WIDTH__ 32 +// AARCH64-FREEBSD:#define __WINT_MAX__ 2147483647 // AARCH64-FREEBSD:#define __WINT_TYPE__ int // AARCH64-FREEBSD:#define __WINT_WIDTH__ 32 // AARCH64-FREEBSD:#define __aarch64__ 1 @@ -1236,13 +1251,13 @@ // RUN: %clang_cc1 -E -dM -ffreestanding -triple=aarch64-apple-ios7.0 < /dev/null | FileCheck -match-full-lines -check-prefix AARCH64-DARWIN %s // // AARCH64-DARWIN: #define _LP64 1 -// AARCH64-NOT: #define __AARCH64EB__ 1 +// AARCH64-DARWIN-NOT: #define __AARCH64EB__ 1 // AARCH64-DARWIN: #define __AARCH64EL__ 1 -// AARCH64-NOT: #define __AARCH_BIG_ENDIAN 1 +// AARCH64-DARWIN-NOT: #define __AARCH_BIG_ENDIAN 1 // AARCH64-DARWIN: #define __ARM_64BIT_STATE 1 // AARCH64-DARWIN: #define __ARM_ARCH 8 // AARCH64-DARWIN: #define __ARM_ARCH_ISA_A64 1 -// AARCH64-NOT: #define __ARM_BIG_ENDIAN 1 +// AARCH64-DARWIN-NOT: #define __ARM_BIG_ENDIAN 1 // AARCH64-DARWIN: #define __BIGGEST_ALIGNMENT__ 8 // AARCH64-DARWIN: #define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__ // AARCH64-DARWIN: #define __CHAR16_TYPE__ unsigned short @@ -1424,6 +1439,173 @@ // AARCH64-DARWIN: #define __WINT_WIDTH__ 32 // AARCH64-DARWIN: #define __aarch64__ 1 +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=thumbv7-windows-msvc < /dev/null | FileCheck -match-full-lines -check-prefix ARM-MSVC %s +// +// ARM-MSVC: #define _M_ARM_NT 1 +// ARM-MSVC: #define _WIN32 1 +// ARM-MSVC-NOT:#define __ARM_DWARF_EH__ 1 + +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=aarch64-windows-msvc < /dev/null | FileCheck -match-full-lines -check-prefix AARCH64-MSVC %s +// +// AARCH64-MSVC: #define _INTEGRAL_MAX_BITS 64 +// AARCH64-MSVC-NOT: #define _LP64 1 +// AARCH64-MSVC: #define _M_ARM64 1 +// AARCH64-MSVC: #define _WIN32 1 +// AARCH64-MSVC: #define _WIN64 1 +// AARCH64-MSVC: #define __AARCH64EL__ 1 +// AARCH64-MSVC: #define __ARM_64BIT_STATE 1 +// AARCH64-MSVC: #define __ARM_ACLE 200 +// AARCH64-MSVC: #define __ARM_ALIGN_MAX_STACK_PWR 4 +// AARCH64-MSVC: #define __ARM_ARCH 8 +// AARCH64-MSVC: #define __ARM_ARCH_ISA_A64 1 +// AARCH64-MSVC: #define __ARM_ARCH_PROFILE 'A' +// AARCH64-MSVC: #define __ARM_FEATURE_CLZ 1 +// AARCH64-MSVC: #define __ARM_FEATURE_DIRECTED_ROUNDING 1 +// AARCH64-MSVC: #define __ARM_FEATURE_DIV 1 +// AARCH64-MSVC: #define __ARM_FEATURE_FMA 1 +// AARCH64-MSVC: #define __ARM_FEATURE_IDIV 1 +// AARCH64-MSVC: #define __ARM_FEATURE_LDREX 0xF +// AARCH64-MSVC: #define __ARM_FEATURE_NUMERIC_MAXMIN 1 +// AARCH64-MSVC: #define __ARM_FEATURE_UNALIGNED 1 +// AARCH64-MSVC: #define __ARM_FP 0xE +// AARCH64-MSVC: #define __ARM_FP16_ARGS 1 +// AARCH64-MSVC: #define __ARM_FP16_FORMAT_IEEE 1 +// AARCH64-MSVC: #define __ARM_PCS_AAPCS64 1 +// AARCH64-MSVC: #define __ARM_SIZEOF_MINIMAL_ENUM 4 +// AARCH64-MSVC: #define __ARM_SIZEOF_WCHAR_T 4 +// AARCH64-MSVC: #define __BIGGEST_ALIGNMENT__ 16 +// AARCH64-MSVC: #define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__ +// AARCH64-MSVC: #define __CHAR16_TYPE__ unsigned short +// AARCH64-MSVC: #define __CHAR32_TYPE__ unsigned int +// AARCH64-MSVC: #define __CHAR_BIT__ 8 +// AARCH64-MSVC: #define __CONSTANT_CFSTRINGS__ 1 +// AARCH64-MSVC: #define __DBL_DECIMAL_DIG__ 17 +// AARCH64-MSVC: #define __DBL_DENORM_MIN__ 4.9406564584124654e-324 +// AARCH64-MSVC: #define __DBL_DIG__ 15 +// AARCH64-MSVC: #define __DBL_EPSILON__ 2.2204460492503131e-16 +// AARCH64-MSVC: #define __DBL_HAS_DENORM__ 1 +// AARCH64-MSVC: #define __DBL_HAS_INFINITY__ 1 +// AARCH64-MSVC: #define __DBL_HAS_QUIET_NAN__ 1 +// AARCH64-MSVC: #define __DBL_MANT_DIG__ 53 +// AARCH64-MSVC: #define __DBL_MAX_10_EXP__ 308 +// AARCH64-MSVC: #define __DBL_MAX_EXP__ 1024 +// AARCH64-MSVC: #define __DBL_MAX__ 1.7976931348623157e+308 +// AARCH64-MSVC: #define __DBL_MIN_10_EXP__ (-307) +// AARCH64-MSVC: #define __DBL_MIN_EXP__ (-1021) +// AARCH64-MSVC: #define __DBL_MIN__ 2.2250738585072014e-308 +// AARCH64-MSVC: #define __DECIMAL_DIG__ __LDBL_DECIMAL_DIG__ +// AARCH64-MSVC: #define __FINITE_MATH_ONLY__ 0 +// AARCH64-MSVC: #define __FLT_DECIMAL_DIG__ 9 +// AARCH64-MSVC: #define __FLT_DENORM_MIN__ 1.40129846e-45F +// AARCH64-MSVC: #define __FLT_DIG__ 6 +// AARCH64-MSVC: #define __FLT_EPSILON__ 1.19209290e-7F +// AARCH64-MSVC: #define __FLT_EVAL_METHOD__ 0 +// AARCH64-MSVC: #define __FLT_HAS_DENORM__ 1 +// AARCH64-MSVC: #define __FLT_HAS_INFINITY__ 1 +// AARCH64-MSVC: #define __FLT_HAS_QUIET_NAN__ 1 +// AARCH64-MSVC: #define __FLT_MANT_DIG__ 24 +// AARCH64-MSVC: #define __FLT_MAX_10_EXP__ 38 +// AARCH64-MSVC: #define __FLT_MAX_EXP__ 128 +// AARCH64-MSVC: #define __FLT_MAX__ 3.40282347e+38F +// AARCH64-MSVC: #define __FLT_MIN_10_EXP__ (-37) +// AARCH64-MSVC: #define __FLT_MIN_EXP__ (-125) +// AARCH64-MSVC: #define __FLT_MIN__ 1.17549435e-38F +// AARCH64-MSVC: #define __FLT_RADIX__ 2 +// AARCH64-MSVC: #define __INT_MAX__ 2147483647 +// AARCH64-MSVC: #define __LDBL_DECIMAL_DIG__ 17 +// AARCH64-MSVC: #define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L +// AARCH64-MSVC: #define __LDBL_DIG__ 15 +// AARCH64-MSVC: #define __LDBL_EPSILON__ 2.2204460492503131e-16L +// AARCH64-MSVC: #define __LDBL_HAS_DENORM__ 1 +// AARCH64-MSVC: #define __LDBL_HAS_INFINITY__ 1 +// AARCH64-MSVC: #define __LDBL_HAS_QUIET_NAN__ 1 +// AARCH64-MSVC: #define __LDBL_MANT_DIG__ 53 +// AARCH64-MSVC: #define __LDBL_MAX_10_EXP__ 308 +// AARCH64-MSVC: #define __LDBL_MAX_EXP__ 1024 +// AARCH64-MSVC: #define __LDBL_MAX__ 1.7976931348623157e+308L +// AARCH64-MSVC: #define __LDBL_MIN_10_EXP__ (-307) +// AARCH64-MSVC: #define __LDBL_MIN_EXP__ (-1021) +// AARCH64-MSVC: #define __LDBL_MIN__ 2.2250738585072014e-308L +// AARCH64-MSVC: #define __LITTLE_ENDIAN__ 1 +// AARCH64-MSVC: #define __LONG_LONG_MAX__ 9223372036854775807LL +// AARCH64-MSVC: #define __LONG_MAX__ 2147483647L +// AARCH64-MSVC-NOT: #define __LP64__ 1 +// AARCH64-MSVC: #define __NO_INLINE__ 1 +// AARCH64-MSVC: #define __OBJC_BOOL_IS_BOOL 0 +// AARCH64-MSVC: #define __ORDER_BIG_ENDIAN__ 4321 +// AARCH64-MSVC: #define __ORDER_LITTLE_ENDIAN__ 1234 +// AARCH64-MSVC: #define __ORDER_PDP_ENDIAN__ 3412 +// AARCH64-MSVC: #define __POINTER_WIDTH__ 64 +// AARCH64-MSVC: #define __PRAGMA_REDEFINE_EXTNAME 1 +// AARCH64-MSVC: #define __SCHAR_MAX__ 127 +// AARCH64-MSVC: #define __SHRT_MAX__ 32767 +// AARCH64-MSVC: #define __SIG_ATOMIC_MAX__ 2147483647 +// AARCH64-MSVC: #define __SIG_ATOMIC_WIDTH__ 32 +// AARCH64-MSVC: #define __SIZEOF_DOUBLE__ 8 +// AARCH64-MSVC: #define __SIZEOF_FLOAT__ 4 +// AARCH64-MSVC: #define __SIZEOF_INT128__ 16 +// AARCH64-MSVC: #define __SIZEOF_INT__ 4 +// AARCH64-MSVC: #define __SIZEOF_LONG_DOUBLE__ 8 +// AARCH64-MSVC: #define __SIZEOF_LONG_LONG__ 8 +// AARCH64-MSVC: #define __SIZEOF_LONG__ 4 +// AARCH64-MSVC: #define __SIZEOF_POINTER__ 8 +// AARCH64-MSVC: #define __SIZEOF_PTRDIFF_T__ 8 +// AARCH64-MSVC: #define __SIZEOF_SHORT__ 2 +// AARCH64-MSVC: #define __SIZEOF_SIZE_T__ 8 +// AARCH64-MSVC: #define __SIZEOF_WCHAR_T__ 2 +// AARCH64-MSVC: #define __SIZEOF_WINT_T__ 4 +// AARCH64-MSVC: #define __SIZE_MAX__ 18446744073709551615ULL +// AARCH64-MSVC: #define __SIZE_TYPE__ long long unsigned int +// AARCH64-MSVC: #define __SIZE_WIDTH__ 64 +// AARCH64-MSVC: #define __STDC_HOSTED__ 0 +// AARCH64-MSVC: #define __STDC_UTF_16__ 1 +// AARCH64-MSVC: #define __STDC_UTF_32__ 1 +// AARCH64-MSVC: #define __STDC_VERSION__ 201112L +// AARCH64-MSVC: #define __STDC__ 1 +// AARCH64-MSVC: #define __UINT16_C_SUFFIX__ +// AARCH64-MSVC: #define __UINT16_MAX__ 65535 +// AARCH64-MSVC: #define __UINT16_TYPE__ unsigned short +// AARCH64-MSVC: #define __UINT32_C_SUFFIX__ U +// AARCH64-MSVC: #define __UINT32_MAX__ 4294967295U +// AARCH64-MSVC: #define __UINT32_TYPE__ unsigned int +// AARCH64-MSVC: #define __UINT64_C_SUFFIX__ ULL +// AARCH64-MSVC: #define __UINT64_MAX__ 18446744073709551615ULL +// AARCH64-MSVC: #define __UINT64_TYPE__ long long unsigned int +// AARCH64-MSVC: #define __UINT8_C_SUFFIX__ +// AARCH64-MSVC: #define __UINT8_MAX__ 255 +// AARCH64-MSVC: #define __UINT8_TYPE__ unsigned char +// AARCH64-MSVC: #define __UINTMAX_C_SUFFIX__ ULL +// AARCH64-MSVC: #define __UINTMAX_MAX__ 18446744073709551615ULL +// AARCH64-MSVC: #define __UINTMAX_TYPE__ long long unsigned int +// AARCH64-MSVC: #define __UINTMAX_WIDTH__ 64 +// AARCH64-MSVC: #define __UINTPTR_MAX__ 18446744073709551615ULL +// AARCH64-MSVC: #define __UINTPTR_TYPE__ long long unsigned int +// AARCH64-MSVC: #define __UINTPTR_WIDTH__ 64 +// AARCH64-MSVC: #define __UINT_FAST16_MAX__ 65535 +// AARCH64-MSVC: #define __UINT_FAST16_TYPE__ unsigned short +// AARCH64-MSVC: #define __UINT_FAST32_MAX__ 4294967295U +// AARCH64-MSVC: #define __UINT_FAST32_TYPE__ unsigned int +// AARCH64-MSVC: #define __UINT_FAST64_MAX__ 18446744073709551615ULL +// AARCH64-MSVC: #define __UINT_FAST64_TYPE__ long long unsigned int +// AARCH64-MSVC: #define __UINT_FAST8_MAX__ 255 +// AARCH64-MSVC: #define __UINT_FAST8_TYPE__ unsigned char +// AARCH64-MSVC: #define __UINT_LEAST16_MAX__ 65535 +// AARCH64-MSVC: #define __UINT_LEAST16_TYPE__ unsigned short +// AARCH64-MSVC: #define __UINT_LEAST32_MAX__ 4294967295U +// AARCH64-MSVC: #define __UINT_LEAST32_TYPE__ unsigned int +// AARCH64-MSVC: #define __UINT_LEAST64_MAX__ 18446744073709551615ULL +// AARCH64-MSVC: #define __UINT_LEAST64_TYPE__ long long unsigned int +// AARCH64-MSVC: #define __UINT_LEAST8_MAX__ 255 +// AARCH64-MSVC: #define __UINT_LEAST8_TYPE__ unsigned char +// AARCH64-MSVC: #define __USER_LABEL_PREFIX__ +// AARCH64-MSVC: #define __WCHAR_MAX__ 65535 +// AARCH64-MSVC: #define __WCHAR_TYPE__ unsigned short +// AARCH64-MSVC: #define __WCHAR_UNSIGNED__ 1 +// AARCH64-MSVC: #define __WCHAR_WIDTH__ 16 +// AARCH64-MSVC: #define __WINT_TYPE__ int +// AARCH64-MSVC: #define __WINT_WIDTH__ 32 +// AARCH64-MSVC: #define __aarch64__ 1 + // RUN: %clang_cc1 -E -dM -ffreestanding -triple=arm-none-none < /dev/null | FileCheck -match-full-lines -check-prefix ARM %s // RUN: %clang_cc1 -x c++ -E -dM -ffreestanding -triple=arm-none-none < /dev/null | FileCheck -match-full-lines -check-prefix ARM -check-prefix ARM-CXX %s // @@ -1493,10 +1675,10 @@ // ARM:#define __INTMAX_MAX__ 9223372036854775807LL // ARM:#define __INTMAX_TYPE__ long long int // ARM:#define __INTMAX_WIDTH__ 64 -// ARM:#define __INTPTR_FMTd__ "ld" -// ARM:#define __INTPTR_FMTi__ "li" -// ARM:#define __INTPTR_MAX__ 2147483647L -// ARM:#define __INTPTR_TYPE__ long int +// ARM:#define __INTPTR_FMTd__ "d" +// ARM:#define __INTPTR_FMTi__ "i" +// ARM:#define __INTPTR_MAX__ 2147483647 +// ARM:#define __INTPTR_TYPE__ int // ARM:#define __INTPTR_WIDTH__ 32 // ARM:#define __INT_FAST16_FMTd__ "hd" // ARM:#define __INT_FAST16_FMTi__ "hi" @@ -1588,8 +1770,8 @@ // ARM:#define __UINTMAX_MAX__ 18446744073709551615ULL // ARM:#define __UINTMAX_TYPE__ long long unsigned int // ARM:#define __UINTMAX_WIDTH__ 64 -// ARM:#define __UINTPTR_MAX__ 4294967295UL -// ARM:#define __UINTPTR_TYPE__ long unsigned int +// ARM:#define __UINTPTR_MAX__ 4294967295U +// ARM:#define __UINTPTR_TYPE__ unsigned int // ARM:#define __UINTPTR_WIDTH__ 32 // ARM:#define __UINT_FAST16_MAX__ 65535 // ARM:#define __UINT_FAST16_TYPE__ unsigned short @@ -1616,6 +1798,11 @@ // ARM:#define __arm 1 // ARM:#define __arm__ 1 +// RUN: %clang_cc1 -dM -ffreestanding -triple arm-none-none -target-abi apcs-gnu -E /dev/null -o - | FileCheck -match-full-lines -check-prefix ARM-APCS-GNU %s +// ARM-APCS-GNU: #define __INTPTR_TYPE__ int +// ARM-APCS-GNU: #define __PTRDIFF_TYPE__ int +// ARM-APCS-GNU: #define __SIZE_TYPE__ unsigned int + // RUN: %clang_cc1 -E -dM -ffreestanding -triple=armeb-none-none < /dev/null | FileCheck -match-full-lines -check-prefix ARM-BE %s // // ARM-BE-NOT:#define _LP64 @@ -1685,10 +1872,10 @@ // ARM-BE:#define __INTMAX_MAX__ 9223372036854775807LL // ARM-BE:#define __INTMAX_TYPE__ long long int // ARM-BE:#define __INTMAX_WIDTH__ 64 -// ARM-BE:#define __INTPTR_FMTd__ "ld" -// ARM-BE:#define __INTPTR_FMTi__ "li" -// ARM-BE:#define __INTPTR_MAX__ 2147483647L -// ARM-BE:#define __INTPTR_TYPE__ long int +// ARM-BE:#define __INTPTR_FMTd__ "d" +// ARM-BE:#define __INTPTR_FMTi__ "i" +// ARM-BE:#define __INTPTR_MAX__ 2147483647 +// ARM-BE:#define __INTPTR_TYPE__ int // ARM-BE:#define __INTPTR_WIDTH__ 32 // ARM-BE:#define __INT_FAST16_FMTd__ "hd" // ARM-BE:#define __INT_FAST16_FMTi__ "hi" @@ -1778,8 +1965,8 @@ // ARM-BE:#define __UINTMAX_MAX__ 18446744073709551615ULL // ARM-BE:#define __UINTMAX_TYPE__ long long unsigned int // ARM-BE:#define __UINTMAX_WIDTH__ 64 -// ARM-BE:#define __UINTPTR_MAX__ 4294967295UL -// ARM-BE:#define __UINTPTR_TYPE__ long unsigned int +// ARM-BE:#define __UINTPTR_MAX__ 4294967295U +// ARM-BE:#define __UINTPTR_TYPE__ unsigned int // ARM-BE:#define __UINTPTR_WIDTH__ 32 // ARM-BE:#define __UINT_FAST16_MAX__ 65535 // ARM-BE:#define __UINT_FAST16_TYPE__ unsigned short @@ -1878,10 +2065,10 @@ // ARMEABISOFTFP:#define __INTMAX_MAX__ 9223372036854775807LL // ARMEABISOFTFP:#define __INTMAX_TYPE__ long long int // ARMEABISOFTFP:#define __INTMAX_WIDTH__ 64 -// ARMEABISOFTFP:#define __INTPTR_FMTd__ "ld" -// ARMEABISOFTFP:#define __INTPTR_FMTi__ "li" -// ARMEABISOFTFP:#define __INTPTR_MAX__ 2147483647L -// ARMEABISOFTFP:#define __INTPTR_TYPE__ long int +// ARMEABISOFTFP:#define __INTPTR_FMTd__ "d" +// ARMEABISOFTFP:#define __INTPTR_FMTi__ "i" +// ARMEABISOFTFP:#define __INTPTR_MAX__ 2147483647 +// ARMEABISOFTFP:#define __INTPTR_TYPE__ int // ARMEABISOFTFP:#define __INTPTR_WIDTH__ 32 // ARMEABISOFTFP:#define __INT_FAST16_FMTd__ "hd" // ARMEABISOFTFP:#define __INT_FAST16_FMTi__ "hi" @@ -1973,8 +2160,8 @@ // ARMEABISOFTFP:#define __UINTMAX_MAX__ 18446744073709551615ULL // ARMEABISOFTFP:#define __UINTMAX_TYPE__ long long unsigned int // ARMEABISOFTFP:#define __UINTMAX_WIDTH__ 64 -// ARMEABISOFTFP:#define __UINTPTR_MAX__ 4294967295UL -// ARMEABISOFTFP:#define __UINTPTR_TYPE__ long unsigned int +// ARMEABISOFTFP:#define __UINTPTR_MAX__ 4294967295U +// ARMEABISOFTFP:#define __UINTPTR_TYPE__ unsigned int // ARMEABISOFTFP:#define __UINTPTR_WIDTH__ 32 // ARMEABISOFTFP:#define __UINT_FAST16_MAX__ 65535 // ARMEABISOFTFP:#define __UINT_FAST16_TYPE__ unsigned short @@ -2073,10 +2260,10 @@ // ARMEABIHARDFP:#define __INTMAX_MAX__ 9223372036854775807LL // ARMEABIHARDFP:#define __INTMAX_TYPE__ long long int // ARMEABIHARDFP:#define __INTMAX_WIDTH__ 64 -// ARMEABIHARDFP:#define __INTPTR_FMTd__ "ld" -// ARMEABIHARDFP:#define __INTPTR_FMTi__ "li" -// ARMEABIHARDFP:#define __INTPTR_MAX__ 2147483647L -// ARMEABIHARDFP:#define __INTPTR_TYPE__ long int +// ARMEABIHARDFP:#define __INTPTR_FMTd__ "d" +// ARMEABIHARDFP:#define __INTPTR_FMTi__ "i" +// ARMEABIHARDFP:#define __INTPTR_MAX__ 2147483647 +// ARMEABIHARDFP:#define __INTPTR_TYPE__ int // ARMEABIHARDFP:#define __INTPTR_WIDTH__ 32 // ARMEABIHARDFP:#define __INT_FAST16_FMTd__ "hd" // ARMEABIHARDFP:#define __INT_FAST16_FMTi__ "hi" @@ -2168,8 +2355,8 @@ // ARMEABIHARDFP:#define __UINTMAX_MAX__ 18446744073709551615ULL // ARMEABIHARDFP:#define __UINTMAX_TYPE__ long long unsigned int // ARMEABIHARDFP:#define __UINTMAX_WIDTH__ 64 -// ARMEABIHARDFP:#define __UINTPTR_MAX__ 4294967295UL -// ARMEABIHARDFP:#define __UINTPTR_TYPE__ long unsigned int +// ARMEABIHARDFP:#define __UINTPTR_MAX__ 4294967295U +// ARMEABIHARDFP:#define __UINTPTR_TYPE__ unsigned int // ARMEABIHARDFP:#define __UINTPTR_WIDTH__ 32 // ARMEABIHARDFP:#define __UINT_FAST16_MAX__ 65535 // ARMEABIHARDFP:#define __UINT_FAST16_TYPE__ unsigned short @@ -2413,13 +2600,6 @@ // RUN: %clang -target x86_64-apple-darwin -arch armv7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARM-MACHO-NO-EABI %s // ARM-MACHO-NO-EABI-NOT: #define __ARM_EABI__ 1 -// RUN: %clang_cc1 -E -dM -ffreestanding -triple=armv7-bitrig-gnueabihf < /dev/null | FileCheck -match-full-lines -check-prefix ARM-BITRIG %s -// ARM-BITRIG:#define __ARM_DWARF_EH__ 1 -// ARM-BITRIG:#define __SIZEOF_SIZE_T__ 4 -// ARM-BITRIG:#define __SIZE_MAX__ 4294967295UL -// ARM-BITRIG:#define __SIZE_TYPE__ long unsigned int -// ARM-BITRIG:#define __SIZE_WIDTH__ 32 - // Check that -mhwdiv works properly for targets which don't have the hwdiv feature enabled by default. // RUN: %clang -target arm -mhwdiv=arm -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMHWDIV-ARM %s @@ -2472,6 +2652,10 @@ // Thumbebv7: #define __THUMB_INTERWORK__ 1 // Thumbebv7: #define __thumb2__ 1 +// RUN: %clang -E -dM -ffreestanding -target thumbv7-pc-mingw32 %s -o - | FileCheck -match-full-lines -check-prefix THUMB-MINGW %s + +// THUMB-MINGW:#define __ARM_DWARF_EH__ 1 + // // RUN: %clang_cc1 -E -dM -ffreestanding -triple=i386-none-none < /dev/null | FileCheck -match-full-lines -check-prefix I386 %s // @@ -4706,6 +4890,16 @@ // RUN: | FileCheck -match-full-lines -check-prefix NOMIPS-NAN2008 %s // NOMIPS-NAN2008-NOT:#define __mips_nan2008 1 // +// RUN: %clang_cc1 -target-cpu mips32r3 -target-feature +abs2008 \ +// RUN: -E -dM -triple=mips-none-none < /dev/null \ +// RUN: | FileCheck -match-full-lines -check-prefix MIPS-ABS2008 %s +// MIPS-ABS2008:#define __mips_abs2008 1 +// +// RUN: %clang_cc1 -target-cpu mips32r3 -target-feature -abs2008 \ +// RUN: -E -dM -triple=mips-none-none < /dev/null \ +// RUN: | FileCheck -match-full-lines -check-prefix NOMIPS-ABS2008 %s +// NOMIPS-ABS2008-NOT:#define __mips_abs2008 1 +// // RUN: %clang_cc1 -target-feature -fp64 \ // RUN: -E -dM -triple=mips-none-none < /dev/null \ // RUN: | FileCheck -match-full-lines -check-prefix MIPS32-MFP32 %s @@ -8247,6 +8441,7 @@ // X86_64-CLOUDABI:#define __WCHAR_MAX__ 2147483647 // X86_64-CLOUDABI:#define __WCHAR_TYPE__ int // X86_64-CLOUDABI:#define __WCHAR_WIDTH__ 32 +// X86_64-CLOUDABI:#define __WINT_MAX__ 2147483647 // X86_64-CLOUDABI:#define __WINT_TYPE__ int // X86_64-CLOUDABI:#define __WINT_WIDTH__ 32 // X86_64-CLOUDABI:#define __amd64 1 @@ -8801,6 +8996,7 @@ // KFREEBSDI686-DEFINE:#define __GLIBC__ 1 // // RUN: %clang_cc1 -x c++ -triple i686-pc-linux-gnu -fobjc-runtime=gcc -E -dM < /dev/null | FileCheck -match-full-lines -check-prefix GNUSOURCE %s +// RUN: %clang_cc1 -x c++ -triple sparc-rtems-elf -E -dM < /dev/null | FileCheck -match-full-lines -check-prefix GNUSOURCE %s // GNUSOURCE:#define _GNU_SOURCE 1 // // RUN: %clang_cc1 -x c++ -std=c++98 -fno-rtti -E -dM < /dev/null | FileCheck -match-full-lines -check-prefix NORTTI %s @@ -8906,7 +9102,7 @@ // WEBASSEMBLY32-NEXT:#define __DECIMAL_DIG__ __LDBL_DECIMAL_DIG__ // WEBASSEMBLY32-NOT:#define __ELF__ // WEBASSEMBLY32-NEXT:#define __FINITE_MATH_ONLY__ 0 -// WEBASSEMBLY32-NEXT:#define __FLT_DECIMAL_DIG__ 9 +// WEBASSEMBLY32:#define __FLT_DECIMAL_DIG__ 9 // WEBASSEMBLY32-NEXT:#define __FLT_DENORM_MIN__ 1.40129846e-45F // WEBASSEMBLY32-NEXT:#define __FLT_DIG__ 6 // WEBASSEMBLY32-NEXT:#define __FLT_EPSILON__ 1.19209290e-7F @@ -9023,6 +9219,11 @@ // WEBASSEMBLY32-NOT:#define __LP64__ // WEBASSEMBLY32-NEXT:#define __NO_INLINE__ 1 // WEBASSEMBLY32-NEXT:#define __OBJC_BOOL_IS_BOOL 0 +// WEBASSEMBLY32-NEXT:#define __OPENCL_MEMORY_SCOPE_ALL_SVM_DEVICES 3 +// WEBASSEMBLY32-NEXT:#define __OPENCL_MEMORY_SCOPE_DEVICE 2 +// WEBASSEMBLY32-NEXT:#define __OPENCL_MEMORY_SCOPE_SUB_GROUP 4 +// WEBASSEMBLY32-NEXT:#define __OPENCL_MEMORY_SCOPE_WORK_GROUP 1 +// WEBASSEMBLY32-NEXT:#define __OPENCL_MEMORY_SCOPE_WORK_ITEM 0 // WEBASSEMBLY32-NEXT:#define __ORDER_BIG_ENDIAN__ 4321 // WEBASSEMBLY32-NEXT:#define __ORDER_LITTLE_ENDIAN__ 1234 // WEBASSEMBLY32-NEXT:#define __ORDER_PDP_ENDIAN__ 3412 @@ -9165,6 +9366,7 @@ // WEBASSEMBLY32-NEXT:#define __WCHAR_TYPE__ int // WEBASSEMBLY32-NOT:#define __WCHAR_UNSIGNED__ // WEBASSEMBLY32-NEXT:#define __WCHAR_WIDTH__ 32 +// WEBASSEMBLY32-NEXT:#define __WINT_MAX__ 2147483647 // WEBASSEMBLY32-NEXT:#define __WINT_TYPE__ int // WEBASSEMBLY32-NOT:#define __WINT_UNSIGNED__ // WEBASSEMBLY32-NEXT:#define __WINT_WIDTH__ 32 @@ -9232,7 +9434,7 @@ // WEBASSEMBLY64-NEXT:#define __DECIMAL_DIG__ __LDBL_DECIMAL_DIG__ // WEBASSEMBLY64-NOT:#define __ELF__ // WEBASSEMBLY64-NEXT:#define __FINITE_MATH_ONLY__ 0 -// WEBASSEMBLY64-NEXT:#define __FLT_DECIMAL_DIG__ 9 +// WEBASSEMBLY64:#define __FLT_DECIMAL_DIG__ 9 // WEBASSEMBLY64-NEXT:#define __FLT_DENORM_MIN__ 1.40129846e-45F // WEBASSEMBLY64-NEXT:#define __FLT_DIG__ 6 // WEBASSEMBLY64-NEXT:#define __FLT_EPSILON__ 1.19209290e-7F @@ -9349,6 +9551,11 @@ // WEBASSEMBLY64-NEXT:#define __LP64__ 1 // WEBASSEMBLY64-NEXT:#define __NO_INLINE__ 1 // WEBASSEMBLY64-NEXT:#define __OBJC_BOOL_IS_BOOL 0 +// WEBASSEMBLY64-NEXT:#define __OPENCL_MEMORY_SCOPE_ALL_SVM_DEVICES 3 +// WEBASSEMBLY64-NEXT:#define __OPENCL_MEMORY_SCOPE_DEVICE 2 +// WEBASSEMBLY64-NEXT:#define __OPENCL_MEMORY_SCOPE_SUB_GROUP 4 +// WEBASSEMBLY64-NEXT:#define __OPENCL_MEMORY_SCOPE_WORK_GROUP 1 +// WEBASSEMBLY64-NEXT:#define __OPENCL_MEMORY_SCOPE_WORK_ITEM 0 // WEBASSEMBLY64-NEXT:#define __ORDER_BIG_ENDIAN__ 4321 // WEBASSEMBLY64-NEXT:#define __ORDER_LITTLE_ENDIAN__ 1234 // WEBASSEMBLY64-NEXT:#define __ORDER_PDP_ENDIAN__ 3412 @@ -9491,6 +9698,7 @@ // WEBASSEMBLY64-NEXT:#define __WCHAR_TYPE__ int // WEBASSEMBLY64-NOT:#define __WCHAR_UNSIGNED__ // WEBASSEMBLY64-NEXT:#define __WCHAR_WIDTH__ 32 +// WEBASSEMBLY64-NEXT:#define __WINT_MAX__ 2147483647 // WEBASSEMBLY64-NEXT:#define __WINT_TYPE__ int // WEBASSEMBLY64-NOT:#define __WINT_UNSIGNED__ // WEBASSEMBLY64-NEXT:#define __WINT_WIDTH__ 32 @@ -9692,11 +9900,11 @@ // RUN: %clang_cc1 -E -dM -ffreestanding \ -// RUN: -triple i686-windows-msvc -fms-compatibility < /dev/null \ +// RUN: -triple i686-windows-msvc -fms-compatibility -x c++ < /dev/null \ // RUN: | FileCheck -match-full-lines -check-prefix MSVC-X32 %s // RUN: %clang_cc1 -E -dM -ffreestanding \ -// RUN: -triple x86_64-windows-msvc -fms-compatibility < /dev/null \ +// RUN: -triple x86_64-windows-msvc -fms-compatibility -x c++ < /dev/null \ // RUN: | FileCheck -match-full-lines -check-prefix MSVC-X64 %s // MSVC-X32:#define __CLANG_ATOMIC_BOOL_LOCK_FREE 2 @@ -9710,6 +9918,7 @@ // MSVC-X32-NEXT:#define __CLANG_ATOMIC_SHORT_LOCK_FREE 2 // MSVC-X32-NEXT:#define __CLANG_ATOMIC_WCHAR_T_LOCK_FREE 2 // MSVC-X32-NOT:#define __GCC_ATOMIC{{.*}} +// MSVC-X32:#define __STDCPP_DEFAULT_NEW_ALIGNMENT__ 8U // MSVC-X64:#define __CLANG_ATOMIC_BOOL_LOCK_FREE 2 // MSVC-X64-NEXT:#define __CLANG_ATOMIC_CHAR16_T_LOCK_FREE 2 @@ -9721,7 +9930,8 @@ // MSVC-X64-NEXT:#define __CLANG_ATOMIC_POINTER_LOCK_FREE 2 // MSVC-X64-NEXT:#define __CLANG_ATOMIC_SHORT_LOCK_FREE 2 // MSVC-X64-NEXT:#define __CLANG_ATOMIC_WCHAR_T_LOCK_FREE 2 -// MSVC-X86-NOT:#define __GCC_ATOMIC{{.*}} +// MSVC-X64-NOT:#define __GCC_ATOMIC{{.*}} +// MSVC-X64:#define __STDCPP_DEFAULT_NEW_ALIGNMENT__ 16ULL // RUN: %clang_cc1 -E -dM -ffreestanding \ // RUN: -triple=aarch64-apple-ios9 < /dev/null \ @@ -9731,3 +9941,65 @@ // RUN: | FileCheck -check-prefix=DARWIN %s // DARWIN:#define __STDC_NO_THREADS__ 1 + +// RUN: %clang_cc1 -triple i386-apple-macosx -ffreestanding -dM -E /dev/null -o - | FileCheck -match-full-lines -check-prefix MACOS-32 %s +// RUN: %clang_cc1 -triple x86_64-apple-macosx -ffreestanding -dM -E /dev/null -o - | FileCheck -match-full-lines -check-prefix MACOS-64 %s + +// MACOS-32: #define __INTPTR_TYPE__ long int +// MACOS-32: #define __PTRDIFF_TYPE__ int +// MACOS-32: #define __SIZE_TYPE__ long unsigned int + +// MACOS-64: #define __INTPTR_TYPE__ long int +// MACOS-64: #define __PTRDIFF_TYPE__ long int +// MACOS-64: #define __SIZE_TYPE__ long unsigned int + +// RUN: %clang_cc1 -triple i386-apple-ios-simulator -ffreestanding -dM -E /dev/null -o - | FileCheck -match-full-lines -check-prefix IOS-32 %s +// RUN: %clang_cc1 -triple armv7-apple-ios -ffreestanding -dM -E /dev/null -o - | FileCheck -match-full-lines -check-prefix IOS-32 %s +// RUN: %clang_cc1 -triple x86_64-apple-ios-simulator -ffreestanding -dM -E /dev/null -o - | FileCheck -match-full-lines -check-prefix IOS-64 %s +// RUN: %clang_cc1 -triple arm64-apple-ios -ffreestanding -dM -E /dev/null -o - | FileCheck -match-full-lines -check-prefix IOS-64 %s + +// IOS-32: #define __INTPTR_TYPE__ long int +// IOS-32: #define __PTRDIFF_TYPE__ int +// IOS-32: #define __SIZE_TYPE__ long unsigned int + +// IOS-64: #define __INTPTR_TYPE__ long int +// IOS-64: #define __PTRDIFF_TYPE__ long int +// IOS-64: #define __SIZE_TYPE__ long unsigned int + +// RUN: %clang_cc1 -triple i386-apple-tvos-simulator -ffreestanding -dM -E /dev/null -o - | FileCheck -match-full-lines -check-prefix TVOS-32 %s +// RUN: %clang_cc1 -triple armv7-apple-tvos -ffreestanding -dM -E /dev/null -o - | FileCheck -match-full-lines -check-prefix TVOS-32 %s +// RUN: %clang_cc1 -triple x86_64-apple-tvos-simulator -ffreestanding -dM -E /dev/null -o - | FileCheck -match-full-lines -check-prefix TVOS-64 %s +// RUN: %clang_cc1 -triple arm64-apple-tvos -ffreestanding -dM -E /dev/null -o - | FileCheck -match-full-lines -check-prefix TVOS-64 %s + +// TVOS-32: #define __INTPTR_TYPE__ long int +// TVOS-32: #define __PTRDIFF_TYPE__ int +// TVOS-32: #define __SIZE_TYPE__ long unsigned int + +// TVOS-64: #define __INTPTR_TYPE__ long int +// TVOS-64: #define __PTRDIFF_TYPE__ long int +// TVOS-64: #define __SIZE_TYPE__ long unsigned int + +// RUN: %clang_cc1 -triple i386-apple-watchos-simulator -ffreestanding -dM -E /dev/null -o - | FileCheck -match-full-lines -check-prefix WATCHOS-32 %s +// RUN: %clang_cc1 -triple armv7k-apple-watchos -ffreestanding -dM -E /dev/null -o - | FileCheck -match-full-lines -check-prefix WATCHOS-64 %s +// RUN: %clang_cc1 -triple x86_64-apple-watchos-simulator -ffreestanding -dM -E /dev/null -o - | FileCheck -match-full-lines -check-prefix WATCHOS-64 %s +// RUN: %clang_cc1 -triple arm64-apple-watchos -ffreestanding -dM -E /dev/null -o - | FileCheck -match-full-lines -check-prefix WATCHOS-64 %s + +// WATCHOS-32: #define __INTPTR_TYPE__ long int +// WATCHOS-32: #define __PTRDIFF_TYPE__ int +// WATCHOS-32: #define __SIZE_TYPE__ long unsigned int + +// WATCHOS-64: #define __INTPTR_TYPE__ long int +// WATCHOS-64: #define __PTRDIFF_TYPE__ long int +// WATCHOS-64: #define __SIZE_TYPE__ long unsigned int + +// RUN: %clang_cc1 -triple armv7-apple-none-macho -ffreestanding -dM -E /dev/null -o - | FileCheck -match-full-lines -check-prefix ARM-DARWIN-BAREMETAL-32 %s +// RUN: %clang_cc1 -triple arm64-apple-none-macho -ffreestanding -dM -E /dev/null -o - | FileCheck -match-full-lines -check-prefix ARM-DARWIN-BAREMETAL-64 %s + +// ARM-DARWIN-BAREMETAL-32: #define __INTPTR_TYPE__ long int +// ARM-DARWIN-BAREMETAL-32: #define __PTRDIFF_TYPE__ int +// ARM-DARWIN-BAREMETAL-32: #define __SIZE_TYPE__ long unsigned int + +// ARM-DARWIN-BAREMETAL-64: #define __INTPTR_TYPE__ long int +// ARM-DARWIN-BAREMETAL-64: #define __PTRDIFF_TYPE__ long int +// ARM-DARWIN-BAREMETAL-64: #define __SIZE_TYPE__ long unsigned int + diff --git a/test/Preprocessor/is_target.c b/test/Preprocessor/is_target.c new file mode 100644 index 000000000000..44bdb11c35af --- /dev/null +++ b/test/Preprocessor/is_target.c @@ -0,0 +1,67 @@ +// RUN: %clang_cc1 -fsyntax-only -triple x86_64-apple-darwin-simulator -verify %s + +#if !__is_target_arch(x86_64) || !__is_target_arch(X86_64) + #error "mismatching arch" +#endif + +#if __is_target_arch(arm64) + #error "mismatching arch" +#endif + +// Silently ignore invalid archs. This will ensure that older compilers will +// accept headers that support new arches/vendors/os variants. +#if __is_target_arch(foo) + #error "invalid arch" +#endif + +#if !__is_target_vendor(apple) || !__is_target_vendor(APPLE) + #error "mismatching vendor" +#endif + +#if __is_target_vendor(unknown) + #error "mismatching vendor" +#endif + +#if __is_target_vendor(foo) + #error "invalid vendor" +#endif + +#if !__is_target_os(darwin) || !__is_target_os(DARWIN) + #error "mismatching os" +#endif + +#if __is_target_os(ios) + #error "mismatching os" +#endif + +#if __is_target_os(foo) + #error "invalid os" +#endif + +#if !__is_target_environment(simulator) || !__is_target_environment(SIMULATOR) + #error "mismatching environment" +#endif + +#if __is_target_environment(unknown) + #error "mismatching environment" +#endif + +#if __is_target_environment(foo) + #error "invalid environment" +#endif + +#if !__has_builtin(__is_target_arch) || !__has_builtin(__is_target_os) || !__has_builtin(__is_target_vendor) || !__has_builtin(__is_target_environment) + #error "has builtin doesn't work" +#endif + +#if __is_target_arch(11) // expected-error {{builtin feature check macro requires a parenthesized identifier}} + #error "invalid arch" +#endif + +#if __is_target_arch x86 // expected-error{{missing '(' after '__is_target_arch'}} + #error "invalid arch" +#endif + +#if __is_target_arch ( x86 // expected-error {{unterminated function-like macro invocation}} + #error "invalid arch" +#endif // expected-error@-2 {{expected value in expression}} diff --git a/test/Preprocessor/is_target_arm.c b/test/Preprocessor/is_target_arm.c new file mode 100644 index 000000000000..9e1afe6ec6c1 --- /dev/null +++ b/test/Preprocessor/is_target_arm.c @@ -0,0 +1,51 @@ +// RUN: %clang_cc1 -fsyntax-only -triple thumbv7--windows-msvc19.11.0 -verify %s +// RUN: %clang_cc1 -fsyntax-only -triple armv7--windows-msvc19.11.0 -DARM -verify %s +// expected-no-diagnostics + +// ARM does match arm and thumb. +#if !__is_target_arch(arm) + #error "mismatching arch" +#endif + +#if __is_target_arch(armeb) || __is_target_arch(armebv7) || __is_target_arch(thumbeb) || __is_target_arch(thumbebv7) + #error "mismatching arch" +#endif + +// ARMV7 does match armv7 and thumbv7. +#if !__is_target_arch(armv7) + #error "mismatching arch" +#endif + +// ARMV6 does not match armv7 or thumbv7. +#if __is_target_arch(armv6) + #error "mismatching arch" +#endif + +#if __is_target_arch(arm64) + #error "mismatching arch" +#endif + +#ifndef ARM + +// Allow checking for precise arch + subarch. +#if !__is_target_arch(thumbv7) + #error "mismatching arch" +#endif + +// But also allow checking for the arch without subarch. +#if !__is_target_arch(thumb) + #error "mismatching arch" +#endif + +// Same arch with a different subarch doesn't match. +#if __is_target_arch(thumbv6) + #error "mismatching arch" +#endif + +#else + +#if __is_target_arch(thumbv7) || __is_target_arch(thumb) + #error "mismatching arch" +#endif + +#endif diff --git a/test/Preprocessor/is_target_arm64.c b/test/Preprocessor/is_target_arm64.c new file mode 100644 index 000000000000..87ebe94d18e3 --- /dev/null +++ b/test/Preprocessor/is_target_arm64.c @@ -0,0 +1,10 @@ +// RUN: %clang_cc1 -fsyntax-only -triple arm64-apple-ios11 -verify %s +// expected-no-diagnostics + +#if !__is_target_arch(arm64) || !__is_target_arch(aarch64) + #error "mismatching arch" +#endif + +#if __is_target_arch(aarch64_be) + #error "mismatching arch" +#endif diff --git a/test/Preprocessor/is_target_environment_version.c b/test/Preprocessor/is_target_environment_version.c new file mode 100644 index 000000000000..e93386013c3b --- /dev/null +++ b/test/Preprocessor/is_target_environment_version.c @@ -0,0 +1,6 @@ +// RUN: %clang_cc1 -fsyntax-only -triple x86_64-pc-windows-msvc18.0.0 -verify %s +// expected-no-diagnostics + +#if !__is_target_environment(msvc) + #error "mismatching environment" +#endif diff --git a/test/Preprocessor/is_target_os_darwin.c b/test/Preprocessor/is_target_os_darwin.c new file mode 100644 index 000000000000..4c807ce19499 --- /dev/null +++ b/test/Preprocessor/is_target_os_darwin.c @@ -0,0 +1,26 @@ +// RUN: %clang_cc1 -fsyntax-only -triple x86_64-apple-macos -DMAC -verify %s +// RUN: %clang_cc1 -fsyntax-only -triple x86_64-apple-ios -verify %s +// RUN: %clang_cc1 -fsyntax-only -triple x86_64-apple-tvos -verify %s +// RUN: %clang_cc1 -fsyntax-only -triple x86_64-apple-watchos -verify %s +// expected-no-diagnostics + +#if !__is_target_os(darwin) + #error "mismatching os" +#endif + +// macOS matches both macOS and macOSX. +#ifdef MAC + +#if !__is_target_os(macos) + #error "mismatching os" +#endif + +#if !__is_target_os(macosx) + #error "mismatching os" +#endif + +#if __is_target_os(ios) + #error "mismatching os" +#endif + +#endif diff --git a/test/Preprocessor/is_target_unknown.c b/test/Preprocessor/is_target_unknown.c new file mode 100644 index 000000000000..d81afcbd2241 --- /dev/null +++ b/test/Preprocessor/is_target_unknown.c @@ -0,0 +1,22 @@ +// RUN: %clang_cc1 -fsyntax-only -triple i686-unknown-unknown -verify %s +// RUN: %clang_cc1 -fsyntax-only -triple i686-- -verify %s +// expected-no-diagnostics + +#if __is_target_arch(unknown) + #error "mismatching arch" +#endif + +// Unknown vendor is allowed. +#if !__is_target_vendor(unknown) + #error "mismatching vendor" +#endif + +// Unknown OS is allowed. +#if !__is_target_os(unknown) + #error "mismatching OS" +#endif + +// Unknown environment is allowed. +#if !__is_target_environment(unknown) + #error "mismatching environment" +#endif diff --git a/test/Preprocessor/macro_raw_string.cpp b/test/Preprocessor/macro_raw_string.cpp new file mode 100644 index 000000000000..d56894888d1f --- /dev/null +++ b/test/Preprocessor/macro_raw_string.cpp @@ -0,0 +1,11 @@ +// RUN: %clang_cc1 -E -std=c++11 %s -o %t +// RUN: %clang_cc1 %t + +#define FOO(str) foo(#str) + +extern void foo(const char *str); + +void bar() { + FOO(R"(foo + bar)"); +} diff --git a/test/Preprocessor/macro_vaopt_check.cpp b/test/Preprocessor/macro_vaopt_check.cpp new file mode 100644 index 000000000000..25a4564fba7e --- /dev/null +++ b/test/Preprocessor/macro_vaopt_check.cpp @@ -0,0 +1,64 @@ +// RUN: %clang_cc1 %s -Eonly -verify -Wno-all -pedantic -std=c++2a + +//expected-error@+1{{missing '('}} +#define V1(...) __VA_OPT__ +#undef V1 +// OK +#define V1(...) __VA_OPT__ () +#undef V1 + +//expected-warning@+1{{can only appear in the expansion of a variadic macro}} +#define V2() __VA_OPT__(x) +#undef V2 + +//expected-error@+2{{missing ')' after}} +//expected-note@+1{{to match this '('}} +#define V3(...) __VA_OPT__( +#undef V3 + +#define V4(...) __VA_OPT__(__VA_ARGS__) +#undef V4 + +//expected-error@+1{{nested}} +#define V5(...) __VA_OPT__(__VA_OPT__()) +#undef V5 + +//expected-error@+1{{not followed by}} +#define V1(...) __VA_OPT__ (#) +#undef V1 + +//expected-error@+1{{cannot appear at start}} +#define V1(...) __VA_OPT__ (##) +#undef V1 + +//expected-error@+1{{cannot appear at start}} +#define V1(...) __VA_OPT__ (## X) x +#undef V1 + +//expected-error@+1{{cannot appear at end}} +#define V1(...) y __VA_OPT__ (X ##) +#undef V1 + + +#define FOO(x,...) # __VA_OPT__(x) #x #__VA_OPT__(__VA_ARGS__) //OK + +//expected-error@+1{{not followed by a macro parameter}} +#define V1(...) __VA_OPT__(#) +#undef V1 + +//expected-error@+1{{cannot appear at start}} +#define V1(...) a __VA_OPT__(##) b +#undef V1 + +//expected-error@+1{{cannot appear at start}} +#define V1(...) a __VA_OPT__(a ## b) b __VA_OPT__(##) +#undef V1 + +#define V1(x,...) # __VA_OPT__(b x) // OK +#undef V1 + +//expected-error@+2{{missing ')' after}} +//expected-note@+1{{to match this '('}} +#define V1(...) __VA_OPT__ ((()) +#undef V1 + diff --git a/test/Preprocessor/macro_vaopt_expand.cpp b/test/Preprocessor/macro_vaopt_expand.cpp new file mode 100644 index 000000000000..5e007512015b --- /dev/null +++ b/test/Preprocessor/macro_vaopt_expand.cpp @@ -0,0 +1,148 @@ +// RUN: %clang_cc1 -E %s -pedantic -std=c++2a | FileCheck -strict-whitespace %s + +#define LPAREN ( +#define RPAREN ) + +#define A0 expandedA0 +#define A1 expandedA1 A0 +#define A2 expandedA2 A1 +#define A3 expandedA3 A2 + +#define A() B LPAREN ) +#define B() C LPAREN ) +#define C() D LPAREN ) + + +#define F(x, y) x + y +#define ELLIP_FUNC(...) __VA_OPT__(__VA_ARGS__) + +1: ELLIP_FUNC(F, LPAREN, 'a', 'b', RPAREN); +2: ELLIP_FUNC(F LPAREN 'a', 'b' RPAREN); +#undef F +#undef ELLIP_FUNC + +// CHECK: 1: F, (, 'a', 'b', ); +// CHECK: 2: 'a' + 'b'; + +#define F(...) f(0 __VA_OPT__(,) __VA_ARGS__) +3: F(a, b, c) // replaced by f(0, a, b, c) +4: F() // replaced by f(0) + +// CHECK: 3: f(0 , a, b, c) +// CHECK: 4: f(0 ) +#undef F + +#define G(X, ...) f(0, X __VA_OPT__(,) __VA_ARGS__) + +5: G(a, b, c) // replaced by f(0, a , b, c) +6: G(a) // replaced by f(0, a) +7: G(a,) // replaced by f(0, a) +7.1: G(a,,) + + +// CHECK: 5: f(0, a , b, c) +// CHECK: 6: f(0, a ) +// CHECK: 7: f(0, a ) +// CHECK: 7.1: f(0, a , ,) +#undef G + +#define HT_B() TONG + +#define F(x, ...) HT_ ## __VA_OPT__(x x A() #x) + +8: F(1) +9: F(A(),1) + +// CHECK: 8: HT_ +// CHECK: 9: TONG C ( ) B ( ) "A()" +#undef HT_B +#undef F + +#define F(a,...) #__VA_OPT__(A1 a) + +10: F(A()) +11: F(A1 A(), 1) +// CHECK: 10: "" +// CHECK: 11: "A1 expandedA1 expandedA0 B ( )" +#undef F + + +#define F(a,...) a ## __VA_OPT__(A1 a) ## __VA_ARGS__ ## a +12.0: F() +12: F(,) +13: F(B,) +// CHECK: 12.0: +// CHECK: 12: +// CHECK: 13: BB +#undef F + +#define F(...) #__VA_OPT__() X ## __VA_OPT__() #__VA_OPT__( ) + +14: F() +15: F(1) + +// CHECK: 14: "" X "" +// CHECK: 15: "" X "" + +#undef F + +#define SDEF(sname, ...) S sname __VA_OPT__(= { __VA_ARGS__ }) + +16: SDEF(foo); // replaced by S foo; +17: SDEF(bar, 1, 2); // replaced by S bar = { 1, 2 }; + +// CHECK: 16: S foo ; +// CHECK: 17: S bar = { 1, 2 }; +#undef SDEF + +#define F(a,...) A() #__VA_OPT__(A3 __VA_ARGS__ a ## __VA_ARGS__ ## a ## C A3) A() + +18: F() +19: F(,) +20: F(,A3) +21: F(A3, A(),A0) + + +// CHECK: 18: B ( ) "" B ( ) +// CHECK: 19: B ( ) "" B ( ) +// CHECK: 20: B ( ) "A3 expandedA3 expandedA2 expandedA1 expandedA0 A3C A3" B ( ) +// CHECK: 21: B ( ) "A3 B ( ),expandedA0 A3A(),A0A3C A3" B ( ) + +#undef F + +#define F(a,...) A() #__VA_OPT__(A3 __VA_ARGS__ a ## __VA_ARGS__ ## a ## C A3) a __VA_OPT__(A0 __VA_ARGS__ a ## __VA_ARGS__ ## a ## C A0) A() + +22: F() +23: F(,) +24: F(,A0) +25: F(A0, A(),A0) + + +// CHECK: 22: B ( ) "" B ( ) +// CHECK: 23: B ( ) "" B ( ) +// CHECK: 24: B ( ) "A3 expandedA0 A0C A3" expandedA0 expandedA0 A0C expandedA0 B ( ) +// CHECK: 25: B ( ) "A3 B ( ),expandedA0 A0A(),A0A0C A3" expandedA0 expandedA0 C ( ),expandedA0 A0A(),A0A0C expandedA0 B ( ) + +#undef F + +#define F(a,...) __VA_OPT__(B a ## a) ## 1 +#define G(a,...) __VA_OPT__(B a) ## 1 +26: F(,1) +26_1: G(,1) +// CHECK: 26: B1 +// CHECK: 26_1: B1 +#undef F +#undef G + +#define F(a,...) B ## __VA_OPT__(a 1) ## 1 +#define G(a,...) B ## __VA_OPT__(a ## a 1) ## 1 + +27: F(,1) +27_1: F(A0,1) +28: G(,1) +// CHECK: 27: B11 +// CHECK: 27_1: BexpandedA0 11 +// CHECK: 28: B11 + +#undef F +#undef G diff --git a/test/Preprocessor/pr19649-unsigned-wchar_t.c b/test/Preprocessor/pr19649-unsigned-wchar_t.c index 4bbe1b57ce46..0f0886b2e909 100644 --- a/test/Preprocessor/pr19649-unsigned-wchar_t.c +++ b/test/Preprocessor/pr19649-unsigned-wchar_t.c @@ -1,5 +1,5 @@ // RUN: %clang_cc1 -triple i386-pc-cygwin -E -x c %s -// RUN: %clang_cc1 -triple powerpc64-unknown-linux-gnu -E -fshort-wchar -x c %s +// RUN: %clang_cc1 -triple powerpc64-unknown-linux-gnu -E -fwchar-type=short -fno-signed-wchar -x c %s #if (L'\0' - 1 < 0) # error "Unexpected expression evaluation result" diff --git a/test/Preprocessor/pragma_assume_nonnull.c b/test/Preprocessor/pragma_assume_nonnull.c new file mode 100644 index 000000000000..4aa124113e2d --- /dev/null +++ b/test/Preprocessor/pragma_assume_nonnull.c @@ -0,0 +1,16 @@ +// RUN: %clang_cc1 -fsyntax-only -verify %s +// RUN: %clang_cc1 -E %s | FileCheck %s + +// CHECK: #pragma clang assume_nonnull begin +#pragma clang assume_nonnull begin + +int bar(int * ip) { return *ip; } + +// CHECK: #pragma clang assume_nonnull end +#pragma clang assume_nonnull end + +int foo(int * _Nonnull ip) { return *ip; } + +int main() { + return bar(0) + foo(0); // expected-warning 2 {{null passed to a callee that requires a non-null argument}} +} diff --git a/test/Preprocessor/predefined-arch-macros.c b/test/Preprocessor/predefined-arch-macros.c index 85e78b661d47..892e2783942e 100644 --- a/test/Preprocessor/predefined-arch-macros.c +++ b/test/Preprocessor/predefined-arch-macros.c @@ -156,6 +156,8 @@ // CHECK_I686_M32: #define __i686__ 1 // CHECK_I686_M32: #define __pentiumpro 1 // CHECK_I686_M32: #define __pentiumpro__ 1 +// CHECK_I686_M32: #define __tune_i686__ 1 +// CHECK_I686_M32: #define __tune_pentiumpro__ 1 // CHECK_I686_M32: #define i386 1 // RUN: not %clang -march=i686 -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ @@ -783,6 +785,77 @@ // CHECK_KNL_M64: #define __tune_knl__ 1 // CHECK_KNL_M64: #define __x86_64 1 // CHECK_KNL_M64: #define __x86_64__ 1 + +// RUN: %clang -march=knm -m32 -E -dM %s -o - 2>&1 \ +// RUN: -target i386-unknown-linux \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_KNM_M32 +// CHECK_KNM_M32: #define __AES__ 1 +// CHECK_KNM_M32: #define __AVX2__ 1 +// CHECK_KNM_M32: #define __AVX512CD__ 1 +// CHECK_KNM_M32: #define __AVX512ER__ 1 +// CHECK_KNM_M32: #define __AVX512F__ 1 +// CHECK_KNM_M32: #define __AVX512PF__ 1 +// CHECK_KNM_M32: #define __AVX512VPOPCNTDQ__ 1 +// CHECK_KNM_M32: #define __AVX__ 1 +// CHECK_KNM_M32: #define __BMI2__ 1 +// CHECK_KNM_M32: #define __BMI__ 1 +// CHECK_KNM_M32: #define __F16C__ 1 +// CHECK_KNM_M32: #define __FMA__ 1 +// CHECK_KNM_M32: #define __LZCNT__ 1 +// CHECK_KNM_M32: #define __MMX__ 1 +// CHECK_KNM_M32: #define __PCLMUL__ 1 +// CHECK_KNM_M32: #define __POPCNT__ 1 +// CHECK_KNM_M32: #define __PREFETCHWT1__ 1 +// CHECK_KNM_M32: #define __RDRND__ 1 +// CHECK_KNM_M32: #define __RTM__ 1 +// CHECK_KNM_M32: #define __SSE2__ 1 +// CHECK_KNM_M32: #define __SSE3__ 1 +// CHECK_KNM_M32: #define __SSE4_1__ 1 +// CHECK_KNM_M32: #define __SSE4_2__ 1 +// CHECK_KNM_M32: #define __SSE__ 1 +// CHECK_KNM_M32: #define __SSSE3__ 1 +// CHECK_KNM_M32: #define __XSAVEOPT__ 1 +// CHECK_KNM_M32: #define __XSAVE__ 1 +// CHECK_KNM_M32: #define __i386 1 +// CHECK_KNM_M32: #define __i386__ 1 +// CHECK_KNM_M32: #define i386 1 + +// RUN: %clang -march=knm -m64 -E -dM %s -o - 2>&1 \ +// RUN: -target i386-unknown-linux \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_KNM_M64 +// CHECK_KNM_M64: #define __AES__ 1 +// CHECK_KNM_M64: #define __AVX2__ 1 +// CHECK_KNM_M64: #define __AVX512CD__ 1 +// CHECK_KNM_M64: #define __AVX512ER__ 1 +// CHECK_KNM_M64: #define __AVX512F__ 1 +// CHECK_KNM_M64: #define __AVX512PF__ 1 +// CHECK_KNM_M64: #define __AVX512VPOPCNTDQ__ 1 +// CHECK_KNM_M64: #define __AVX__ 1 +// CHECK_KNM_M64: #define __BMI2__ 1 +// CHECK_KNM_M64: #define __BMI__ 1 +// CHECK_KNM_M64: #define __F16C__ 1 +// CHECK_KNM_M64: #define __FMA__ 1 +// CHECK_KNM_M64: #define __LZCNT__ 1 +// CHECK_KNM_M64: #define __MMX__ 1 +// CHECK_KNM_M64: #define __PCLMUL__ 1 +// CHECK_KNM_M64: #define __POPCNT__ 1 +// CHECK_KNM_M64: #define __PREFETCHWT1__ 1 +// CHECK_KNM_M64: #define __RDRND__ 1 +// CHECK_KNM_M64: #define __RTM__ 1 +// CHECK_KNM_M64: #define __SSE2_MATH__ 1 +// CHECK_KNM_M64: #define __SSE2__ 1 +// CHECK_KNM_M64: #define __SSE3__ 1 +// CHECK_KNM_M64: #define __SSE4_1__ 1 +// CHECK_KNM_M64: #define __SSE4_2__ 1 +// CHECK_KNM_M64: #define __SSE_MATH__ 1 +// CHECK_KNM_M64: #define __SSE__ 1 +// CHECK_KNM_M64: #define __SSSE3__ 1 +// CHECK_KNM_M64: #define __XSAVEOPT__ 1 +// CHECK_KNM_M64: #define __XSAVE__ 1 +// CHECK_KNM_M64: #define __amd64 1 +// CHECK_KNM_M64: #define __amd64__ 1 +// CHECK_KNM_M64: #define __x86_64 1 +// CHECK_KNM_M64: #define __x86_64__ 1 // // RUN: %clang -march=skylake-avx512 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ @@ -819,11 +892,11 @@ // CHECK_SKX_M32: #define __XSAVEOPT__ 1 // CHECK_SKX_M32: #define __XSAVES__ 1 // CHECK_SKX_M32: #define __XSAVE__ 1 +// CHECK_SKX_M32: #define __corei7 1 +// CHECK_SKX_M32: #define __corei7__ 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 __tune_corei7__ 1 // CHECK_SKX_M32: #define i386 1 // RUN: %clang -march=skylake-avx512 -m64 -E -dM %s -o - 2>&1 \ @@ -865,9 +938,9 @@ // CHECK_SKX_M64: #define __XSAVE__ 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 __corei7 1 +// CHECK_SKX_M64: #define __corei7__ 1 +// CHECK_SKX_M64: #define __tune_corei7__ 1 // CHECK_SKX_M64: #define __x86_64 1 // CHECK_SKX_M64: #define __x86_64__ 1 // @@ -908,8 +981,11 @@ // CHECK_CNL_M32: #define __XSAVEOPT__ 1 // CHECK_CNL_M32: #define __XSAVES__ 1 // CHECK_CNL_M32: #define __XSAVE__ 1 +// CHECK_CNL_M32: #define __corei7 1 +// CHECK_CNL_M32: #define __corei7__ 1 // CHECK_CNL_M32: #define __i386 1 // CHECK_CNL_M32: #define __i386__ 1 +// CHECK_CNL_M32: #define __tune_corei7__ 1 // CHECK_CNL_M32: #define i386 1 // // RUN: %clang -march=cannonlake -m64 -E -dM %s -o - 2>&1 \ @@ -951,9 +1027,101 @@ // CHECK_CNL_M64: #define __XSAVE__ 1 // CHECK_CNL_M64: #define __amd64 1 // CHECK_CNL_M64: #define __amd64__ 1 +// CHECK_CNL_M64: #define __corei7 1 +// CHECK_CNL_M64: #define __corei7__ 1 +// CHECK_CNL_M64: #define __tune_corei7__ 1 // CHECK_CNL_M64: #define __x86_64 1 // CHECK_CNL_M64: #define __x86_64__ 1 +// RUN: %clang -march=icelake -m32 -E -dM %s -o - 2>&1 \ +// RUN: -target i386-unknown-linux \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ICL_M32 +// CHECK_ICL_M32: #define __AES__ 1 +// CHECK_ICL_M32: #define __AVX2__ 1 +// CHECK_ICL_M32: #define __AVX512BW__ 1 +// CHECK_ICL_M32: #define __AVX512CD__ 1 +// CHECK_ICL_M32: #define __AVX512DQ__ 1 +// CHECK_ICL_M32: #define __AVX512F__ 1 +// CHECK_ICL_M32: #define __AVX512IFMA__ 1 +// CHECK_ICL_M32: #define __AVX512VBMI__ 1 +// CHECK_ICL_M32: #define __AVX512VL__ 1 +// CHECK_ICL_M32: #define __AVX__ 1 +// CHECK_ICL_M32: #define __BMI2__ 1 +// CHECK_ICL_M32: #define __BMI__ 1 +// CHECK_ICL_M32: #define __CLFLUSHOPT__ 1 +// CHECK_ICL_M32: #define __F16C__ 1 +// CHECK_ICL_M32: #define __FMA__ 1 +// CHECK_ICL_M32: #define __LZCNT__ 1 +// CHECK_ICL_M32: #define __MMX__ 1 +// CHECK_ICL_M32: #define __MPX__ 1 +// CHECK_ICL_M32: #define __PCLMUL__ 1 +// CHECK_ICL_M32: #define __POPCNT__ 1 +// CHECK_ICL_M32: #define __RDRND__ 1 +// CHECK_ICL_M32: #define __RTM__ 1 +// CHECK_ICL_M32: #define __SGX__ 1 +// CHECK_ICL_M32: #define __SHA__ 1 +// CHECK_ICL_M32: #define __SSE2__ 1 +// CHECK_ICL_M32: #define __SSE3__ 1 +// CHECK_ICL_M32: #define __SSE4_1__ 1 +// CHECK_ICL_M32: #define __SSE4_2__ 1 +// CHECK_ICL_M32: #define __SSE__ 1 +// CHECK_ICL_M32: #define __SSSE3__ 1 +// CHECK_ICL_M32: #define __XSAVEC__ 1 +// CHECK_ICL_M32: #define __XSAVEOPT__ 1 +// CHECK_ICL_M32: #define __XSAVES__ 1 +// CHECK_ICL_M32: #define __XSAVE__ 1 +// CHECK_ICL_M32: #define __corei7 1 +// CHECK_ICL_M32: #define __corei7__ 1 +// CHECK_ICL_M32: #define __i386 1 +// CHECK_ICL_M32: #define __i386__ 1 +// CHECK_ICL_M32: #define __tune_corei7__ 1 +// CHECK_ICL_M32: #define i386 1 +// +// RUN: %clang -march=icelake -m64 -E -dM %s -o - 2>&1 \ +// RUN: -target i386-unknown-linux \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ICL_M64 +// CHECK_ICL_M64: #define __AES__ 1 +// CHECK_ICL_M64: #define __AVX2__ 1 +// CHECK_ICL_M64: #define __AVX512BW__ 1 +// CHECK_ICL_M64: #define __AVX512CD__ 1 +// CHECK_ICL_M64: #define __AVX512DQ__ 1 +// CHECK_ICL_M64: #define __AVX512F__ 1 +// CHECK_ICL_M64: #define __AVX512IFMA__ 1 +// CHECK_ICL_M64: #define __AVX512VBMI__ 1 +// CHECK_ICL_M64: #define __AVX512VL__ 1 +// CHECK_ICL_M64: #define __AVX__ 1 +// CHECK_ICL_M64: #define __BMI2__ 1 +// CHECK_ICL_M64: #define __BMI__ 1 +// CHECK_ICL_M64: #define __CLFLUSHOPT__ 1 +// CHECK_ICL_M64: #define __F16C__ 1 +// CHECK_ICL_M64: #define __FMA__ 1 +// CHECK_ICL_M64: #define __LZCNT__ 1 +// CHECK_ICL_M64: #define __MMX__ 1 +// CHECK_ICL_M64: #define __MPX__ 1 +// CHECK_ICL_M64: #define __PCLMUL__ 1 +// CHECK_ICL_M64: #define __POPCNT__ 1 +// CHECK_ICL_M64: #define __RDRND__ 1 +// CHECK_ICL_M64: #define __RTM__ 1 +// CHECK_ICL_M64: #define __SGX__ 1 +// CHECK_ICL_M64: #define __SHA__ 1 +// CHECK_ICL_M64: #define __SSE2__ 1 +// CHECK_ICL_M64: #define __SSE3__ 1 +// CHECK_ICL_M64: #define __SSE4_1__ 1 +// CHECK_ICL_M64: #define __SSE4_2__ 1 +// CHECK_ICL_M64: #define __SSE__ 1 +// CHECK_ICL_M64: #define __SSSE3__ 1 +// CHECK_ICL_M64: #define __XSAVEC__ 1 +// CHECK_ICL_M64: #define __XSAVEOPT__ 1 +// CHECK_ICL_M64: #define __XSAVES__ 1 +// CHECK_ICL_M64: #define __XSAVE__ 1 +// CHECK_ICL_M64: #define __amd64 1 +// CHECK_ICL_M64: #define __amd64__ 1 +// CHECK_ICL_M64: #define __corei7 1 +// CHECK_ICL_M64: #define __corei7__ 1 +// CHECK_ICL_M64: #define __tune_corei7__ 1 +// CHECK_ICL_M64: #define __x86_64 1 +// CHECK_ICL_M64: #define __x86_64__ 1 + // RUN: %clang -march=atom -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATOM_M32 @@ -991,6 +1159,7 @@ // RUN: | FileCheck %s -check-prefix=CHECK_GLM_M32 // CHECK_GLM_M32: #define __AES__ 1 // CHECK_GLM_M32: #define __CLFLUSHOPT__ 1 +// CHECK_GLM_M32: #define __FSGSBASE__ 1 // CHECK_GLM_M32: #define __FXSR__ 1 // CHECK_GLM_M32: #define __MMX__ 1 // CHECK_GLM_M32: #define __MPX__ 1 @@ -1010,26 +1179,19 @@ // CHECK_GLM_M32: #define __XSAVEOPT__ 1 // CHECK_GLM_M32: #define __XSAVES__ 1 // CHECK_GLM_M32: #define __XSAVE__ 1 -// CHECK_GLM_M32: #define __clang__ 1 // CHECK_GLM_M32: #define __goldmont 1 // CHECK_GLM_M32: #define __goldmont__ 1 // CHECK_GLM_M32: #define __i386 1 // CHECK_GLM_M32: #define __i386__ 1 -// CHECK_GLM_M32: #define __linux 1 -// CHECK_GLM_M32: #define __linux__ 1 -// CHECK_GLM_M32: #define __llvm__ 1 // CHECK_GLM_M32: #define __tune_goldmont__ 1 -// CHECK_GLM_M32: #define __unix 1 -// CHECK_GLM_M32: #define __unix__ 1 // CHECK_GLM_M32: #define i386 1 -// CHECK_GLM_M32: #define linux 1 -// CHECK_GLM_M32: #define unix 1 // // RUN: %clang -march=goldmont -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck %s -check-prefix=CHECK_GLM_M64 // CHECK_GLM_M64: #define __AES__ 1 // CHECK_GLM_M64: #define __CLFLUSHOPT__ 1 +// CHECK_GLM_M64: #define __FSGSBASE__ 1 // CHECK_GLM_M64: #define __FXSR__ 1 // CHECK_GLM_M64: #define __MMX__ 1 // CHECK_GLM_M64: #define __MPX__ 1 @@ -1047,19 +1209,11 @@ // CHECK_GLM_M64: #define __XSAVEOPT__ 1 // CHECK_GLM_M64: #define __XSAVES__ 1 // CHECK_GLM_M64: #define __XSAVE__ 1 -// CHECK_GLM_M64: #define __gnu_linux__ 1 // CHECK_GLM_M64: #define __goldmont 1 // CHECK_GLM_M64: #define __goldmont__ 1 -// CHECK_GLM_M64: #define __linux 1 -// CHECK_GLM_M64: #define __linux__ 1 -// CHECK_GLM_M64: #define __llvm__ 1 // CHECK_GLM_M64: #define __tune_goldmont__ 1 -// CHECK_GLM_M64: #define __unix 1 -// CHECK_GLM_M64: #define __unix__ 1 // CHECK_GLM_M64: #define __x86_64 1 // CHECK_GLM_M64: #define __x86_64__ 1 -// CHECK_GLM_M64: #define linux 1 -// CHECK_GLM_M64: #define unix 1 // // RUN: %clang -march=slm -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ @@ -1099,15 +1253,19 @@ // // RUN: %clang -march=lakemont -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ -// RUN: | FileCheck %s -check-prefix=CHECK_LMT_M32 -// CHECK_LMT_M32: #define __i386 1 -// CHECK_LMT_M32: #define __i386__ 1 -// CHECK_LMT_M32: #define __tune_lakemont__ 1 -// CHECK_LMT_M32: #define i386 1 +// RUN: | FileCheck %s -check-prefix=CHECK_LAKEMONT_M32 +// CHECK_LAKEMONT_M32: #define __i386 1 +// CHECK_LAKEMONT_M32: #define __i386__ 1 +// CHECK_LAKEMONT_M32: #define __i586 1 +// CHECK_LAKEMONT_M32: #define __i586__ 1 +// CHECK_LAKEMONT_M32: #define __pentium 1 +// CHECK_LAKEMONT_M32: #define __pentium__ 1 +// CHECK_LAKEMONT_M32: #define __tune_lakemont__ 1 +// CHECK_LAKEMONT_M32: #define i386 1 // RUN: not %clang -march=lakemont -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ -// RUN: | FileCheck %s -check-prefix=CHECK_LMT_M64 -// CHECK_LMT_M64: error: +// RUN: | FileCheck %s -check-prefix=CHECK_LAKEMONT_M64 +// CHECK_LAKEMONT_M64: error: // // RUN: %clang -march=geode -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ @@ -2135,21 +2293,61 @@ // RUN: -target sparcel-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARCEL // RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=myriad2 2>&1 \ -// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-1 -check-prefix=CHECK_SPARCEL +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \ +// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 // RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=myriad2.1 2>&1 \ -// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-1 -check-prefix=CHECK_SPARCEL +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-1 \ +// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 // RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=myriad2.2 2>&1 \ -// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 -check-prefix=CHECK_SPARCEL +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \ +// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 +// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=myriad2.3 2>&1 \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \ +// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 +// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2100 2>&1 \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-1 \ +// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 +// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2150 2>&1 \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \ +// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 +// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2155 2>&1 \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \ +// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 // RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2450 2>&1 \ -// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 -check-prefix=CHECK_SPARCEL +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \ +// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 +// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2455 2>&1 \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \ +// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 +// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2x5x 2>&1 \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \ +// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 +// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2080 2>&1 \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \ +// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 +// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2085 2>&1 \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \ +// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 +// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2480 2>&1 \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \ +// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 +// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2485 2>&1 \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \ +// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 +// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2x8x 2>&1 \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \ +// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 // CHECK_SPARCEL: #define __LITTLE_ENDIAN__ 1 +// CHECK_MYRIAD2: #define __leon__ 1 // CHECK_MYRIAD2-1: #define __myriad2 1 // CHECK_MYRIAD2-1: #define __myriad2__ 1 // CHECK_MYRIAD2-2: #define __myriad2 2 // CHECK_MYRIAD2-2: #define __myriad2__ 2 +// CHECK_MYRIAD2-3: #define __myriad2 3 +// CHECK_MYRIAD2-3: #define __myriad2__ 3 // CHECK_SPARCEL: #define __sparc 1 // CHECK_SPARCEL: #define __sparc__ 1 -// CHECK_MYRIAD2-1: #define __sparc_v8__ 1 +// CHECK_MYRIAD2: #define __sparc_v8__ 1 // CHECK_SPARCEL: #define __sparcv8 1 // // RUN: %clang -E -dM %s -o - 2>&1 \ diff --git a/test/Preprocessor/predefined-macros.c b/test/Preprocessor/predefined-macros.c index 662a712d6477..def1ef90f55d 100644 --- a/test/Preprocessor/predefined-macros.c +++ b/test/Preprocessor/predefined-macros.c @@ -185,9 +185,89 @@ // CHECK-CL20-NOT: #define __FAST_RELAXED_MATH__ 1 // CHECK-FRM: #define __FAST_RELAXED_MATH__ 1 -// RUN: %clang_cc1 -triple aarch64-windows %s -E -dM -o - -x cl \ +// RUN: %clang_cc1 %s -E -dM -o - -x cl \ +// RUN: | FileCheck %s --check-prefix=MSCOPE +// MSCOPE:#define __OPENCL_MEMORY_SCOPE_ALL_SVM_DEVICES 3 +// MSCOPE:#define __OPENCL_MEMORY_SCOPE_DEVICE 2 +// MSCOPE:#define __OPENCL_MEMORY_SCOPE_SUB_GROUP 4 +// MSCOPE:#define __OPENCL_MEMORY_SCOPE_WORK_GROUP 1 +// MSCOPE:#define __OPENCL_MEMORY_SCOPE_WORK_ITEM 0 + +// RUN: %clang_cc1 -triple i386-windows %s -E -dM -o - \ +// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-X86-WIN + +// CHECK-X86-WIN-NOT: #define WIN32 1 +// CHECK-X86-WIN-NOT: #define WIN64 1 +// CHECK-X86-WIN-NOT: #define WINNT 1 +// CHECK-X86-WIN: #define _WIN32 1 +// CHECK-X86-WIN-NOT: #define _WIN64 1 + +// RUN: %clang_cc1 -triple thumbv7-windows %s -E -dM -o - \ +// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-ARM-WIN + +// CHECK-ARM-WIN-NOT: #define WIN32 1 +// CHECK-ARM-WIN-NOT: #define WIN64 1 +// CHECK-ARM-WIN-NOT: #define WINNT 1 +// CHECK-ARM-WIN: #define _WIN32 1 +// CHECK-ARM-WIN-NOT: #define _WIN64 1 + +// RUN: %clang_cc1 -triple x86_64-windows %s -E -dM -o - \ +// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-AMD64-WIN + +// CHECK-AMD64-WIN-NOT: #define WIN32 1 +// CHECK-AMD64-WIN-NOT: #define WIN64 1 +// CHECK-AMD64-WIN-NOT: #define WINNT 1 +// CHECK-AMD64-WIN: #define _WIN32 1 +// CHECK-AMD64-WIN: #define _WIN64 1 + +// RUN: %clang_cc1 -triple aarch64-windows %s -E -dM -o - \ // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-ARM64-WIN +// CHECK-ARM64-WIN-NOT: #define WIN32 1 +// CHECK-ARM64-WIN-NOT: #define WIN64 1 +// CHECK-ARM64-WIN-NOT: #define WINNT 1 // CHECK-ARM64-WIN: #define _M_ARM64 1 // CHECK-ARM64-WIN: #define _WIN32 1 // CHECK-ARM64-WIN: #define _WIN64 1 + +// RUN: %clang_cc1 -triple i686-windows-gnu %s -E -dM -o - \ +// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-X86-MINGW + +// CHECK-X86-MINGW: #define WIN32 1 +// CHECK-X86-MINGW-NOT: #define WIN64 1 +// CHECK-X86-MINGW: #define WINNT 1 +// CHECK-X86-MINGW: #define _WIN32 1 +// CHECK-X86-MINGW-NOT: #define _WIN64 1 + +// RUN: %clang_cc1 -triple thumbv7-windows-gnu %s -E -dM -o - \ +// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-ARM-MINGW + +// CHECK-ARM-MINGW: #define WIN32 1 +// CHECK-ARM-MINGW-NOT: #define WIN64 1 +// CHECK-ARM-MINGW: #define WINNT 1 +// CHECK-ARM-MINGW: #define _WIN32 1 +// CHECK-ARM-MINGW-NOT: #define _WIN64 1 + +// RUN: %clang_cc1 -triple x86_64-windows-gnu %s -E -dM -o - \ +// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-AMD64-MINGW + +// CHECK-AMD64-MINGW: #define WIN32 1 +// CHECK-AMD64-MINGW: #define WIN64 1 +// CHECK-AMD64-MINGW: #define WINNT 1 +// CHECK-AMD64-MINGW: #define _WIN32 1 +// CHECK-AMD64-MINGW: #define _WIN64 1 + +// RUN: %clang_cc1 -triple aarch64-windows-gnu %s -E -dM -o - \ +// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-ARM64-MINGW + +// CHECK-ARM64-MINGW-NOT: #define _M_ARM64 1 +// CHECK-ARM64-MINGW: #define WIN32 1 +// CHECK-ARM64-MINGW: #define WIN64 1 +// CHECK-ARM64-MINGW: #define WINNT 1 +// CHECK-ARM64-MINGW: #define _WIN32 1 +// CHECK-ARM64-MINGW: #define _WIN64 1 +// CHECK-ARM64-MINGW: #define __aarch64__ 1 + +// RUN: %clang_cc1 %s -E -dM -o - -x cl -triple spir-unknown-unknown \ +// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-SPIR +// CHECK-SPIR: #define __IMAGE_SUPPORT__ 1 diff --git a/test/Preprocessor/print-assembler.s b/test/Preprocessor/print-assembler.s new file mode 100644 index 000000000000..c4e2e031f2d5 --- /dev/null +++ b/test/Preprocessor/print-assembler.s @@ -0,0 +1,16 @@ +// RUN: %clang_cc1 -E -x assembler-with-cpp %s -o - | FileCheck %s --strict-whitespace + +.intel_syntax noprefix +.text + .global _main +_main: +# asdf +# asdf + mov bogus_name, 20 + mov rax, 5 + ret + +// CHECK-LABEL: _main: +// CHECK-NEXT: {{^}} # asdf +// CHECK-NEXT: {{^}} # asdf +// CHECK-NEXT: mov bogus_name, 20 diff --git a/test/Preprocessor/stdint.c b/test/Preprocessor/stdint.c index 01b0da718627..3b32346d5edc 100644 --- a/test/Preprocessor/stdint.c +++ b/test/Preprocessor/stdint.c @@ -28,8 +28,8 @@ // ARM:typedef int8_t int_fast8_t; // ARM:typedef uint8_t uint_fast8_t; // -// ARM:typedef long int intptr_t; -// ARM:typedef long unsigned int uintptr_t; +// ARM:typedef int intptr_t; +// ARM:typedef unsigned int uintptr_t; // // ARM:typedef long long int intmax_t; // ARM:typedef long long unsigned int uintmax_t; @@ -74,9 +74,9 @@ // ARM:INT_FAST64_MAX_ 9223372036854775807LL // ARM:UINT_FAST64_MAX_ 18446744073709551615ULL // -// ARM:INTPTR_MIN_ (-2147483647L -1) -// ARM:INTPTR_MAX_ 2147483647L -// ARM:UINTPTR_MAX_ 4294967295UL +// ARM:INTPTR_MIN_ (-2147483647 -1) +// ARM:INTPTR_MAX_ 2147483647 +// ARM:UINTPTR_MAX_ 4294967295U // ARM:PTRDIFF_MIN_ (-2147483647 -1) // ARM:PTRDIFF_MAX_ 2147483647 // ARM:SIZE_MAX_ 4294967295U diff --git a/test/Preprocessor/wchar_t.c b/test/Preprocessor/wchar_t.c new file mode 100644 index 000000000000..6c47a2bb6a37 --- /dev/null +++ b/test/Preprocessor/wchar_t.c @@ -0,0 +1,113 @@ +// RUN: %clang_cc1 -triple i386-pc-solaris -dM -E %s -o - | FileCheck %s -check-prefix CHECK-SOLARIS +// CHECK-SOLARIS-DAG: #define __WCHAR_MAX__ 2147483647 +// CHECK-SOLARIS-DAG: #define __WCHAR_TYPE__ int +// CHECK-SOLARIS-NOT: #define __WCHAR_UNSIGNED__ 0 + +// RUN: %clang_cc1 -triple avr-unknown-unknown -fwchar-type=int -fsigned-wchar -dM -E %s -o - | FileCheck %s -check-prefix CHECK-AVR +// CHECK-AVR-DAG: #define __WCHAR_MAX__ 32767 +// CHECK-AVR-DAG: #define __WCHAR_TYPE__ int +// CHECK-AVR-NOT: #define __WCHAR_UNSIGNED__ 0 + +// RUN: %clang_cc1 -triple arm-unknown-none-gnu -fsigned-wchar -dM -E %s -o - | FileCheck %s -check-prefix CHECK-ARM-APCS +// CHECK-ARM-APCS-DAG: #define __WCHAR_MAX__ 2147483647 +// CHECK-ARM-APCS-DAG: #define __WCHAR_TYPE__ int +// CHECK-ARM-APCS-NOT: #define __WCHAR_UNSIGNED__ 0 + +// RUN: %clang_cc1 -triple arm-unknown-netbsd-gnu -fsigned-wchar -dM -E %s -o - | FileCheck %s -check-prefix CHECK-ARM-NETBSD-AAPCS +// CHECK-ARM-NETBSD-AAPCS-DAG: #define __WCHAR_MAX__ 2147483647 +// CHECK-ARM-NETBSD-AAPCS-DAG: #define __WCHAR_TYPE__ int +// CHECK-ARM-NETBSD-AAPCS-NOT: #define __WCHAR_UNSIGNED__ 0 + +// RUN: %clang_cc1 -triple arm-unknown-openbsd -fsigned-wchar -dM -E %s -o - | FileCheck %s -check-prefix CHECK-ARM-OPENBSD +// CHECK-ARM-OPENBSD-DAG: #define __WCHAR_MAX__ 2147483647 +// CHECK-ARM-OPENBSD-DAG: #define __WCHAR_TYPE__ int +// CHECK-ARM-OPENBSD-NOT: #define __WCHAR_UNSIGNED__ 0 + +// RUN: %clang_cc1 -triple arm64-apple-ios -fsigned-wchar -dM -E %s -o - | FileCheck %s -check-prefix CHECK-ARM64-DARWIN +// CHECK-ARM64-DARWIN-DAG: #define __WCHAR_MAX__ 2147483647 +// CHECK-ARM64-DARWIN-DAG: #define __WCHAR_TYPE__ int +// CHECK-ARM64-DARWIN-NOT: #define __WCHAR_UNSIGNED__ 0 + +// RUN: %clang_cc1 -triple aarch64-unknown-netbsd -fsigned-wchar -dM -E %s -o - | FileCheck %s -check-prefix CHECK-ARM64-NETBSD +// CHECK-ARM64-NETBSD-DAG: #define __WCHAR_MAX__ 2147483647 +// CHECK-ARM64-NETBSD-DAG: #define __WCHAR_TYPE__ int +// CHECK-ARM64-NETBSD-NOT: #define __WCHAR_UNSIGNED__ 0 + +// RUN: %clang_cc1 -triple aarch64-unknown-openbsd -fsigned-wchar -dM -E %s -o - | FileCheck %s -check-prefix CHECK-ARM64-OPENBSD +// CHECK-ARM64-OPENBSD-DAG: #define __WCHAR_MAX__ 2147483647 +// CHECK-ARM64-OPENBSD-DAG: #define __WCHAR_TYPE__ int +// CHECK-ARM64-OPENBSD-NOT: #define __WCHAR_UNSIGNED__ 0 + +// RUN: %clang_cc1 -triple aarch64-unknown-none -fwchar-type=int -fno-signed-wchar -dM -E %s -o - | FileCheck %s -check-prefix CHECK-ARM64-AAPCS64 +// CHECK-ARM64-AAPCS64-DAG: #define __WCHAR_MAX__ 4294967295U +// CHECK-ARM64-AAPCS64-DAG: #define __WCHAR_TYPE__ unsigned int +// CHECK-ARM64-AAPCS64-DAG: #define __WCHAR_UNSIGNED__ 1 + +// RUN: %clang_cc1 -triple xcore-unknown-unknown -fwchar-type=char -fno-signed-wchar -dM -E %s -o - | FileCheck %s -check-prefix CHECK-XCORE +// CHECK-XCORE-DAG: #define __WCHAR_MAX__ 255 +// CHECK-XCORE-DAG: #define __WCHAR_TYPE__ unsigned char +// CHECK-XCORE-DAG: #define __WCHAR_UNSIGNED__ 1 + +// RUN: %clang_cc1 -triple x86_64-unknown-windows-cygnus -fwchar-type=short -fno-signed-wchar -dM -E %s -o - | FileCheck %s -check-prefix CHECK-CYGWIN-X64 +// CHECK-CYGWIN-X64-DAG: #define __WCHAR_MAX__ 65535 +// CHECK-CYGWIN-X64-DAG: #define __WCHAR_TYPE__ unsigned short +// CHECK-CYGWIN-X64-DAG: #define __WCHAR_UNSIGNED__ 1 + +// RUN: %clang_cc1 -triple x86_64-unknown-windows-msvc -fwchar-type=short -fno-signed-wchar -dM -E %s -o - | FileCheck %s -check-prefix CHECK-MSVC-X64 +// CHECK-MSVC-X64-DAG: #define __WCHAR_MAX__ 65535 +// CHECK-MSVC-X64-DAG: #define __WCHAR_TYPE__ unsigned short +// CHECK-MSVC-X64-DAG: #define __WCHAR_UNSIGNED__ 1 + +// RUN: %clang_cc1 -triple i686-unknown-windows-cygnus -fwchar-type=short -fno-signed-wchar -dM -E %s -o - | FileCheck %s -check-prefix CHECK-CYGWIN-X86 +// CHECK-CYGWIN-X86-DAG: #define __WCHAR_MAX__ 65535 +// CHECK-CYGWIN-X86-DAG: #define __WCHAR_TYPE__ unsigned short +// CHECK-CYGWIN-X86-DAG: #define __WCHAR_UNSIGNED__ 1 + +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fwchar-type=short -fno-signed-wchar -dM -E %s -o - | FileCheck %s -check-prefix CHECK-MSVC-X86 +// CHECK-MSVC-X86-DAG: #define __WCHAR_MAX__ 65535 +// CHECK-MSVC-X86-DAG: #define __WCHAR_TYPE__ unsigned short +// CHECK-MSVC-X86-DAG: #define __WCHAR_UNSIGNED__ 1 + +// RUN: %clang_cc1 -triple x86_64-scei-ps4 -fwchar-type=short -fno-signed-wchar -dM -E %s -o - | FileCheck %s -check-prefix CHECK-PS4 +// CHECK-PS4-DAG: #define __WCHAR_MAX__ 65535 +// CHECK-PS4-DAG: #define __WCHAR_TYPE__ unsigned short +// CHECK-PS4-DAG: #define __WCHAR_UNSIGNED__ 1 + +// RUN: %clang_cc1 -triple thumbv7-unknown-windows-cygnus -fwchar-type=short -fno-signed-wchar -dM -E %s -o - | FileCheck %s -check-prefix CHECK-CYGWIN-ARM +// CHECK-CYGWIN-ARM-DAG: #define __WCHAR_MAX__ 65535 +// CHECK-CYGWIN-ARM-DAG: #define __WCHAR_TYPE__ unsigned short +// CHECK-CYGWIN-ARM-DAG: #define __WCHAR_UNSIGNED__ 1 + +// RUN: %clang_cc1 -triple thumbv7-unknown-windows-msvc -fwchar-type=short -fno-signed-wchar -dM -E %s -o - | FileCheck %s -check-prefix CHECK-MSVC-ARM +// CHECK-MSVC-ARM-DAG: #define __WCHAR_MAX__ 65535 +// CHECK-MSVC-ARM-DAG: #define __WCHAR_TYPE__ unsigned short +// CHECK-MSVC-ARM-DAG: #define __WCHAR_UNSIGNED__ 1 + +// RUN: %clang_cc1 -triple aarch64-unknown-windows-msvc -fwchar-type=short -fno-signed-wchar -dM -E %s -o - | FileCheck %s -check-prefix CHECK-MSVC-ARM64 +// CHECK-MSVC-ARM64-DAG: #define __WCHAR_MAX__ 65535 +// CHECK-MSVC-ARM64-DAG: #define __WCHAR_TYPE__ unsigned short +// CHECK-MSVC-ARM64-DAG: #define __WCHAR_UNSIGNED__ 1 + +// RUN: %clang_cc1 -triple i386-apple-macosx -dM -E %s -o - | FileCheck %s -check-prefix CHECK-DARWIN +// RUN: %clang_cc1 -triple x86_64-apple-macosx -dM -E %s -o - | FileCheck %s -check-prefix CHECK-DARWIN +// RUN: %clang_cc1 -triple ppc64-apple-macosx -dM -E %s -o - | FileCheck %s -check-prefix CHECK-DARWIN +// RUN: %clang_cc1 -triple i386-apple-ios -dM -E %s -o - | FileCheck %s -check-prefix CHECK-DARWIN +// RUN: %clang_cc1 -triple x86_64-apple-ios -dM -E %s -o - | FileCheck %s -check-prefix CHECK-DARWIN +// RUN: %clang_cc1 -triple armv7-apple-ios -dM -E %s -o - | FileCheck %s -check-prefix CHECK-DARWIN +// RUN: %clang_cc1 -triple aarch64-apple-ios -dM -E %s -o - | FileCheck %s -check-prefix CHECK-DARWIN +// RUN: %clang_cc1 -triple i386-apple-tvos -dM -E %s -o - | FileCheck %s -check-prefix CHECK-DARWIN +// RUN: %clang_cc1 -triple x86_64-apple-tvos -dM -E %s -o - | FileCheck %s -check-prefix CHECK-DARWIN +// RUN: %clang_cc1 -triple armv7-apple-tvos -dM -E %s -o - | FileCheck %s -check-prefix CHECK-DARWIN +// RUN: %clang_cc1 -triple aarch64-apple-tvos -dM -E %s -o - | FileCheck %s -check-prefix CHECK-DARWIN +// RUN: %clang_cc1 -triple i386-apple-watchos -dM -E %s -o - | FileCheck %s -check-prefix CHECK-DARWIN +// RUN: %clang_cc1 -triple x86_64-apple-watchos -dM -E %s -o - | FileCheck %s -check-prefix CHECK-DARWIN +// RUN: %clang_cc1 -triple armv7-apple-watchos -dM -E %s -o - | FileCheck %s -check-prefix CHECK-DARWIN +// RUN: %clang_cc1 -triple aarch64-apple-watchos -dM -E %s -o - | FileCheck %s -check-prefix CHECK-DARWIN +// CHECK-DARWIN: #define __WCHAR_TYPE__ int + +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fwchar-type=int -fsigned-wchar -dM -E %s -o - | FileCheck %s -check-prefix CHECK-WINDOWS-ISO10646 +// RUN: %clang_cc1 -triple x86_64-unknown-windows-msvc -fwchar-type=int -fsigned-wchar -dM -E %s -o - | FileCheck %s -check-prefix CHECK-WINDOWS-ISO10646 +// RUN: %clang_cc1 -triple thumbv7-unknown-windows-msvc -fwchar-type=int -fsigned-wchar -dM -E %s -o - | FileCheck %s -check-prefix CHECK-WINDOWS-ISO10646 +// RUN: %clang_cc1 -triple aarch64-unknown-windows-msvc -fwchar-type=int -fsigned-wchar -dM -E %s -o - | FileCheck %s -check-prefix CHECK-WINDOWS-ISO10646 +// CHECK-WINDOWS-ISO10646: #define __WCHAR_TYPE__ int + diff --git a/test/Preprocessor/woa-defaults.c b/test/Preprocessor/woa-defaults.c index 6eab3b96f414..4eef863b23a1 100644 --- a/test/Preprocessor/woa-defaults.c +++ b/test/Preprocessor/woa-defaults.c @@ -10,9 +10,12 @@ // CHECK: #define _M_THUMB _M_ARM // CHECK: #define _WIN32 1 + // CHECK: #define __ARM_PCS 1 // CHECK: #define __ARM_PCS_VFP 1 // CHECK: #define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__ +// CHECK: #define __INTPTR_TYPE__ int +// CHECK: #define __PTRDIFF_TYPE__ int // CHECK: #define __SIZEOF_DOUBLE__ 8 // CHECK: #define __SIZEOF_FLOAT__ 4 // CHECK: #define __SIZEOF_INT__ 4 @@ -25,6 +28,8 @@ // CHECK: #define __SIZEOF_SIZE_T__ 4 // CHECK: #define __SIZEOF_WCHAR_T__ 2 // CHECK: #define __SIZEOF_WINT_T__ 4 +// CHECK: #define __SIZE_TYPE__ unsigned int +// CHECK: #define __UINTPTR_TYPE__ unsigned int // CHECK-NOT: __THUMB_INTERWORK__ // CHECK-NOT: __ARM_EABI__ diff --git a/test/Preprocessor/x86_target_features.c b/test/Preprocessor/x86_target_features.c index ce3835f91f42..e2d0e39a03f8 100644 --- a/test/Preprocessor/x86_target_features.c +++ b/test/Preprocessor/x86_target_features.c @@ -333,6 +333,10 @@ // ADX: #define __ADX__ 1 +// RUN: %clang -target i386-unknown-unknown -mshstk -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=CETSS %s + +// CETSS: #define __SHSTK__ 1 + // RUN: %clang -target i386-unknown-unknown -march=atom -mrdseed -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=RDSEED %s // RDSEED: #define __RDSEED__ 1 |
