diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2015-12-30 11:49:41 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2015-12-30 11:49:41 +0000 |
| commit | 45b533945f0851ec234ca846e1af5ee1e4df0b6e (patch) | |
| tree | 0a5b74c0b9ca73aded34df95c91fcaf3815230d8 /test/Preprocessor | |
| parent | 7e86edd64bfae4e324224452e4ea879b3371a4bd (diff) | |
Notes
Diffstat (limited to 'test/Preprocessor')
24 files changed, 1371 insertions, 112 deletions
diff --git a/test/Preprocessor/Inputs/microsoft-header-search/a/findme.h b/test/Preprocessor/Inputs/microsoft-header-search/a/findme.h index b809c9075d60..0afe145ee32a 100644 --- a/test/Preprocessor/Inputs/microsoft-header-search/a/findme.h +++ b/test/Preprocessor/Inputs/microsoft-header-search/a/findme.h @@ -1,3 +1,3 @@ #pragma once -#warning findme.h successfully included using MS search rules
\ No newline at end of file +#warning findme.h successfully included using Microsoft header search rules diff --git a/test/Preprocessor/Inputs/microsoft-header-search/a/include2.h b/test/Preprocessor/Inputs/microsoft-header-search/a/include2.h index 99640ae47a87..42bdaa7db3a3 100644 --- a/test/Preprocessor/Inputs/microsoft-header-search/a/include2.h +++ b/test/Preprocessor/Inputs/microsoft-header-search/a/include2.h @@ -1,6 +1,3 @@ #pragma once #include "b/include3.h" -#pragma once - -#include "b/include3.h"
\ No newline at end of file diff --git a/test/Preprocessor/Inputs/microsoft-header-search/findme.h b/test/Preprocessor/Inputs/microsoft-header-search/findme.h index aeaf795a1a80..b080cd80df2a 100644 --- a/test/Preprocessor/Inputs/microsoft-header-search/findme.h +++ b/test/Preprocessor/Inputs/microsoft-header-search/findme.h @@ -1,3 +1,3 @@ #pragma once -#error Wrong findme.h included, MSVC header search incorrect
\ No newline at end of file +#error Wrong findme.h included, Microsoft header search incorrect diff --git a/test/Preprocessor/Inputs/microsoft-header-search/include1.h b/test/Preprocessor/Inputs/microsoft-header-search/include1.h index f00fac7a1799..531561b2c744 100644 --- a/test/Preprocessor/Inputs/microsoft-header-search/include1.h +++ b/test/Preprocessor/Inputs/microsoft-header-search/include1.h @@ -1,6 +1,3 @@ #pragma once #include "a/include2.h" -#pragma once - -#include "a/include2.h"
\ No newline at end of file diff --git a/test/Preprocessor/_Pragma.c b/test/Preprocessor/_Pragma.c index 120e754cb986..99231879ece0 100644 --- a/test/Preprocessor/_Pragma.c +++ b/test/Preprocessor/_Pragma.c @@ -12,4 +12,8 @@ _Pragma("message(\"foo \\\\\\\\ bar\")") // expected-warning {{foo \\ bar}} #error #define invalid #endif +_Pragma(unroll 1 // expected-error{{_Pragma takes a parenthesized string literal}} + +_Pragma(clang diagnostic push) // expected-error{{_Pragma takes a parenthesized string literal}} + _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 eea72b3df35b..2630e32fc45a 100644 --- a/test/Preprocessor/aarch64-target-features.c +++ b/test/Preprocessor/aarch64-target-features.c @@ -3,10 +3,17 @@ // CHECK: __AARCH64EL__ 1 // CHECK: __ARM_64BIT_STATE 1 +// CHECK-NOT: __ARM_32BIT_STATE // CHECK: __ARM_ACLE 200 // CHECK: __ARM_ALIGN_MAX_STACK_PWR 4 // CHECK: __ARM_ARCH 8 // CHECK: __ARM_ARCH_ISA_A64 1 +// CHECK-NOT: __ARM_ARCH_ISA_ARM +// CHECK-NOT: __ARM_ARCH_ISA_THUMB +// CHECK-NOT: __ARM_FEATURE_QBIT +// CHECK-NOT: __ARM_FEATURE_DSP +// CHECK-NOT: __ARM_FEATURE_SAT +// CHECK-NOT: __ARM_FEATURE_SIMD32 // CHECK: __ARM_ARCH_PROFILE 'A' // CHECK-NOT: __ARM_FEATURE_BIG_ENDIAN // CHECK: __ARM_FEATURE_CLZ 1 @@ -16,18 +23,24 @@ // CHECK: __ARM_FEATURE_DIV 1 // CHECK: __ARM_FEATURE_FMA 1 // CHECK: __ARM_FEATURE_IDIV 1 +// CHECK: __ARM_FEATURE_LDREX 0xF // CHECK: __ARM_FEATURE_NUMERIC_MAXMIN 1 // CHECK: __ARM_FEATURE_UNALIGNED 1 -// CHECK: __ARM_FP 0xe +// CHECK: __ARM_FP 0xE +// CHECK: __ARM_FP16_ARGS 1 // CHECK: __ARM_FP16_FORMAT_IEEE 1 // CHECK-NOT: __ARM_FP_FAST 1 -// CHECK: __ARM_FP_FENV_ROUNDING 1 // CHECK: __ARM_NEON 1 -// CHECK: __ARM_NEON_FP 0xe +// CHECK: __ARM_NEON_FP 0xE // CHECK: __ARM_PCS_AAPCS64 1 +// CHECK-NOT: __ARM_PCS 1 +// CHECK-NOT: __ARM_PCS_VFP 1 // CHECK-NOT: __ARM_SIZEOF_MINIMAL_ENUM 1 // CHECK-NOT: __ARM_SIZEOF_WCHAR_T 2 +// RUN: %clang -target aarch64_be-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-BIGENDIAN +// CHECK-BIGENDIAN: __ARM_BIG_ENDIAN 1 + // RUN: %clang -target aarch64-none-linux-gnu -march=armv8-a+crypto -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-CRYPTO %s // RUN: %clang -target arm64-none-linux-gnu -march=armv8-a+crypto -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-CRYPTO %s // CHECK-CRYPTO: __ARM_FEATURE_CRYPTO 1 @@ -38,6 +51,9 @@ // RUN: %clang -target arm64-none-linux-gnu -march=armv8-a+crc -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-CRC32 %s // CHECK-CRC32: __ARM_FEATURE_CRC32 1 +// RUN: %clang -target aarch64-none-linux-gnu -fno-math-errno -fno-signed-zeros\ +// RUN: -fno-trapping-math -fassociative-math -freciprocal-math\ +// RUN: -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-FASTMATH %s // RUN: %clang -target aarch64-none-linux-gnu -ffast-math -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-FASTMATH %s // RUN: %clang -target arm64-none-linux-gnu -ffast-math -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-FASTMATH %s // CHECK-FASTMATH: __ARM_FP_FAST 1 @@ -53,7 +69,10 @@ // RUN: %clang -target aarch64-none-linux-gnu -march=armv8-a+simd -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-NEON %s // RUN: %clang -target arm64-none-linux-gnu -march=armv8-a+simd -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-NEON %s // CHECK-NEON: __ARM_NEON 1 -// CHECK-NEON: __ARM_NEON_FP 0xe +// CHECK-NEON: __ARM_NEON_FP 0xE + +// RUN: %clang -target aarch64-none-eabi -march=armv8.1-a -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-V81A %s +// CHECK-V81A: __ARM_FEATURE_QRDMX 1 // RUN: %clang -target aarch64 -march=arm64 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-ARCH-NOT-ACCEPT %s // RUN: %clang -target aarch64 -march=aarch64 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-ARCH-NOT-ACCEPT %s @@ -64,13 +83,17 @@ // CHECK-GENERIC: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+neon" // RUN: %clang -target aarch64 -mtune=cyclone -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MTUNE-CYCLONE %s +// ================== Check whether -mtune accepts mixed-case features. +// RUN: %clang -target aarch64 -mtune=CYCLONE -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MTUNE-CYCLONE %s // CHECK-MTUNE-CYCLONE: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+neon" "-target-feature" "+zcm" "-target-feature" "+zcz" // RUN: %clang -target aarch64 -mcpu=cyclone -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MCPU-CYCLONE %s +// RUN: %clang -target aarch64 -mcpu=cortex-a35 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MCPU-A35 %s // RUN: %clang -target aarch64 -mcpu=cortex-a53 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MCPU-A53 %s // RUN: %clang -target aarch64 -mcpu=cortex-a57 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MCPU-A57 %s // RUN: %clang -target aarch64 -mcpu=cortex-a72 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MCPU-A72 %s // CHECK-MCPU-CYCLONE: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+neon" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+zcm" "-target-feature" "+zcz" +// CHECK-MCPU-A35: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+neon" "-target-feature" "+crc" "-target-feature" "+crypto" // 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" // CHECK-MCPU-A72: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+neon" "-target-feature" "+crc" "-target-feature" "+crypto" @@ -108,6 +131,9 @@ // RUN: %clang -target aarch64 -mcpu=cortex-a53 -mtune=cyclone -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MCPU-MTUNE %s // RUN: %clang -target aarch64 -mtune=cyclone -mcpu=cortex-a53 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MCPU-MTUNE %s +// ================== Check whether -mtune accepts mixed-case features. +// RUN: %clang -target aarch64 -mcpu=cortex-a53 -mtune=CYCLONE -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MCPU-MTUNE %s +// RUN: %clang -target aarch64 -mtune=CyclonE -mcpu=cortex-a53 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MCPU-MTUNE %s // CHECK-MCPU-MTUNE: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+neon" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+zcm" "-target-feature" "+zcz" // RUN: %clang -target aarch64 -mcpu=generic+neon -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-ERROR-NEON %s diff --git a/test/Preprocessor/arm-acle-6.4.c b/test/Preprocessor/arm-acle-6.4.c index fc228d093c8c..148ce6df090c 100644 --- a/test/Preprocessor/arm-acle-6.4.c +++ b/test/Preprocessor/arm-acle-6.4.c @@ -1,46 +1,180 @@ -// RUN: %clang -target arm-eabi -mcpu=cortex-m0 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-CORTEX-M0 +// RUN: %clang -target arm-eabi -x c -E -dM %s -o - | FileCheck %s +// RUN: %clang -target thumb-eabi -x c -E -dM %s -o - | FileCheck %s -// CHECK-CORTEX-M0: __ARM_32BIT_STATE 1 -// CHECK-CORTEX-M0: __ARM_ARCH 6 -// 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 +// CHECK-NOT: __ARM_64BIT_STATE +// CHECK-NOT: __ARM_ARCH_ISA_A64 +// CHECK-NOT: __ARM_BIG_ENDIAN +// CHECK: __ARM_32BIT_STATE 1 +// CHECK: __ARM_ACLE 200 -// RUN: %clang -target arm-eabi -mcpu=arm810 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-ARM810 +// RUN: %clang -target armeb-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-BIGENDIAN +// RUN: %clang -target thumbeb-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-BIGENDIAN -// CHECK-ARM810: __ARM_32BIT_STATE 1 -// CHECK-ARM810: __ARM_ARCH 4 -// 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 +// CHECK-BIGENDIAN: __ARM_BIG_ENDIAN 1 -// RUN: %clang -target arm-eabi -mcpu=arm7tdmi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-ARM7TDMI +// RUN: %clang -target armv7-none-linux-eabi -mno-unaligned-access -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-UNALIGNED -// CHECK-ARM7TDMI: __ARM_32BIT_STATE 1 -// CHECK-ARM7TDMI: __ARM_ARCH 4 -// CHECK-ARM7TDMI: __ARM_ARCH_ISA_ARM 1 -// CHECK-ARM7TDMI: __ARM_ARCH_ISA_THUMB 1 -// CHECK-ARM7TDMI-NOT: __ARM_ARCH_PROFILE +// CHECK-UNALIGNED-NOT: __ARM_FEATURE_UNALIGNED -// RUN: %clang -target arm-eabi -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-CORTEX-A7 +// RUN: %clang -target arm-none-linux-eabi -march=armv4 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V4 -// CHECK-CORTEX-A7: __ARM_32BIT_STATE 1 -// CHECK-CORTEX-A7: __ARM_ARCH 7 -// 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 +// CHECK-V4-NOT: __ARM_ARCH_ISA_THUMB +// CHECK-V4-NOT: __ARM_ARCH_PROFILE +// CHECK-V4-NOT: __ARM_FEATURE_CLZ +// CHECK-V4-NOT: __ARM_FEATURE_LDREX +// CHECK-V4-NOT: __ARM_FEATURE_UNALIGNED +// CHECK-V4-NOT: __ARM_FEATURE_DSP +// CHECK-V4-NOT: __ARM_FEATURE_SAT +// CHECK-V4-NOT: __ARM_FEATURE_QBIT +// CHECK-V4-NOT: __ARM_FEATURE_SIMD32 +// CHECK-V4-NOT: __ARM_FEATURE_IDIV +// CHECK-V4: __ARM_ARCH 4 +// CHECK-V4: __ARM_ARCH_ISA_ARM 1 -// RUN: %clang -target arm-eabi -mcpu=cortex-r4 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-CORTEX-R4 +// RUN: %clang -target arm-none-linux-eabi -march=armv4t -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V4T -// CHECK-CORTEX-R4: __ARM_32BIT_STATE 1 -// CHECK-CORTEX-R4: __ARM_ARCH 7 -// CHECK-CORTEX-R4: __ARM_ARCH_ISA_ARM 1 -// CHECK-CORTEX-R4: __ARM_ARCH_ISA_THUMB 2 -// CHECK-CORTEX-R4: __ARM_ARCH_PROFILE 'R' +// CHECK-V4T: __ARM_ARCH_ISA_THUMB 1 + +// RUN: %clang -target arm-none-linux-eabi -march=armv5t -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V5 + +// CHECK-V5-NOT: __ARM_ARCH_PROFILE +// CHECK-V5-NOT: __ARM_FEATURE_LDREX +// CHECK-V5-NOT: __ARM_FEATURE_UNALIGNED +// CHECK-V5-NOT: __ARM_FEATURE_DSP +// CHECK-V5-NOT: __ARM_FEATURE_SAT +// CHECK-V5-NOT: __ARM_FEATURE_QBIT +// CHECK-V5-NOT: __ARM_FEATURE_SIMD32 +// CHECK-V5-NOT: __ARM_FEATURE_IDIV +// CHECK-V5: __ARM_ARCH 5 +// CHECK-V5: __ARM_ARCH_ISA_ARM 1 +// CHECK-V5: __ARM_ARCH_ISA_THUMB 1 +// CHECK-V5: __ARM_FEATURE_CLZ 1 + +// RUN: %clang -target arm-none-linux-eabi -march=armv5te -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V5E + +// CHECK-V5E: __ARM_FEATURE_DSP 1 +// CHECK-V5E: __ARM_FEATURE_QBIT 1 + +// RUN: %clang -target armv6-none-netbsd-eabi -mcpu=arm1136jf-s -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V6 + +// CHECK-V6-NOT: __ARM_ARCH_PROFILE +// CHECK-V6-NOT: __ARM_FEATURE_IDIV +// CHECK-V6: __ARM_ARCH 6 +// CHECK-V6: __ARM_ARCH_ISA_ARM 1 +// CHECK-V6: __ARM_ARCH_ISA_THUMB 1 +// CHECK-V6: __ARM_FEATURE_CLZ 1 +// CHECK-V6: __ARM_FEATURE_DSP 1 +// CHECK-V6: __ARM_FEATURE_LDREX 0x4 +// CHECK-V6: __ARM_FEATURE_QBIT 1 +// CHECK-V6: __ARM_FEATURE_SAT 1 +// CHECK-V6: __ARM_FEATURE_SIMD32 1 +// CHECK-V6: __ARM_FEATURE_UNALIGNED 1 + +// RUN: %clang -target arm-none-linux-eabi -march=armv6m -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V6M + +// CHECK-V6M-NOT: __ARM_ARCH_ISA_ARM +// CHECK-V6M-NOT: __ARM_FEATURE_CLZ +// CHECK-V6M-NOT: __ARM_FEATURE_LDREX +// CHECK-V6M-NOT: __ARM_FEATURE_UNALIGNED +// CHECK-V6M-NOT: __ARM_FEATURE_DSP +// CHECK-V6M-NOT: __ARM_FEATURE_QBIT +// CHECK-V6M-NOT: __ARM_FEATURE_SAT +// CHECK-V6M-NOT: __ARM_FEATURE_SIMD32 +// CHECK-V6M-NOT: __ARM_FEATURE_IDIV +// CHECK-V6M: __ARM_ARCH 6 +// CHECK-V6M: __ARM_ARCH_ISA_THUMB 1 +// CHECK-V6M: __ARM_ARCH_PROFILE 'M' + +// RUN: %clang -target arm-none-linux-eabi -march=armv6t2 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V6T2 + +// CHECK-V6T2: __ARM_ARCH_ISA_THUMB 2 + +// RUN: %clang -target arm-none-linux-eabi -march=armv6k -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V6K + +// CHECK-V6K: __ARM_FEATURE_LDREX 0xF + +// RUN: %clang -target arm-none-linux-eabi -march=armv7-a -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V7A + +// CHECK-V7A: __ARM_ARCH 7 +// CHECK-V7A: __ARM_ARCH_ISA_ARM 1 +// CHECK-V7A: __ARM_ARCH_ISA_THUMB 2 +// CHECK-V7A: __ARM_ARCH_PROFILE 'A' +// CHECK-V7A: __ARM_FEATURE_CLZ 1 +// CHECK-V7A: __ARM_FEATURE_DSP 1 +// CHECK-V7A: __ARM_FEATURE_LDREX 0xF +// CHECK-V7A: __ARM_FEATURE_QBIT 1 +// CHECK-V7A: __ARM_FEATURE_SAT 1 +// CHECK-V7A: __ARM_FEATURE_SIMD32 1 +// CHECK-V7A: __ARM_FEATURE_UNALIGNED 1 + +// RUN: %clang -target arm-none-linux-eabi -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V7A-IDIV +// RUN: %clang -target arm-none-linux-eabi -mcpu=cortex-a12 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V7A-IDIV +// RUN: %clang -target arm-none-linux-eabi -mcpu=cortex-a15 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V7A-IDIV +// RUN: %clang -target arm-none-linux-eabi -mcpu=cortex-a17 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V7A-IDIV + +// CHECK-V7A-IDIV: __ARM_FEATURE_IDIV 1 + +// RUN: %clang -target arm-none-linux-eabi -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V7A-NO-IDIV +// RUN: %clang -target arm-none-linux-eabi -mcpu=cortex-a8 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V7A-NO-IDIV +// RUN: %clang -target arm-none-linux-eabi -mcpu=cortex-a9 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V7A-NO-IDIV + +// CHECK-V7A-NO-IDIV-NOT: __ARM_FEATURE_IDIV + +// RUN: %clang -target arm-none-linux-eabi -march=armv7-r -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V7R + +// CHECK-V7R: __ARM_ARCH 7 +// CHECK-V7R: __ARM_ARCH_ISA_ARM 1 +// CHECK-V7R: __ARM_ARCH_ISA_THUMB 2 +// CHECK-V7R: __ARM_ARCH_PROFILE 'R' +// CHECK-V7R: __ARM_FEATURE_CLZ 1 +// CHECK-V7R: __ARM_FEATURE_DSP 1 +// CHECK-V7R: __ARM_FEATURE_LDREX 0xF +// CHECK-V7R: __ARM_FEATURE_QBIT 1 +// CHECK-V7R: __ARM_FEATURE_SAT 1 +// CHECK-V7R: __ARM_FEATURE_SIMD32 1 +// CHECK-V7R: __ARM_FEATURE_UNALIGNED 1 + +// RUN: %clang -target arm-none-linux-eabi -mcpu=cortex-r4 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V7R-NO-IDIV + +// CHECK-V7R-NO-IDIV-NOT: __ARM_FEATURE_IDIV + +// RUN: %clang -target arm-none-linux-eabi -mcpu=cortex-r5 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V7R-IDIV +// RUN: %clang -target arm-none-linux-eabi -mcpu=cortex-r7 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V7R-IDIV + +// CHECK-V7R-IDIV: __ARM_FEATURE_IDIV 1 + +// RUN: %clang -target arm-none-linux-eabi -march=armv7-m -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V7M + +// CHECK-V7M-NOT: __ARM_ARCH_ISA_ARM +// CHECK-V7M-NOT: __ARM_FEATURE_DSP +// CHECK-V7M-NOT: __ARM_FEATURE_SIMD32 +// CHECK-V7M: __ARM_ARCH 7 +// CHECK-V7M: __ARM_ARCH_ISA_THUMB 2 +// CHECK-V7M: __ARM_ARCH_PROFILE 'M' +// CHECK-V7M: __ARM_FEATURE_CLZ 1 +// CHECK-V7M: __ARM_FEATURE_IDIV 1 +// CHECK-V7M: __ARM_FEATURE_LDREX 0x7 +// CHECK-V7M: __ARM_FEATURE_QBIT 1 +// CHECK-V7M: __ARM_FEATURE_SAT 1 +// CHECK-V7M: __ARM_FEATURE_UNALIGNED 1 + +// RUN: %clang -target arm-none-linux-eabi -march=armv7e-m -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V7EM + +// CHECK-V7EM: __ARM_FEATURE_DSP 1 +// CHECK-V7EM: __ARM_FEATURE_SIMD32 1 + +// RUN: %clang -target arm-none-linux-eabi -march=armv8-a -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V8A + +// CHECK-V8A: __ARM_ARCH 8 +// CHECK-V8A: __ARM_ARCH_ISA_ARM 1 +// CHECK-V8A: __ARM_ARCH_ISA_THUMB 2 +// CHECK-V8A: __ARM_ARCH_PROFILE 'A' +// CHECK-V8A: __ARM_FEATURE_CLZ 1 +// CHECK-V8A: __ARM_FEATURE_DSP 1 +// CHECK-V8A: __ARM_FEATURE_IDIV 1 +// CHECK-V8A: __ARM_FEATURE_LDREX 0xF +// CHECK-V8A: __ARM_FEATURE_QBIT 1 +// CHECK-V8A: __ARM_FEATURE_SAT 1 +// CHECK-V8A: __ARM_FEATURE_SIMD32 1 +// CHECK-V8A: __ARM_FEATURE_UNALIGNED 1 diff --git a/test/Preprocessor/arm-acle-6.5.c b/test/Preprocessor/arm-acle-6.5.c index 9db83b774b0c..95adad9faa8e 100644 --- a/test/Preprocessor/arm-acle-6.5.c +++ b/test/Preprocessor/arm-acle-6.5.c @@ -1,22 +1,95 @@ -// RUN: %clang -target arm-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-DEFAULT +// RUN: %clang -target arm-eabi -mfpu=none -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-NO-FP +// RUN: %clang -target armv4-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-NO-FP +// RUN: %clang -target armv5-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-NO-FP +// RUN: %clang -target armv6m-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-NO-FP +// RUN: %clang -target armv7r-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-NO-FP +// RUN: %clang -target armv7m-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-NO-FP -// CHECK-DEFAULT-NOT: __ARM_FP +// CHECK-NO-FP-NOT: __ARM_FP 0x{{.*}} + +// RUN: %clang -target arm-eabi -mfpu=vfpv3xd -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-SP-ONLY + +// CHECK-SP-ONLY: __ARM_FP 0x4 + +// RUN: %clang -target arm-eabi -mfpu=vfpv3xd-fp16 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-SP-HP +// RUN: %clang -target arm-eabi -mfpu=fpv4-sp-d16 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-SP-HP +// RUN: %clang -target arm-eabi -mfpu=fpv5-sp-d16 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-SP-HP + +// CHECK-SP-HP: __ARM_FP 0x6 // 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=vfpv2 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-SP-DP +// RUN: %clang -target arm-eabi -mfpu=vfpv3 -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 +// RUN: %clang -target armv6-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-SP-DP +// RUN: %clang -target armv7a-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=vfpv3-fp16 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-SP-DP-HP +// RUN: %clang -target arm-eabi -mfpu=vfpv3-d16-fp16 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-SP-DP-HP // 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=fpv5-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-fp16 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-SP-DP-HP +// RUN: %clang -target arm-eabi -mfpu=neon-vfpv4 -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 +// RUN: %clang -target armv4-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-NO-FMA +// RUN: %clang -target armv5-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-NO-FMA +// RUN: %clang -target armv6-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-NO-FMA +// RUN: %clang -target armv6m-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-NO-FMA +// RUN: %clang -target armv7m-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-NO-FMA + +// CHECK-NO-FMA-NOT: __ARM_FEATURE_FMA + +// RUN: %clang -target armv7a-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-FMA +// RUN: %clang -target armv7r-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-FMA +// RUN: %clang -target armv7em-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-FMA +// RUN: %clang -target armv8-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-FMA + +// CHECK-FMA: __ARM_FEATURE_FMA 1 + +// RUN: %clang -target armv4-eabi -mfpu=neon -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-NO-NEON +// RUN: %clang -target armv5-eabi -mfpu=neon -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-NO-NEON +// RUN: %clang -target armv6-eabi -mfpu=neon -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-NO-NEON + +// CHECK-NO-NEON-NOT: __ARM_NEON +// CHECK-NO-NEON-NOT: __ARM_NEON_FP 0x{{.*}} + +// RUN: %clang -target armv7-eabi -mfpu=neon -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-NEON-SP + +// CHECK-NEON-SP: __ARM_NEON 1 +// CHECK-NEON-SP: __ARM_NEON_FP 0x4 + +// RUN: %clang -target armv7-eabi -mfpu=neon-fp16 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-NEON-SP-HP +// RUN: %clang -target armv7-eabi -mfpu=neon-vfpv4 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-NEON-SP-HP +// RUN: %clang -target armv7-eabi -mfpu=neon-fp-armv8 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-NEON-SP-HP +// RUN: %clang -target armv7-eabi -mfpu=crypto-neon-fp-armv8 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-NEON-SP-HP + +// CHECK-NEON-SP-HP: __ARM_NEON 1 +// CHECK-NEON-SP-HP: __ARM_NEON_FP 0x6 + +// RUN: %clang -target armv4-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-NO-EXTENSIONS +// RUN: %clang -target armv5-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-NO-EXTENSIONS +// RUN: %clang -target armv6-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-NO-EXTENSIONS +// RUN: %clang -target armv7-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-NO-EXTENSIONS + +// CHECK-NO-EXTENSIONS-NOT: __ARM_FEATURE_CRC32 +// CHECK-NO-EXTENSIONS-NOT: __ARM_FEATURE_CRYPTO +// CHECK-NO-EXTENSIONS-NOT: __ARM_FEATURE_DIRECTED_ROUNDING +// CHECK-NO-EXTENSIONS-NOT: __ARM_FEATURE_NUMERIC_MAXMIN + +// RUN: %clang -target armv8-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-EXTENSIONS + +// CHECK-EXTENSIONS: __ARM_FEATURE_CRC32 1 +// CHECK-EXTENSIONS: __ARM_FEATURE_CRYPTO 1 +// CHECK-EXTENSIONS: __ARM_FEATURE_DIRECTED_ROUNDING 1 +// CHECK-EXTENSIONS: __ARM_FEATURE_NUMERIC_MAXMIN 1 + diff --git a/test/Preprocessor/arm-target-features.c b/test/Preprocessor/arm-target-features.c index 389877125d11..ae27aa0a08b5 100644 --- a/test/Preprocessor/arm-target-features.c +++ b/test/Preprocessor/arm-target-features.c @@ -1,19 +1,31 @@ -// RUN: %clang -target armv8a-none-linux-gnu -x c -E -dM %s -o - | FileCheck %s -// CHECK: __ARMEL__ 1 -// 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 armv8a-none-linux-gnu -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-V8A %s +// CHECK-V8A: __ARMEL__ 1 +// CHECK-V8A: __ARM_ARCH 8 +// CHECK-V8A: __ARM_ARCH_8A__ 1 +// CHECK-V8A: __ARM_FEATURE_CRC32 1 +// CHECK-V8A: __ARM_FEATURE_DIRECTED_ROUNDING 1 +// CHECK-V8A: __ARM_FEATURE_NUMERIC_MAXMIN 1 +// CHECK-V8A: __ARM_FP 0xE +// CHECK-V8A: __ARM_FP16_ARGS 1 +// CHECK-V8A: __ARM_FP16_FORMAT_IEEE 1 // RUN: %clang -target armv7a-none-linux-gnu -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-V7 %s -// RUN: %clang -target x86_64-apple-macosx10.10 -arch armv7s -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 +// CHECK-V7: __ARM_FP 0xC + +// RUN: %clang -target x86_64-apple-macosx10.10 -arch armv7s -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-V7S %s +// CHECK-V7S: __ARMEL__ 1 +// CHECK-V7S: __ARM_ARCH 7 +// CHECK-V7S: __ARM_ARCH_7S__ 1 +// CHECK-V7S-NOT: __ARM_FEATURE_CRC32 +// CHECK-V7S-NOT: __ARM_FEATURE_NUMERIC_MAXMIN +// CHECK-V7S-NOT: __ARM_FEATURE_DIRECTED_ROUNDING +// CHECK-V7S: __ARM_FP 0xE // RUN: %clang -target armv8a -mfloat-abi=hard -x c -E -dM %s | FileCheck --check-prefix=CHECK-V8-BAREHF %s // CHECK-V8-BAREHF: __ARMEL__ 1 @@ -22,15 +34,19 @@ // 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-BAREHP: __ARM_FP 0xE // CHECK-V8-BAREHF: __ARM_NEON__ 1 +// CHECK-V8-BAREHF: __ARM_PCS_VFP 1 // CHECK-V8-BAREHF: __VFP_FP__ 1 // RUN: %clang -target armv8a -mfloat-abi=hard -mfpu=fp-armv8 -x c -E -dM %s | FileCheck --check-prefix=CHECK-V8-BAREHF-FP %s // CHECK-V8-BAREHF-FP-NOT: __ARM_NEON__ 1 +// CHECK-V8-BAREHP-FP: __ARM_FP 0xE // CHECK-V8-BAREHF-FP: __VFP_FP__ 1 // RUN: %clang -target armv8a -mfloat-abi=hard -mfpu=neon-fp-armv8 -x c -E -dM %s | FileCheck --check-prefix=CHECK-V8-BAREHF-NEON-FP %s // RUN: %clang -target armv8a -mfloat-abi=hard -mfpu=crypto-neon-fp-armv8 -x c -E -dM %s | FileCheck --check-prefix=CHECK-V8-BAREHF-NEON-FP %s +// CHECK-V8-BAREHP-NEON-FP: __ARM_FP 0xE // CHECK-V8-BAREHF-NEON-FP: __ARM_NEON__ 1 // CHECK-V8-BAREHF-NEON-FP: __VFP_FP__ 1 @@ -65,20 +81,32 @@ // RUN: %clang -target armv8a -x c -E -dM %s -o - | FileCheck --check-prefix=ARMV8A %s // ARMV8A:#define __ARM_ARCH_EXT_IDIV__ 1 +// ARMV8A: #define __ARM_FP 0xE // RUN: %clang -target armv8a -mthumb -x c -E -dM %s -o - | FileCheck --check-prefix=THUMBV8A %s // THUMBV8A:#define __ARM_ARCH_EXT_IDIV__ 1 +// THUMBV8A: #define __ARM_FP 0xE // RUN: %clang -target armv8a-eabi -x c -E -dM %s -o - | FileCheck --check-prefix=ARMV8A-EABI %s // ARMV8A-EABI:#define __ARM_ARCH_EXT_IDIV__ 1 +// ARMV8A-EABI: #define __ARM_FP 0xE // RUN: %clang -target armv8a-eabi -x c -E -dM %s -o - | FileCheck --check-prefix=THUMBV8A-EABI %s // THUMBV8A-EABI:#define __ARM_ARCH_EXT_IDIV__ 1 +// THUMBV8A-EABI: #define __ARM_FP 0xE // RUN: %clang -target arm-none-linux-gnu -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-DEFS %s +// CHECK-DEFS:#define __ARM_PCS 1 // CHECK-DEFS:#define __ARM_SIZEOF_MINIMAL_ENUM 4 // CHECK-DEFS:#define __ARM_SIZEOF_WCHAR_T 4 +// RUN: %clang -target arm-none-linux-gnu -fno-math-errno -fno-signed-zeros\ +// RUN: -fno-trapping-math -fassociative-math -freciprocal-math\ +// RUN: -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-FASTMATH %s +// RUN: %clang -target arm-none-linux-gnu -ffast-math -x c -E -dM %s -o -\ +// RUN: | FileCheck --check-prefix=CHECK-FASTMATH %s +// CHECK-FASTMATH: __ARM_FP_FAST 1 + // RUN: %clang -target arm-none-linux-gnu -fshort-wchar -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-SHORTWCHAR %s // CHECK-SHORTWCHAR:#define __ARM_SIZEOF_WCHAR_T 2 @@ -114,32 +142,38 @@ // Check that -mfpu works properly for Cortex-A7 (enabled by default). // RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A7 %s // RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A7 %s +// DEFAULTFPU-A7:#define __ARM_FP 0xE // DEFAULTFPU-A7:#define __ARM_NEON__ 1 // DEFAULTFPU-A7:#define __ARM_VFPV4__ 1 // RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a7 -mfpu=none -x c -E -dM %s -o - | FileCheck --check-prefix=FPUNONE-A7 %s // RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a7 -mfpu=none -x c -E -dM %s -o - | FileCheck --check-prefix=FPUNONE-A7 %s +// FPUNONE-A7-NOT:#define __ARM_FP 0x{{.*}} // FPUNONE-A7-NOT:#define __ARM_NEON__ 1 // FPUNONE-A7-NOT:#define __ARM_VFPV4__ 1 // RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a7 -mfpu=vfp4 -x c -E -dM %s -o - | FileCheck --check-prefix=NONEON-A7 %s // RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a7 -mfpu=vfp4 -x c -E -dM %s -o - | FileCheck --check-prefix=NONEON-A7 %s +// NONEON-A7:#define __ARM_FP 0xE // NONEON-A7-NOT:#define __ARM_NEON__ 1 // NONEON-A7:#define __ARM_VFPV4__ 1 // Check that -mfpu works properly for Cortex-A5 (enabled by default). // RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A5 %s // RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A5 %s +// DEFAULTFPU-A5:#define __ARM_FP 0xE // DEFAULTFPU-A5:#define __ARM_NEON__ 1 // DEFAULTFPU-A5:#define __ARM_VFPV4__ 1 // RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a5 -mfpu=none -x c -E -dM %s -o - | FileCheck --check-prefix=FPUNONE-A5 %s // RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a5 -mfpu=none -x c -E -dM %s -o - | FileCheck --check-prefix=FPUNONE-A5 %s +// FPUNONE-A5-NOT:#define __ARM_FP 0x{{.*}} // FPUNONE-A5-NOT:#define __ARM_NEON__ 1 // FPUNONE-A5-NOT:#define __ARM_VFPV4__ 1 // RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a5 -mfpu=vfp4-d16 -x c -E -dM %s -o - | FileCheck --check-prefix=NONEON-A5 %s // RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a5 -mfpu=vfp4-d16 -x c -E -dM %s -o - | FileCheck --check-prefix=NONEON-A5 %s +// NONEON-A5:#define __ARM_FP 0xE // NONEON-A5-NOT:#define __ARM_NEON__ 1 // NONEON-A5:#define __ARM_VFPV4__ 1 @@ -147,19 +181,23 @@ // 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 +// A4T-NOT:#define __ARM_FP 0x{{.*}} // 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 +// A5T-NOT:#define __ARM_FP 0x{{.*}} // 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 +// A5-ARM:#define __ARM_FP 0xE // 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 +// A5-THUMB:#define __ARM_FP 0xE // 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 @@ -169,43 +207,50 @@ // A5-NOT: #define __ARM_FEATURE_NUMERIC_MAXMIN // A5-NOT: #define __ARM_FEATURE_DIRECTED_ROUNDING // A5:#define __ARM_FEATURE_DSP +// A5:#define __ARM_FP 0xE // 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 -// RUN: %clang -target armv7 -mthumb -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck --check-prefix=A7 %s +// RUN: %clang -target armv7k -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck --check-prefix=A7 %s +// RUN: %clang -target armv7k -mthumb -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck --check-prefix=A7 %s // A7:#define __ARM_ARCH 7 -// A7:#define __ARM_ARCH_7A__ 1 // A7:#define __ARM_ARCH_EXT_IDIV__ 1 // A7:#define __ARM_ARCH_PROFILE 'A' // A7:#define __ARM_FEATURE_DSP +// A7:#define __ARM_FP 0xE // 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 +// A8-ARM:#define __ARM_FP 0xC // 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 +// A8-THUMB:#define __ARM_FP 0xC // 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 +// A9-ARM:#define __ARM_FP 0xE // 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 +// A9-THUMB:#define __ARM_FP 0xE // Check that -mfpu works properly for Cortex-A12 (enabled by default). // RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a12 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A12 %s // RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a12 -x c -E -dM %s -o - | FileCheck --check-prefix=DEFAULTFPU-A12 %s +// DEFAULTFPU-A12:#define __ARM_FP 0xE // DEFAULTFPU-A12:#define __ARM_NEON__ 1 // DEFAULTFPU-A12:#define __ARM_VFPV4__ 1 // RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a12 -mfpu=none -x c -E -dM %s -o - | FileCheck --check-prefix=FPUNONE-A12 %s // RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a12 -mfpu=none -x c -E -dM %s -o - | FileCheck --check-prefix=FPUNONE-A12 %s +// FPUNONE-A12-NOT:#define __ARM_FP 0x{{.*}} // FPUNONE-A12-NOT:#define __ARM_NEON__ 1 // FPUNONE-A12-NOT:#define __ARM_VFPV4__ 1 @@ -217,24 +262,29 @@ // A12:#define __ARM_ARCH_EXT_IDIV__ 1 // A12:#define __ARM_ARCH_PROFILE 'A' // A12:#define __ARM_FEATURE_DSP +// A12:#define __ARM_FP 0xE // 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 +// A15-ARM:#define __ARM_FP 0xE // 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 +// A15-THUMB:#define __ARM_FP 0xE // 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_FP 0xE // 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_FP 0x{{.*}} // FPUNONE-A17-NOT:#define __ARM_NEON__ 1 // FPUNONE-A17-NOT:#define __ARM_VFPV4__ 1 @@ -246,60 +296,73 @@ // A17:#define __ARM_ARCH_EXT_IDIV__ 1 // A17:#define __ARM_ARCH_PROFILE 'A' // A17:#define __ARM_FEATURE_DSP +// A17:#define __ARM_FP 0xE // 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 +// SWIFT-ARM:#define __ARM_FEATURE_DSP +// SWIFT-ARM:#define __ARM_FP 0xE // 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 +// SWIFT-THUMB:#define __ARM_FP 0xE // 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 +// A53-ARM:#define __ARM_FP 0xE // 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 +// A53-THUMB:#define __ARM_FP 0xE // Test whether predefines are as expected when targeting cortex-r4. // RUN: %clang -target armv7 -mcpu=cortex-r4 -x c -E -dM %s -o - | FileCheck --check-prefix=R4-ARM %s // R4-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__ // R4-ARM:#define __ARM_FEATURE_DSP +// R4-ARM-NOT:#define __ARM_FP 0x{{.*}} // RUN: %clang -target armv7 -mthumb -mcpu=cortex-r4 -x c -E -dM %s -o - | FileCheck --check-prefix=R4-THUMB %s // R4-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1 // R4-THUMB:#define __ARM_FEATURE_DSP +// R4-THUMB-NOT:#define __ARM_FP 0x{{.*}} // Test whether predefines are as expected when targeting cortex-r4f. // RUN: %clang -target armv7 -mcpu=cortex-r4f -x c -E -dM %s -o - | FileCheck --check-prefix=R4F-ARM %s // R4F-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__ // R4F-ARM:#define __ARM_FEATURE_DSP +// R4F-ARM:#define __ARM_FP 0xC // RUN: %clang -target armv7 -mthumb -mcpu=cortex-r4f -x c -E -dM %s -o - | FileCheck --check-prefix=R4F-THUMB %s // R4F-THUMBT:#define __ARM_ARCH_EXT_IDIV__ 1 // R4F-THUMB:#define __ARM_FEATURE_DSP +// R4F-THUMB:#define __ARM_FP 0xC // 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 +// R5-ARM:#define __ARM_FP 0xC // 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 +// R5-THUMB:#define __ARM_FP 0xC // Test whether predefines are as expected when targeting cortex-r7. // RUN: %clang -target armv7 -mcpu=cortex-r7 -x c -E -dM %s -o - | FileCheck --check-prefix=R7-ARM %s // R7-ARM:#define __ARM_ARCH_EXT_IDIV__ 1 // R7-ARM:#define __ARM_FEATURE_DSP +// R7-ARM:#define __ARM_FP 0xE // RUN: %clang -target armv7 -mthumb -mcpu=cortex-r7 -x c -E -dM %s -o - | FileCheck --check-prefix=R7-THUMB %s // R7-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1 // R7-THUMB:#define __ARM_FEATURE_DSP +// R7-THUMB:#define __ARM_FP 0xE // 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 @@ -308,22 +371,26 @@ // RUN: %clang -target armv7 -mthumb -mcpu=sc000 -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 +// M0-THUMB-NOT:#define __ARM_FP 0x{{.*}} // 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 // RUN: %clang -target armv7 -mthumb -mcpu=sc300 -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 +// M3-THUMB-NOT:#define __ARM_FP 0x{{.*}} // 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 +// M4-THUMB:#define __ARM_FP 0x6 // 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 +// M7-THUMB:#define __ARM_FP 0xE // 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 @@ -340,3 +407,5 @@ // CHECK-V81A: __ARM_ARCH 8 // CHECK-V81A: __ARM_ARCH_8_1A__ 1 // CHECK-V81A: #define __ARM_ARCH_PROFILE 'A' +// CHECK-V81A: __ARM_FEATURE_QRDMX 1 +// CHECK-V81A: #define __ARM_FP 0xE diff --git a/test/Preprocessor/elfiamcu-predefines.c b/test/Preprocessor/elfiamcu-predefines.c new file mode 100644 index 000000000000..af5e40e3c8ab --- /dev/null +++ b/test/Preprocessor/elfiamcu-predefines.c @@ -0,0 +1,5 @@ +// RUN: %clang_cc1 -E -dM -triple i586-intel-elfiamcu | FileCheck %s + +// CHECK: #define __iamcu +// CHECK: #define __iamcu__ + diff --git a/test/Preprocessor/init-v7k-compat.c b/test/Preprocessor/init-v7k-compat.c new file mode 100644 index 000000000000..3a1074753f18 --- /dev/null +++ b/test/Preprocessor/init-v7k-compat.c @@ -0,0 +1,184 @@ +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=thumbv7k-apple-watchos2.0 < /dev/null | FileCheck %s + +// Check that the chosen types for things like size_t, ptrdiff_t etc are as +// expected + +// CHECK-NOT: #define _LP64 1 +// CHECK-NOT: #define __AARCH_BIG_ENDIAN 1 +// CHECK-NOT: #define __ARM_BIG_ENDIAN 1 +// CHECK: #define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__ +// CHECK: #define __CHAR16_TYPE__ unsigned short +// CHECK: #define __CHAR32_TYPE__ unsigned int +// CHECK: #define __CHAR_BIT__ 8 +// CHECK: #define __DBL_DENORM_MIN__ 4.9406564584124654e-324 +// CHECK: #define __DBL_DIG__ 15 +// CHECK: #define __DBL_EPSILON__ 2.2204460492503131e-16 +// CHECK: #define __DBL_HAS_DENORM__ 1 +// CHECK: #define __DBL_HAS_INFINITY__ 1 +// CHECK: #define __DBL_HAS_QUIET_NAN__ 1 +// CHECK: #define __DBL_MANT_DIG__ 53 +// CHECK: #define __DBL_MAX_10_EXP__ 308 +// CHECK: #define __DBL_MAX_EXP__ 1024 +// CHECK: #define __DBL_MAX__ 1.7976931348623157e+308 +// CHECK: #define __DBL_MIN_10_EXP__ (-307) +// CHECK: #define __DBL_MIN_EXP__ (-1021) +// CHECK: #define __DBL_MIN__ 2.2250738585072014e-308 +// CHECK: #define __DECIMAL_DIG__ __LDBL_DECIMAL_DIG__ +// CHECK: #define __FLT_DENORM_MIN__ 1.40129846e-45F +// CHECK: #define __FLT_DIG__ 6 +// CHECK: #define __FLT_EPSILON__ 1.19209290e-7F +// CHECK: #define __FLT_EVAL_METHOD__ 0 +// CHECK: #define __FLT_HAS_DENORM__ 1 +// CHECK: #define __FLT_HAS_INFINITY__ 1 +// CHECK: #define __FLT_HAS_QUIET_NAN__ 1 +// CHECK: #define __FLT_MANT_DIG__ 24 +// CHECK: #define __FLT_MAX_10_EXP__ 38 +// CHECK: #define __FLT_MAX_EXP__ 128 +// CHECK: #define __FLT_MAX__ 3.40282347e+38F +// CHECK: #define __FLT_MIN_10_EXP__ (-37) +// CHECK: #define __FLT_MIN_EXP__ (-125) +// CHECK: #define __FLT_MIN__ 1.17549435e-38F +// CHECK: #define __FLT_RADIX__ 2 +// CHECK: #define __INT16_C_SUFFIX__ {{$}} +// CHECK: #define __INT16_FMTd__ "hd" +// CHECK: #define __INT16_FMTi__ "hi" +// CHECK: #define __INT16_MAX__ 32767 +// CHECK: #define __INT16_TYPE__ short +// CHECK: #define __INT32_C_SUFFIX__ {{$}} +// CHECK: #define __INT32_FMTd__ "d" +// CHECK: #define __INT32_FMTi__ "i" +// CHECK: #define __INT32_MAX__ 2147483647 +// CHECK: #define __INT32_TYPE__ int +// CHECK: #define __INT64_C_SUFFIX__ LL +// CHECK: #define __INT64_FMTd__ "lld" +// CHECK: #define __INT64_FMTi__ "lli" +// CHECK: #define __INT64_MAX__ 9223372036854775807LL +// CHECK: #define __INT64_TYPE__ long long int +// CHECK: #define __INT8_C_SUFFIX__ {{$}} +// CHECK: #define __INT8_FMTd__ "hhd" +// CHECK: #define __INT8_FMTi__ "hhi" +// CHECK: #define __INT8_MAX__ 127 +// CHECK: #define __INT8_TYPE__ signed char +// CHECK: #define __INTMAX_C_SUFFIX__ LL +// CHECK: #define __INTMAX_FMTd__ "lld" +// CHECK: #define __INTMAX_FMTi__ "lli" +// CHECK: #define __INTMAX_MAX__ 9223372036854775807LL +// CHECK: #define __INTMAX_TYPE__ long long int +// CHECK: #define __INTMAX_WIDTH__ 64 +// CHECK: #define __INTPTR_FMTd__ "ld" +// CHECK: #define __INTPTR_FMTi__ "li" +// CHECK: #define __INTPTR_MAX__ 2147483647L +// CHECK: #define __INTPTR_TYPE__ long int +// CHECK: #define __INTPTR_WIDTH__ 32 +// CHECK: #define __INT_FAST16_FMTd__ "hd" +// CHECK: #define __INT_FAST16_FMTi__ "hi" +// CHECK: #define __INT_FAST16_MAX__ 32767 +// CHECK: #define __INT_FAST16_TYPE__ short +// CHECK: #define __INT_FAST32_FMTd__ "d" +// CHECK: #define __INT_FAST32_FMTi__ "i" +// CHECK: #define __INT_FAST32_MAX__ 2147483647 +// CHECK: #define __INT_FAST32_TYPE__ int +// CHECK: #define __INT_FAST64_FMTd__ "lld" +// CHECK: #define __INT_FAST64_FMTi__ "lli" +// CHECK: #define __INT_FAST64_MAX__ 9223372036854775807LL +// CHECK: #define __INT_FAST64_TYPE__ long long int +// CHECK: #define __INT_FAST8_FMTd__ "hhd" +// CHECK: #define __INT_FAST8_FMTi__ "hhi" +// CHECK: #define __INT_FAST8_MAX__ 127 +// CHECK: #define __INT_FAST8_TYPE__ signed char +// CHECK: #define __INT_LEAST16_FMTd__ "hd" +// CHECK: #define __INT_LEAST16_FMTi__ "hi" +// CHECK: #define __INT_LEAST16_MAX__ 32767 +// CHECK: #define __INT_LEAST16_TYPE__ short +// CHECK: #define __INT_LEAST32_FMTd__ "d" +// CHECK: #define __INT_LEAST32_FMTi__ "i" +// CHECK: #define __INT_LEAST32_MAX__ 2147483647 +// CHECK: #define __INT_LEAST32_TYPE__ int +// CHECK: #define __INT_LEAST64_FMTd__ "lld" +// CHECK: #define __INT_LEAST64_FMTi__ "lli" +// CHECK: #define __INT_LEAST64_MAX__ 9223372036854775807LL +// CHECK: #define __INT_LEAST64_TYPE__ long long int +// CHECK: #define __INT_LEAST8_FMTd__ "hhd" +// CHECK: #define __INT_LEAST8_FMTi__ "hhi" +// CHECK: #define __INT_LEAST8_MAX__ 127 +// CHECK: #define __INT_LEAST8_TYPE__ signed char +// CHECK: #define __INT_MAX__ 2147483647 +// CHECK: #define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L +// CHECK: #define __LDBL_DIG__ 15 +// CHECK: #define __LDBL_EPSILON__ 2.2204460492503131e-16L +// CHECK: #define __LDBL_HAS_DENORM__ 1 +// CHECK: #define __LDBL_HAS_INFINITY__ 1 +// CHECK: #define __LDBL_HAS_QUIET_NAN__ 1 +// CHECK: #define __LDBL_MANT_DIG__ 53 +// CHECK: #define __LDBL_MAX_10_EXP__ 308 +// CHECK: #define __LDBL_MAX_EXP__ 1024 +// CHECK: #define __LDBL_MAX__ 1.7976931348623157e+308L +// CHECK: #define __LDBL_MIN_10_EXP__ (-307) +// CHECK: #define __LDBL_MIN_EXP__ (-1021) +// CHECK: #define __LDBL_MIN__ 2.2250738585072014e-308L +// CHECK: #define __LONG_LONG_MAX__ 9223372036854775807LL +// CHECK: #define __LONG_MAX__ 2147483647L +// CHECK: #define __POINTER_WIDTH__ 32 +// CHECK: #define __PTRDIFF_TYPE__ long int +// CHECK: #define __PTRDIFF_WIDTH__ 32 +// CHECK: #define __SCHAR_MAX__ 127 +// CHECK: #define __SHRT_MAX__ 32767 +// CHECK: #define __SIG_ATOMIC_MAX__ 2147483647 +// CHECK: #define __SIG_ATOMIC_WIDTH__ 32 +// CHECK: #define __SIZEOF_DOUBLE__ 8 +// CHECK: #define __SIZEOF_FLOAT__ 4 +// CHECK: #define __SIZEOF_INT__ 4 +// CHECK: #define __SIZEOF_LONG_DOUBLE__ 8 +// CHECK: #define __SIZEOF_LONG_LONG__ 8 +// CHECK: #define __SIZEOF_LONG__ 4 +// CHECK: #define __SIZEOF_POINTER__ 4 +// CHECK: #define __SIZEOF_PTRDIFF_T__ 4 +// CHECK: #define __SIZEOF_SHORT__ 2 +// CHECK: #define __SIZEOF_SIZE_T__ 4 +// CHECK: #define __SIZEOF_WCHAR_T__ 4 +// CHECK: #define __SIZEOF_WINT_T__ 4 +// CHECK: #define __SIZE_MAX__ 4294967295UL +// CHECK: #define __SIZE_TYPE__ long unsigned int +// CHECK: #define __SIZE_WIDTH__ 32 +// CHECK: #define __UINT16_C_SUFFIX__ {{$}} +// CHECK: #define __UINT16_MAX__ 65535 +// CHECK: #define __UINT16_TYPE__ unsigned short +// CHECK: #define __UINT32_C_SUFFIX__ U +// CHECK: #define __UINT32_MAX__ 4294967295U +// CHECK: #define __UINT32_TYPE__ unsigned int +// CHECK: #define __UINT64_C_SUFFIX__ ULL +// CHECK: #define __UINT64_MAX__ 18446744073709551615ULL +// CHECK: #define __UINT64_TYPE__ long long unsigned int +// CHECK: #define __UINT8_C_SUFFIX__ {{$}} +// CHECK: #define __UINT8_MAX__ 255 +// CHECK: #define __UINT8_TYPE__ unsigned char +// CHECK: #define __UINTMAX_C_SUFFIX__ ULL +// CHECK: #define __UINTMAX_MAX__ 18446744073709551615ULL +// CHECK: #define __UINTMAX_TYPE__ long long unsigned int +// CHECK: #define __UINTMAX_WIDTH__ 64 +// CHECK: #define __UINTPTR_MAX__ 4294967295UL +// CHECK: #define __UINTPTR_TYPE__ long unsigned int +// CHECK: #define __UINTPTR_WIDTH__ 32 +// CHECK: #define __UINT_FAST16_MAX__ 65535 +// CHECK: #define __UINT_FAST16_TYPE__ unsigned short +// CHECK: #define __UINT_FAST32_MAX__ 4294967295U +// CHECK: #define __UINT_FAST32_TYPE__ unsigned int +// CHECK: #define __UINT_FAST64_MAX__ 18446744073709551615UL +// CHECK: #define __UINT_FAST64_TYPE__ long long unsigned int +// CHECK: #define __UINT_FAST8_MAX__ 255 +// CHECK: #define __UINT_FAST8_TYPE__ unsigned char +// CHECK: #define __UINT_LEAST16_MAX__ 65535 +// CHECK: #define __UINT_LEAST16_TYPE__ unsigned short +// CHECK: #define __UINT_LEAST32_MAX__ 4294967295U +// CHECK: #define __UINT_LEAST32_TYPE__ unsigned int +// CHECK: #define __UINT_LEAST64_MAX__ 18446744073709551615UL +// CHECK: #define __UINT_LEAST64_TYPE__ long long unsigned int +// CHECK: #define __UINT_LEAST8_MAX__ 255 +// CHECK: #define __UINT_LEAST8_TYPE__ unsigned char +// CHECK: #define __USER_LABEL_PREFIX__ _ +// CHECK: #define __WCHAR_MAX__ 2147483647 +// CHECK: #define __WCHAR_TYPE__ int +// CHECK-NOT: #define __WCHAR_UNSIGNED__ 1 +// CHECK: #define __WCHAR_WIDTH__ 32 +// CHECK: #define __WINT_TYPE__ int +// CHECK: #define __WINT_WIDTH__ 32 diff --git a/test/Preprocessor/init.c b/test/Preprocessor/init.c index e80d57b82cd8..099e58561699 100644 --- a/test/Preprocessor/init.c +++ b/test/Preprocessor/init.c @@ -1,8 +1,8 @@ -/PtrDiffType / RUN: %clang_cc1 -E -dM -x assembler-with-cpp < /dev/null | FileCheck -check-prefix ASM %s +// RUN: %clang_cc1 -E -dM -x assembler-with-cpp < /dev/null | FileCheck -check-prefix ASM %s // // ASM:#define __ASSEMBLER__ 1 // -// +// // RUN: %clang_cc1 -fblocks -E -dM < /dev/null | FileCheck -check-prefix BLOCKS %s // // BLOCKS:#define __BLOCKS__ 1 @@ -144,12 +144,14 @@ // // MSEXT-CXX:#define _NATIVE_WCHAR_T_DEFINED 1 // MSEXT-CXX:#define _WCHAR_T_DEFINED 1 +// MSEXT-CXX:#define __BOOL_DEFINED 1 // // // RUN: %clang_cc1 -x c++ -fno-wchar -fms-extensions -triple i686-pc-win32 -E -dM < /dev/null | FileCheck -check-prefix MSEXT-CXX-NOWCHAR %s // // MSEXT-CXX-NOWCHAR-NOT:#define _NATIVE_WCHAR_T_DEFINED 1 // MSEXT-CXX-NOWCHAR-NOT:#define _WCHAR_T_DEFINED 1 +// MSEXT-CXX-NOWCHAR:#define __BOOL_DEFINED 1 // // // RUN: %clang_cc1 -x objective-c -E -dM < /dev/null | FileCheck -check-prefix OBJC %s @@ -1196,7 +1198,7 @@ // ARM:#define __APCS_32__ 1 // ARM-NOT:#define __ARMEB__ 1 // ARM:#define __ARMEL__ 1 -// ARM:#define __ARM_ARCH_6J__ 1 +// ARM:#define __ARM_ARCH_4T__ 1 // ARM-NOT:#define __ARM_BIG_ENDIAN 1 // ARM:#define __BIGGEST_ALIGNMENT__ 8 // ARM:#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__ @@ -1336,7 +1338,6 @@ // ARM:#define __SIZE_MAX__ 4294967295U // ARM:#define __SIZE_TYPE__ unsigned int // ARM:#define __SIZE_WIDTH__ 32 -// ARM:#define __THUMB_INTERWORK__ 1 // ARM:#define __UINT16_C_SUFFIX__ {{$}} // ARM:#define __UINT16_MAX__ 65535 // ARM:#define __UINT16_TYPE__ unsigned short @@ -1387,7 +1388,7 @@ // ARM-BE:#define __APCS_32__ 1 // ARM-BE:#define __ARMEB__ 1 // ARM-BE-NOT:#define __ARMEL__ 1 -// ARM-BE:#define __ARM_ARCH_6J__ 1 +// ARM-BE:#define __ARM_ARCH_4T__ 1 // ARM-BE:#define __ARM_BIG_ENDIAN 1 // ARM-BE:#define __BIGGEST_ALIGNMENT__ 8 // ARM-BE:#define __BIG_ENDIAN__ 1 @@ -1527,7 +1528,6 @@ // ARM-BE:#define __SIZE_MAX__ 4294967295U // ARM-BE:#define __SIZE_TYPE__ unsigned int // ARM-BE:#define __SIZE_WIDTH__ 32 -// ARM-BE:#define __THUMB_INTERWORK__ 1 // ARM-BE:#define __UINT16_C_SUFFIX__ {{$}} // ARM-BE:#define __UINT16_MAX__ 65535 // ARM-BE:#define __UINT16_TYPE__ unsigned short @@ -1578,8 +1578,8 @@ // ARMEABISOFTFP:#define __APCS_32__ 1 // ARMEABISOFTFP-NOT:#define __ARMEB__ 1 // ARMEABISOFTFP:#define __ARMEL__ 1 -// ARMEABISOFTFP:#define __ARM_ARCH 6 -// ARMEABISOFTFP:#define __ARM_ARCH_6J__ 1 +// ARMEABISOFTFP:#define __ARM_ARCH 4 +// ARMEABISOFTFP:#define __ARM_ARCH_4T__ 1 // ARMEABISOFTFP-NOT:#define __ARM_BIG_ENDIAN 1 // ARMEABISOFTFP:#define __ARM_EABI__ 1 // ARMEABISOFTFP:#define __ARM_PCS 1 @@ -1723,7 +1723,6 @@ // ARMEABISOFTFP:#define __SIZE_TYPE__ unsigned int // ARMEABISOFTFP:#define __SIZE_WIDTH__ 32 // ARMEABISOFTFP:#define __SOFTFP__ 1 -// ARMEABISOFTFP:#define __THUMB_INTERWORK__ 1 // ARMEABISOFTFP:#define __UINT16_C_SUFFIX__ {{$}} // ARMEABISOFTFP:#define __UINT16_MAX__ 65535 // ARMEABISOFTFP:#define __UINT16_TYPE__ unsigned short @@ -1774,8 +1773,8 @@ // ARMEABIHARDFP:#define __APCS_32__ 1 // ARMEABIHARDFP-NOT:#define __ARMEB__ 1 // ARMEABIHARDFP:#define __ARMEL__ 1 -// ARMEABIHARDFP:#define __ARM_ARCH 6 -// ARMEABIHARDFP:#define __ARM_ARCH_6J__ 1 +// ARMEABIHARDFP:#define __ARM_ARCH 4 +// ARMEABIHARDFP:#define __ARM_ARCH_4T__ 1 // ARMEABIHARDFP-NOT:#define __ARM_BIG_ENDIAN 1 // ARMEABIHARDFP:#define __ARM_EABI__ 1 // ARMEABIHARDFP:#define __ARM_PCS 1 @@ -1919,7 +1918,6 @@ // ARMEABIHARDFP:#define __SIZE_TYPE__ unsigned int // ARMEABIHARDFP:#define __SIZE_WIDTH__ 32 // ARMEABIHARDFP-NOT:#define __SOFTFP__ 1 -// ARMEABIHARDFP:#define __THUMB_INTERWORK__ 1 // ARMEABIHARDFP:#define __UINT16_C_SUFFIX__ {{$}} // ARMEABIHARDFP:#define __UINT16_MAX__ 65535 // ARMEABIHARDFP:#define __UINT16_TYPE__ unsigned short @@ -1970,7 +1968,7 @@ // ARM-NETBSD:#define __APCS_32__ 1 // ARM-NETBSD-NOT:#define __ARMEB__ 1 // ARM-NETBSD:#define __ARMEL__ 1 -// ARM-NETBSD:#define __ARM_ARCH_6J__ 1 +// ARM-NETBSD:#define __ARM_ARCH_4T__ 1 // ARM-NETBSD:#define __ARM_DWARF_EH__ 1 // ARM-NETBSD:#define __ARM_EABI__ 1 // ARM-NETBSD-NOT:#define __ARM_BIG_ENDIAN 1 @@ -2112,7 +2110,6 @@ // ARM-NETBSD:#define __SIZE_MAX__ 4294967295U // ARM-NETBSD:#define __SIZE_TYPE__ long unsigned int // ARM-NETBSD:#define __SIZE_WIDTH__ 32 -// ARM-NETBSD:#define __THUMB_INTERWORK__ 1 // ARM-NETBSD:#define __UINT16_C_SUFFIX__ {{$}} // ARM-NETBSD:#define __UINT16_MAX__ 65535 // ARM-NETBSD:#define __UINT16_TYPE__ unsigned short @@ -4735,10 +4732,10 @@ // NVPTX32:#define __INT_FAST32_FMTi__ "i" // NVPTX32:#define __INT_FAST32_MAX__ 2147483647 // NVPTX32:#define __INT_FAST32_TYPE__ int -// NVPTX32:#define __INT_FAST64_FMTd__ "ld" -// NVPTX32:#define __INT_FAST64_FMTi__ "li" +// NVPTX32:#define __INT_FAST64_FMTd__ "lld" +// NVPTX32:#define __INT_FAST64_FMTi__ "lli" // NVPTX32:#define __INT_FAST64_MAX__ 9223372036854775807L -// NVPTX32:#define __INT_FAST64_TYPE__ long int +// NVPTX32:#define __INT_FAST64_TYPE__ long long int // NVPTX32:#define __INT_FAST8_FMTd__ "hhd" // NVPTX32:#define __INT_FAST8_FMTi__ "hhi" // NVPTX32:#define __INT_FAST8_MAX__ 127 @@ -4751,10 +4748,10 @@ // NVPTX32:#define __INT_LEAST32_FMTi__ "i" // NVPTX32:#define __INT_LEAST32_MAX__ 2147483647 // NVPTX32:#define __INT_LEAST32_TYPE__ int -// NVPTX32:#define __INT_LEAST64_FMTd__ "ld" -// NVPTX32:#define __INT_LEAST64_FMTi__ "li" +// NVPTX32:#define __INT_LEAST64_FMTd__ "lld" +// NVPTX32:#define __INT_LEAST64_FMTi__ "lli" // NVPTX32:#define __INT_LEAST64_MAX__ 9223372036854775807L -// NVPTX32:#define __INT_LEAST64_TYPE__ long int +// NVPTX32:#define __INT_LEAST64_TYPE__ long long int // NVPTX32:#define __INT_LEAST8_FMTd__ "hhd" // NVPTX32:#define __INT_LEAST8_FMTi__ "hhi" // NVPTX32:#define __INT_LEAST8_MAX__ 127 @@ -4775,7 +4772,7 @@ // NVPTX32:#define __LDBL_MIN__ 2.2250738585072014e-308L // NVPTX32:#define __LITTLE_ENDIAN__ 1 // NVPTX32:#define __LONG_LONG_MAX__ 9223372036854775807LL -// NVPTX32:#define __LONG_MAX__ 9223372036854775807L +// NVPTX32:#define __LONG_MAX__ 2147483647L // NVPTX32-NOT:#define __LP64__ // NVPTX32:#define __NVPTX__ 1 // NVPTX32:#define __POINTER_WIDTH__ 32 @@ -4792,7 +4789,7 @@ // NVPTX32:#define __SIZEOF_INT__ 4 // NVPTX32:#define __SIZEOF_LONG_DOUBLE__ 8 // NVPTX32:#define __SIZEOF_LONG_LONG__ 8 -// NVPTX32:#define __SIZEOF_LONG__ 8 +// NVPTX32:#define __SIZEOF_LONG__ 4 // NVPTX32:#define __SIZEOF_POINTER__ 4 // NVPTX32:#define __SIZEOF_PTRDIFF_T__ 4 // NVPTX32:#define __SIZEOF_SHORT__ 2 @@ -4826,7 +4823,7 @@ // NVPTX32:#define __UINT_FAST32_MAX__ 4294967295U // NVPTX32:#define __UINT_FAST32_TYPE__ unsigned int // NVPTX32:#define __UINT_FAST64_MAX__ 18446744073709551615UL -// NVPTX32:#define __UINT_FAST64_TYPE__ long unsigned int +// NVPTX32:#define __UINT_FAST64_TYPE__ long long unsigned int // NVPTX32:#define __UINT_FAST8_MAX__ 255 // NVPTX32:#define __UINT_FAST8_TYPE__ unsigned char // NVPTX32:#define __UINT_LEAST16_MAX__ 65535 @@ -4834,7 +4831,7 @@ // NVPTX32:#define __UINT_LEAST32_MAX__ 4294967295U // NVPTX32:#define __UINT_LEAST32_TYPE__ unsigned int // NVPTX32:#define __UINT_LEAST64_MAX__ 18446744073709551615UL -// NVPTX32:#define __UINT_LEAST64_TYPE__ long unsigned int +// NVPTX32:#define __UINT_LEAST64_TYPE__ long long unsigned int // NVPTX32:#define __UINT_LEAST8_MAX__ 255 // NVPTX32:#define __UINT_LEAST8_TYPE__ unsigned char // NVPTX32:#define __USER_LABEL_PREFIX__ _ @@ -6603,8 +6600,15 @@ // PPC-DARWIN:#define __powerpc__ 1 // PPC-DARWIN:#define __ppc__ 1 // -// RUN: %clang_cc1 -x cl -E -dM -ffreestanding -triple=amdgcn < /dev/null | FileCheck -check-prefix AMDGCN %s +// RUN: %clang_cc1 -x cl -E -dM -ffreestanding -triple=amdgcn < /dev/null | FileCheck -check-prefix AMDGCN --check-prefix AMDGPU %s +// RUN: %clang_cc1 -x cl -E -dM -ffreestanding -triple=r600 -target-cpu caicos < /dev/null | FileCheck --check-prefix AMDGPU %s +// +// AMDGPU:#define cl_khr_byte_addressable_store 1 // AMDGCN:#define cl_khr_fp64 1 +// AMDGPU:#define cl_khr_global_int32_base_atomics 1 +// AMDGPU:#define cl_khr_global_int32_extended_atomics 1 +// AMDGPU:#define cl_khr_local_int32_base_atomics 1 +// AMDGPU:#define cl_khr_local_int32_extended_atomics 1 // RUN: %clang_cc1 -E -dM -ffreestanding -triple=s390x-none-none -fno-signed-char < /dev/null | FileCheck -check-prefix S390X %s // @@ -6975,14 +6979,15 @@ // SPARC:#define __sparcv8 1 // SPARC:#define sparc 1 // -// RUN: %clang_cc1 -E -dM -ffreestanding -triple=sparc-none-netbsd < /dev/null | FileCheck -check-prefix SPARC-NETBSD %s -// SPARC-NETBSD:#define __INTPTR_FMTd__ "ld" -// SPARC-NETBSD:#define __INTPTR_FMTi__ "li" -// SPARC-NETBSD:#define __INTPTR_MAX__ 2147483647L -// SPARC-NETBSD:#define __INTPTR_TYPE__ long int -// SPARC-NETBSD:#define __PTRDIFF_TYPE__ long int -// SPARC-NETBSD:#define __SIZE_TYPE__ long unsigned int -// SPARC-NETBSD:#define __UINTPTR_TYPE__ long unsigned int +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=sparc-none-netbsd < /dev/null | FileCheck -check-prefix SPARC-NETOPENBSD %s +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=sparc-none-openbsd < /dev/null | FileCheck -check-prefix SPARC-NETOPENBSD %s +// SPARC-NETOPENBSD:#define __INTPTR_FMTd__ "ld" +// SPARC-NETOPENBSD:#define __INTPTR_FMTi__ "li" +// SPARC-NETOPENBSD:#define __INTPTR_MAX__ 2147483647L +// SPARC-NETOPENBSD:#define __INTPTR_TYPE__ long int +// SPARC-NETOPENBSD:#define __PTRDIFF_TYPE__ long int +// SPARC-NETOPENBSD:#define __SIZE_TYPE__ long unsigned int +// SPARC-NETOPENBSD:#define __UINTPTR_TYPE__ long unsigned int // RUN: %clang_cc1 -E -dM -ffreestanding -triple=tce-none-none < /dev/null | FileCheck -check-prefix TCE %s // @@ -8409,3 +8414,635 @@ // XCORE:#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__ // XCORE:#define __LITTLE_ENDIAN__ 1 // XCORE:#define __XS1B__ 1 +// +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=wasm32-unknown-unknown \ +// RUN: < /dev/null \ +// RUN: | FileCheck -check-prefix=WEBASSEMBLY32 %s +// +// WEBASSEMBLY32:#define _ILP32 1{{$}} +// WEBASSEMBLY32-NOT:#define _LP64 +// WEBASSEMBLY32-NEXT:#define __ATOMIC_ACQUIRE 2{{$}} +// WEBASSEMBLY32-NEXT:#define __ATOMIC_ACQ_REL 4{{$}} +// WEBASSEMBLY32-NEXT:#define __ATOMIC_CONSUME 1{{$}} +// WEBASSEMBLY32-NEXT:#define __ATOMIC_RELAXED 0{{$}} +// WEBASSEMBLY32-NEXT:#define __ATOMIC_RELEASE 3{{$}} +// WEBASSEMBLY32-NEXT:#define __ATOMIC_SEQ_CST 5{{$}} +// WEBASSEMBLY32-NEXT:#define __BIGGEST_ALIGNMENT__ 16{{$}} +// WEBASSEMBLY32-NEXT:#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__{{$}} +// WEBASSEMBLY32-NEXT:#define __CHAR16_TYPE__ unsigned short{{$}} +// WEBASSEMBLY32-NEXT:#define __CHAR32_TYPE__ unsigned int{{$}} +// WEBASSEMBLY32-NEXT:#define __CHAR_BIT__ 8{{$}} +// WEBASSEMBLY32-NOT:#define __CHAR_UNSIGNED__ +// WEBASSEMBLY32-NEXT:#define __CONSTANT_CFSTRINGS__ 1{{$}} +// WEBASSEMBLY32-NEXT:#define __DBL_DECIMAL_DIG__ 17{{$}} +// WEBASSEMBLY32-NEXT:#define __DBL_DENORM_MIN__ 4.9406564584124654e-324{{$}} +// WEBASSEMBLY32-NEXT:#define __DBL_DIG__ 15{{$}} +// WEBASSEMBLY32-NEXT:#define __DBL_EPSILON__ 2.2204460492503131e-16{{$}} +// WEBASSEMBLY32-NEXT:#define __DBL_HAS_DENORM__ 1{{$}} +// WEBASSEMBLY32-NEXT:#define __DBL_HAS_INFINITY__ 1{{$}} +// WEBASSEMBLY32-NEXT:#define __DBL_HAS_QUIET_NAN__ 1{{$}} +// WEBASSEMBLY32-NEXT:#define __DBL_MANT_DIG__ 53{{$}} +// WEBASSEMBLY32-NEXT:#define __DBL_MAX_10_EXP__ 308{{$}} +// WEBASSEMBLY32-NEXT:#define __DBL_MAX_EXP__ 1024{{$}} +// WEBASSEMBLY32-NEXT:#define __DBL_MAX__ 1.7976931348623157e+308{{$}} +// WEBASSEMBLY32-NEXT:#define __DBL_MIN_10_EXP__ (-307){{$}} +// WEBASSEMBLY32-NEXT:#define __DBL_MIN_EXP__ (-1021){{$}} +// WEBASSEMBLY32-NEXT:#define __DBL_MIN__ 2.2250738585072014e-308{{$}} +// 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-NEXT:#define __FLT_DENORM_MIN__ 1.40129846e-45F{{$}} +// WEBASSEMBLY32-NEXT:#define __FLT_DIG__ 6{{$}} +// WEBASSEMBLY32-NEXT:#define __FLT_EPSILON__ 1.19209290e-7F{{$}} +// WEBASSEMBLY32-NEXT:#define __FLT_EVAL_METHOD__ 0{{$}} +// WEBASSEMBLY32-NEXT:#define __FLT_HAS_DENORM__ 1{{$}} +// WEBASSEMBLY32-NEXT:#define __FLT_HAS_INFINITY__ 1{{$}} +// WEBASSEMBLY32-NEXT:#define __FLT_HAS_QUIET_NAN__ 1{{$}} +// WEBASSEMBLY32-NEXT:#define __FLT_MANT_DIG__ 24{{$}} +// WEBASSEMBLY32-NEXT:#define __FLT_MAX_10_EXP__ 38{{$}} +// WEBASSEMBLY32-NEXT:#define __FLT_MAX_EXP__ 128{{$}} +// WEBASSEMBLY32-NEXT:#define __FLT_MAX__ 3.40282347e+38F{{$}} +// WEBASSEMBLY32-NEXT:#define __FLT_MIN_10_EXP__ (-37){{$}} +// WEBASSEMBLY32-NEXT:#define __FLT_MIN_EXP__ (-125){{$}} +// WEBASSEMBLY32-NEXT:#define __FLT_MIN__ 1.17549435e-38F{{$}} +// WEBASSEMBLY32-NEXT:#define __FLT_RADIX__ 2{{$}} +// WEBASSEMBLY32-NEXT:#define __GCC_ATOMIC_BOOL_LOCK_FREE 2{{$}} +// WEBASSEMBLY32-NEXT:#define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2{{$}} +// WEBASSEMBLY32-NEXT:#define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2{{$}} +// WEBASSEMBLY32-NEXT:#define __GCC_ATOMIC_CHAR_LOCK_FREE 2{{$}} +// WEBASSEMBLY32-NEXT:#define __GCC_ATOMIC_INT_LOCK_FREE 2{{$}} +// WEBASSEMBLY32-NEXT:#define __GCC_ATOMIC_LLONG_LOCK_FREE 1{{$}} +// WEBASSEMBLY32-NEXT:#define __GCC_ATOMIC_LONG_LOCK_FREE 2{{$}} +// WEBASSEMBLY32-NEXT:#define __GCC_ATOMIC_POINTER_LOCK_FREE 2{{$}} +// WEBASSEMBLY32-NEXT:#define __GCC_ATOMIC_SHORT_LOCK_FREE 2{{$}} +// WEBASSEMBLY32-NEXT:#define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1{{$}} +// WEBASSEMBLY32-NEXT:#define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2{{$}} +// WEBASSEMBLY32-NEXT:#define __GNUC_MINOR__ {{.}} +// WEBASSEMBLY32-NEXT:#define __GNUC_PATCHLEVEL__ {{.}} +// WEBASSEMBLY32-NEXT:#define __GNUC_STDC_INLINE__ 1{{$}} +// WEBASSEMBLY32-NEXT:#define __GNUC__ {{.}} +// WEBASSEMBLY32-NEXT:#define __GXX_ABI_VERSION 1002{{$}} +// WEBASSEMBLY32-NEXT:#define __GXX_RTTI 1{{$}} +// WEBASSEMBLY32-NEXT:#define __ILP32__ 1{{$}} +// WEBASSEMBLY32-NEXT:#define __INT16_C_SUFFIX__ {{$}} +// WEBASSEMBLY32-NEXT:#define __INT16_FMTd__ "hd"{{$}} +// WEBASSEMBLY32-NEXT:#define __INT16_FMTi__ "hi"{{$}} +// WEBASSEMBLY32-NEXT:#define __INT16_MAX__ 32767{{$}} +// WEBASSEMBLY32-NEXT:#define __INT16_TYPE__ short{{$}} +// WEBASSEMBLY32-NEXT:#define __INT32_C_SUFFIX__ {{$}} +// WEBASSEMBLY32-NEXT:#define __INT32_FMTd__ "d"{{$}} +// WEBASSEMBLY32-NEXT:#define __INT32_FMTi__ "i"{{$}} +// WEBASSEMBLY32-NEXT:#define __INT32_MAX__ 2147483647{{$}} +// WEBASSEMBLY32-NEXT:#define __INT32_TYPE__ int{{$}} +// WEBASSEMBLY32-NEXT:#define __INT64_C_SUFFIX__ LL{{$}} +// WEBASSEMBLY32-NEXT:#define __INT64_FMTd__ "lld"{{$}} +// WEBASSEMBLY32-NEXT:#define __INT64_FMTi__ "lli"{{$}} +// WEBASSEMBLY32-NEXT:#define __INT64_MAX__ 9223372036854775807LL{{$}} +// WEBASSEMBLY32-NEXT:#define __INT64_TYPE__ long long int{{$}} +// WEBASSEMBLY32-NEXT:#define __INT8_C_SUFFIX__ {{$}} +// WEBASSEMBLY32-NEXT:#define __INT8_FMTd__ "hhd"{{$}} +// WEBASSEMBLY32-NEXT:#define __INT8_FMTi__ "hhi"{{$}} +// WEBASSEMBLY32-NEXT:#define __INT8_MAX__ 127{{$}} +// WEBASSEMBLY32-NEXT:#define __INT8_TYPE__ signed char{{$}} +// WEBASSEMBLY32-NEXT:#define __INTMAX_C_SUFFIX__ LL{{$}} +// WEBASSEMBLY32-NEXT:#define __INTMAX_FMTd__ "lld"{{$}} +// WEBASSEMBLY32-NEXT:#define __INTMAX_FMTi__ "lli"{{$}} +// WEBASSEMBLY32-NEXT:#define __INTMAX_MAX__ 9223372036854775807LL{{$}} +// WEBASSEMBLY32-NEXT:#define __INTMAX_TYPE__ long long int{{$}} +// WEBASSEMBLY32-NEXT:#define __INTMAX_WIDTH__ 64{{$}} +// WEBASSEMBLY32-NEXT:#define __INTPTR_FMTd__ "ld"{{$}} +// WEBASSEMBLY32-NEXT:#define __INTPTR_FMTi__ "li"{{$}} +// WEBASSEMBLY32-NEXT:#define __INTPTR_MAX__ 2147483647L{{$}} +// WEBASSEMBLY32-NEXT:#define __INTPTR_TYPE__ long int{{$}} +// WEBASSEMBLY32-NEXT:#define __INTPTR_WIDTH__ 32{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_FAST16_FMTd__ "hd"{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_FAST16_FMTi__ "hi"{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_FAST16_MAX__ 32767{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_FAST16_TYPE__ short{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_FAST32_FMTd__ "d"{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_FAST32_FMTi__ "i"{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_FAST32_MAX__ 2147483647{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_FAST32_TYPE__ int{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_FAST64_FMTd__ "lld"{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_FAST64_FMTi__ "lli"{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_FAST64_MAX__ 9223372036854775807LL{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_FAST64_TYPE__ long long int{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_FAST8_FMTd__ "hhd"{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_FAST8_FMTi__ "hhi"{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_FAST8_MAX__ 127{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_FAST8_TYPE__ signed char{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_LEAST16_FMTd__ "hd"{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_LEAST16_FMTi__ "hi"{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_LEAST16_MAX__ 32767{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_LEAST16_TYPE__ short{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_LEAST32_FMTd__ "d"{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_LEAST32_FMTi__ "i"{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_LEAST32_MAX__ 2147483647{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_LEAST32_TYPE__ int{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_LEAST64_FMTd__ "lld"{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_LEAST64_FMTi__ "lli"{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_LEAST64_MAX__ 9223372036854775807LL{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_LEAST64_TYPE__ long long int{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_LEAST8_FMTd__ "hhd"{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_LEAST8_FMTi__ "hhi"{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_LEAST8_MAX__ 127{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_LEAST8_TYPE__ signed char{{$}} +// WEBASSEMBLY32-NEXT:#define __INT_MAX__ 2147483647{{$}} +// WEBASSEMBLY32-NEXT:#define __LDBL_DECIMAL_DIG__ 36{{$}} +// WEBASSEMBLY32-NEXT:#define __LDBL_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966L{{$}} +// WEBASSEMBLY32-NEXT:#define __LDBL_DIG__ 33{{$}} +// WEBASSEMBLY32-NEXT:#define __LDBL_EPSILON__ 1.92592994438723585305597794258492732e-34L{{$}} +// WEBASSEMBLY32-NEXT:#define __LDBL_HAS_DENORM__ 1{{$}} +// WEBASSEMBLY32-NEXT:#define __LDBL_HAS_INFINITY__ 1{{$}} +// WEBASSEMBLY32-NEXT:#define __LDBL_HAS_QUIET_NAN__ 1{{$}} +// WEBASSEMBLY32-NEXT:#define __LDBL_MANT_DIG__ 113{{$}} +// WEBASSEMBLY32-NEXT:#define __LDBL_MAX_10_EXP__ 4932{{$}} +// WEBASSEMBLY32-NEXT:#define __LDBL_MAX_EXP__ 16384{{$}} +// WEBASSEMBLY32-NEXT:#define __LDBL_MAX__ 1.18973149535723176508575932662800702e+4932L{{$}} +// WEBASSEMBLY32-NEXT:#define __LDBL_MIN_10_EXP__ (-4931){{$}} +// WEBASSEMBLY32-NEXT:#define __LDBL_MIN_EXP__ (-16381){{$}} +// WEBASSEMBLY32-NEXT:#define __LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L{{$}} +// WEBASSEMBLY32-NEXT:#define __LITTLE_ENDIAN__ 1{{$}} +// WEBASSEMBLY32-NEXT:#define __LONG_LONG_MAX__ 9223372036854775807LL{{$}} +// WEBASSEMBLY32-NEXT:#define __LONG_MAX__ 2147483647L{{$}} +// WEBASSEMBLY32-NOT:#define __LP64__ +// WEBASSEMBLY32-NEXT:#define __NO_INLINE__ 1{{$}} +// WEBASSEMBLY32-NEXT:#define __ORDER_BIG_ENDIAN__ 4321{{$}} +// WEBASSEMBLY32-NEXT:#define __ORDER_LITTLE_ENDIAN__ 1234{{$}} +// WEBASSEMBLY32-NEXT:#define __ORDER_PDP_ENDIAN__ 3412{{$}} +// WEBASSEMBLY32-NEXT:#define __POINTER_WIDTH__ 32{{$}} +// WEBASSEMBLY32-NEXT:#define __PRAGMA_REDEFINE_EXTNAME 1{{$}} +// WEBASSEMBLY32-NEXT:#define __PTRDIFF_FMTd__ "ld"{{$}} +// WEBASSEMBLY32-NEXT:#define __PTRDIFF_FMTi__ "li"{{$}} +// WEBASSEMBLY32-NEXT:#define __PTRDIFF_MAX__ 2147483647L{{$}} +// WEBASSEMBLY32-NEXT:#define __PTRDIFF_TYPE__ long int{{$}} +// WEBASSEMBLY32-NEXT:#define __PTRDIFF_WIDTH__ 32{{$}} +// WEBASSEMBLY32-NOT:#define __REGISTER_PREFIX__ +// WEBASSEMBLY32-NEXT:#define __SCHAR_MAX__ 127{{$}} +// WEBASSEMBLY32-NEXT:#define __SHRT_MAX__ 32767{{$}} +// WEBASSEMBLY32-NEXT:#define __SIG_ATOMIC_MAX__ 2147483647L{{$}} +// WEBASSEMBLY32-NEXT:#define __SIG_ATOMIC_WIDTH__ 32{{$}} +// WEBASSEMBLY32-NEXT:#define __SIZEOF_DOUBLE__ 8{{$}} +// WEBASSEMBLY32-NEXT:#define __SIZEOF_FLOAT__ 4{{$}} +// WEBASSEMBLY32-NEXT:#define __SIZEOF_INT128__ 16{{$}} +// WEBASSEMBLY32-NEXT:#define __SIZEOF_INT__ 4{{$}} +// WEBASSEMBLY32-NEXT:#define __SIZEOF_LONG_DOUBLE__ 16{{$}} +// WEBASSEMBLY32-NEXT:#define __SIZEOF_LONG_LONG__ 8{{$}} +// WEBASSEMBLY32-NEXT:#define __SIZEOF_LONG__ 4{{$}} +// WEBASSEMBLY32-NEXT:#define __SIZEOF_POINTER__ 4{{$}} +// WEBASSEMBLY32-NEXT:#define __SIZEOF_PTRDIFF_T__ 4{{$}} +// WEBASSEMBLY32-NEXT:#define __SIZEOF_SHORT__ 2{{$}} +// WEBASSEMBLY32-NEXT:#define __SIZEOF_SIZE_T__ 4{{$}} +// WEBASSEMBLY32-NEXT:#define __SIZEOF_WCHAR_T__ 4{{$}} +// WEBASSEMBLY32-NEXT:#define __SIZEOF_WINT_T__ 4{{$}} +// WEBASSEMBLY32-NEXT:#define __SIZE_FMTX__ "lX"{{$}} +// WEBASSEMBLY32-NEXT:#define __SIZE_FMTo__ "lo"{{$}} +// WEBASSEMBLY32-NEXT:#define __SIZE_FMTu__ "lu"{{$}} +// WEBASSEMBLY32-NEXT:#define __SIZE_FMTx__ "lx"{{$}} +// WEBASSEMBLY32-NEXT:#define __SIZE_MAX__ 4294967295UL{{$}} +// WEBASSEMBLY32-NEXT:#define __SIZE_TYPE__ long unsigned int{{$}} +// WEBASSEMBLY32-NEXT:#define __SIZE_WIDTH__ 32{{$}} +// WEBASSEMBLY32-NEXT:#define __STDC_HOSTED__ 0{{$}} +// WEBASSEMBLY32-NOT:#define __STDC_MB_MIGHT_NEQ_WC__ +// WEBASSEMBLY32-NOT:#define __STDC_NO_ATOMICS__ +// WEBASSEMBLY32-NOT:#define __STDC_NO_COMPLEX__ +// WEBASSEMBLY32-NOT:#define __STDC_NO_VLA__ +// WEBASSEMBLY32-NOT:#define __STDC_NO_THREADS__ +// WEBASSEMBLY32-NEXT:#define __STDC_UTF_16__ 1{{$}} +// WEBASSEMBLY32-NEXT:#define __STDC_UTF_32__ 1{{$}} +// WEBASSEMBLY32-NEXT:#define __STDC_VERSION__ 201112L{{$}} +// WEBASSEMBLY32-NEXT:#define __STDC__ 1{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT16_C_SUFFIX__ {{$}} +// WEBASSEMBLY32-NEXT:#define __UINT16_FMTX__ "hX"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT16_FMTo__ "ho"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT16_FMTu__ "hu"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT16_FMTx__ "hx"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT16_MAX__ 65535{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT16_TYPE__ unsigned short{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT32_C_SUFFIX__ U{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT32_FMTX__ "X"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT32_FMTo__ "o"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT32_FMTu__ "u"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT32_FMTx__ "x"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT32_MAX__ 4294967295U{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT32_TYPE__ unsigned int{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT64_C_SUFFIX__ ULL{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT64_FMTX__ "llX"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT64_FMTo__ "llo"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT64_FMTu__ "llu"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT64_FMTx__ "llx"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT64_MAX__ 18446744073709551615ULL{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT64_TYPE__ long long unsigned int{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT8_C_SUFFIX__ {{$}} +// WEBASSEMBLY32-NEXT:#define __UINT8_FMTX__ "hhX"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT8_FMTo__ "hho"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT8_FMTu__ "hhu"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT8_FMTx__ "hhx"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT8_MAX__ 255{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT8_TYPE__ unsigned char{{$}} +// WEBASSEMBLY32-NEXT:#define __UINTMAX_C_SUFFIX__ ULL{{$}} +// WEBASSEMBLY32-NEXT:#define __UINTMAX_FMTX__ "llX"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINTMAX_FMTo__ "llo"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINTMAX_FMTu__ "llu"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINTMAX_FMTx__ "llx"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINTMAX_MAX__ 18446744073709551615ULL{{$}} +// WEBASSEMBLY32-NEXT:#define __UINTMAX_TYPE__ long long unsigned int{{$}} +// WEBASSEMBLY32-NEXT:#define __UINTMAX_WIDTH__ 64{{$}} +// WEBASSEMBLY32-NEXT:#define __UINTPTR_FMTX__ "lX"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINTPTR_FMTo__ "lo"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINTPTR_FMTu__ "lu"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINTPTR_FMTx__ "lx"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINTPTR_MAX__ 4294967295UL{{$}} +// WEBASSEMBLY32-NEXT:#define __UINTPTR_TYPE__ long unsigned int{{$}} +// WEBASSEMBLY32-NEXT:#define __UINTPTR_WIDTH__ 32{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_FAST16_FMTX__ "hX"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_FAST16_FMTo__ "ho"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_FAST16_FMTu__ "hu"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_FAST16_FMTx__ "hx"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_FAST16_MAX__ 65535{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_FAST16_TYPE__ unsigned short{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_FAST32_FMTX__ "X"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_FAST32_FMTo__ "o"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_FAST32_FMTu__ "u"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_FAST32_FMTx__ "x"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_FAST32_MAX__ 4294967295U{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_FAST32_TYPE__ unsigned int{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_FAST64_FMTX__ "llX"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_FAST64_FMTo__ "llo"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_FAST64_FMTu__ "llu"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_FAST64_FMTx__ "llx"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_FAST64_MAX__ 18446744073709551615ULL{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_FAST64_TYPE__ long long unsigned int{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_FAST8_FMTX__ "hhX"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_FAST8_FMTo__ "hho"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_FAST8_FMTu__ "hhu"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_FAST8_FMTx__ "hhx"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_FAST8_MAX__ 255{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_FAST8_TYPE__ unsigned char{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_LEAST16_FMTX__ "hX"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_LEAST16_FMTo__ "ho"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_LEAST16_FMTu__ "hu"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_LEAST16_FMTx__ "hx"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_LEAST16_MAX__ 65535{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_LEAST16_TYPE__ unsigned short{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_LEAST32_FMTX__ "X"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_LEAST32_FMTo__ "o"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_LEAST32_FMTu__ "u"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_LEAST32_FMTx__ "x"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_LEAST32_MAX__ 4294967295U{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_LEAST32_TYPE__ unsigned int{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_LEAST64_FMTX__ "llX"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_LEAST64_FMTo__ "llo"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_LEAST64_FMTu__ "llu"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_LEAST64_FMTx__ "llx"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_LEAST64_MAX__ 18446744073709551615ULL{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_LEAST64_TYPE__ long long unsigned int{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_LEAST8_FMTX__ "hhX"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_LEAST8_FMTo__ "hho"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_LEAST8_FMTu__ "hhu"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_LEAST8_FMTx__ "hhx"{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_LEAST8_MAX__ 255{{$}} +// WEBASSEMBLY32-NEXT:#define __UINT_LEAST8_TYPE__ unsigned char{{$}} +// WEBASSEMBLY32-NEXT:#define __USER_LABEL_PREFIX__ {{$}} +// WEBASSEMBLY32-NEXT:#define __VERSION__ "{{.*}}"{{$}} +// WEBASSEMBLY32-NEXT:#define __WCHAR_MAX__ 2147483647{{$}} +// WEBASSEMBLY32-NEXT:#define __WCHAR_TYPE__ int{{$}} +// WEBASSEMBLY32-NOT:#define __WCHAR_UNSIGNED__ +// WEBASSEMBLY32-NEXT:#define __WCHAR_WIDTH__ 32{{$}} +// WEBASSEMBLY32-NEXT:#define __WINT_TYPE__ int{{$}} +// WEBASSEMBLY32-NOT:#define __WINT_UNSIGNED__ +// WEBASSEMBLY32-NEXT:#define __WINT_WIDTH__ 32{{$}} +// WEBASSEMBLY32-NEXT:#define __clang__ 1{{$}} +// WEBASSEMBLY32-NEXT:#define __clang_major__ {{.}} +// WEBASSEMBLY32-NEXT:#define __clang_minor__ {{.}} +// WEBASSEMBLY32-NEXT:#define __clang_patchlevel__ {{.}} +// WEBASSEMBLY32-NEXT:#define __clang_version__ "{{.*}}"{{$}} +// WEBASSEMBLY32-NEXT:#define __llvm__ 1{{$}} +// WEBASSEMBLY32-NOT:#define __wasm_simd128__ +// WEBASSEMBLY32-NOT:#define __wasm_simd256__ +// WEBASSEMBLY32-NOT:#define __wasm_simd512__ +// WEBASSEMBLY32-NOT:#define __unix +// WEBASSEMBLY32-NOT:#define __unix__ +// WEBASSEMBLY32-NEXT:#define __wasm 1{{$}} +// WEBASSEMBLY32-NEXT:#define __wasm32 1{{$}} +// WEBASSEMBLY32-NEXT:#define __wasm32__ 1{{$}} +// WEBASSEMBLY32-NOT:#define __wasm64 +// WEBASSEMBLY32-NOT:#define __wasm64__ +// WEBASSEMBLY32-NEXT:#define __wasm__ 1{{$}} +// +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=wasm64-unknown-unknown \ +// RUN: < /dev/null \ +// RUN: | FileCheck -check-prefix=WEBASSEMBLY64 %s +// +// WEBASSEMBLY64-NOT:#define _ILP32 +// WEBASSEMBLY64:#define _LP64 1{{$}} +// WEBASSEMBLY64-NEXT:#define __ATOMIC_ACQUIRE 2{{$}} +// WEBASSEMBLY64-NEXT:#define __ATOMIC_ACQ_REL 4{{$}} +// WEBASSEMBLY64-NEXT:#define __ATOMIC_CONSUME 1{{$}} +// WEBASSEMBLY64-NEXT:#define __ATOMIC_RELAXED 0{{$}} +// WEBASSEMBLY64-NEXT:#define __ATOMIC_RELEASE 3{{$}} +// WEBASSEMBLY64-NEXT:#define __ATOMIC_SEQ_CST 5{{$}} +// WEBASSEMBLY64-NEXT:#define __BIGGEST_ALIGNMENT__ 16{{$}} +// WEBASSEMBLY64-NEXT:#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__{{$}} +// WEBASSEMBLY64-NEXT:#define __CHAR16_TYPE__ unsigned short{{$}} +// WEBASSEMBLY64-NEXT:#define __CHAR32_TYPE__ unsigned int{{$}} +// WEBASSEMBLY64-NEXT:#define __CHAR_BIT__ 8{{$}} +// WEBASSEMBLY64-NOT:#define __CHAR_UNSIGNED__ +// WEBASSEMBLY64-NEXT:#define __CONSTANT_CFSTRINGS__ 1{{$}} +// WEBASSEMBLY64-NEXT:#define __DBL_DECIMAL_DIG__ 17{{$}} +// WEBASSEMBLY64-NEXT:#define __DBL_DENORM_MIN__ 4.9406564584124654e-324{{$}} +// WEBASSEMBLY64-NEXT:#define __DBL_DIG__ 15{{$}} +// WEBASSEMBLY64-NEXT:#define __DBL_EPSILON__ 2.2204460492503131e-16{{$}} +// WEBASSEMBLY64-NEXT:#define __DBL_HAS_DENORM__ 1{{$}} +// WEBASSEMBLY64-NEXT:#define __DBL_HAS_INFINITY__ 1{{$}} +// WEBASSEMBLY64-NEXT:#define __DBL_HAS_QUIET_NAN__ 1{{$}} +// WEBASSEMBLY64-NEXT:#define __DBL_MANT_DIG__ 53{{$}} +// WEBASSEMBLY64-NEXT:#define __DBL_MAX_10_EXP__ 308{{$}} +// WEBASSEMBLY64-NEXT:#define __DBL_MAX_EXP__ 1024{{$}} +// WEBASSEMBLY64-NEXT:#define __DBL_MAX__ 1.7976931348623157e+308{{$}} +// WEBASSEMBLY64-NEXT:#define __DBL_MIN_10_EXP__ (-307){{$}} +// WEBASSEMBLY64-NEXT:#define __DBL_MIN_EXP__ (-1021){{$}} +// WEBASSEMBLY64-NEXT:#define __DBL_MIN__ 2.2250738585072014e-308{{$}} +// 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-NEXT:#define __FLT_DENORM_MIN__ 1.40129846e-45F{{$}} +// WEBASSEMBLY64-NEXT:#define __FLT_DIG__ 6{{$}} +// WEBASSEMBLY64-NEXT:#define __FLT_EPSILON__ 1.19209290e-7F{{$}} +// WEBASSEMBLY64-NEXT:#define __FLT_EVAL_METHOD__ 0{{$}} +// WEBASSEMBLY64-NEXT:#define __FLT_HAS_DENORM__ 1{{$}} +// WEBASSEMBLY64-NEXT:#define __FLT_HAS_INFINITY__ 1{{$}} +// WEBASSEMBLY64-NEXT:#define __FLT_HAS_QUIET_NAN__ 1{{$}} +// WEBASSEMBLY64-NEXT:#define __FLT_MANT_DIG__ 24{{$}} +// WEBASSEMBLY64-NEXT:#define __FLT_MAX_10_EXP__ 38{{$}} +// WEBASSEMBLY64-NEXT:#define __FLT_MAX_EXP__ 128{{$}} +// WEBASSEMBLY64-NEXT:#define __FLT_MAX__ 3.40282347e+38F{{$}} +// WEBASSEMBLY64-NEXT:#define __FLT_MIN_10_EXP__ (-37){{$}} +// WEBASSEMBLY64-NEXT:#define __FLT_MIN_EXP__ (-125){{$}} +// WEBASSEMBLY64-NEXT:#define __FLT_MIN__ 1.17549435e-38F{{$}} +// WEBASSEMBLY64-NEXT:#define __FLT_RADIX__ 2{{$}} +// WEBASSEMBLY64-NEXT:#define __GCC_ATOMIC_BOOL_LOCK_FREE 2{{$}} +// WEBASSEMBLY64-NEXT:#define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2{{$}} +// WEBASSEMBLY64-NEXT:#define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2{{$}} +// WEBASSEMBLY64-NEXT:#define __GCC_ATOMIC_CHAR_LOCK_FREE 2{{$}} +// WEBASSEMBLY64-NEXT:#define __GCC_ATOMIC_INT_LOCK_FREE 2{{$}} +// WEBASSEMBLY64-NEXT:#define __GCC_ATOMIC_LLONG_LOCK_FREE 2{{$}} +// WEBASSEMBLY64-NEXT:#define __GCC_ATOMIC_LONG_LOCK_FREE 2{{$}} +// WEBASSEMBLY64-NEXT:#define __GCC_ATOMIC_POINTER_LOCK_FREE 2{{$}} +// WEBASSEMBLY64-NEXT:#define __GCC_ATOMIC_SHORT_LOCK_FREE 2{{$}} +// WEBASSEMBLY64-NEXT:#define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1{{$}} +// WEBASSEMBLY64-NEXT:#define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2{{$}} +// WEBASSEMBLY64-NEXT:#define __GNUC_MINOR__ {{.}} +// WEBASSEMBLY64-NEXT:#define __GNUC_PATCHLEVEL__ {{.}} +// WEBASSEMBLY64-NEXT:#define __GNUC_STDC_INLINE__ 1{{$}} +// WEBASSEMBLY64-NEXT:#define __GNUC__ {{.}} +// WEBASSEMBLY64-NEXT:#define __GXX_ABI_VERSION 1002{{$}} +// WEBASSEMBLY64-NEXT:#define __GXX_RTTI 1{{$}} +// WEBASSEMBLY64-NOT:#define __ILP32__ +// WEBASSEMBLY64-NEXT:#define __INT16_C_SUFFIX__ {{$}} +// WEBASSEMBLY64-NEXT:#define __INT16_FMTd__ "hd"{{$}} +// WEBASSEMBLY64-NEXT:#define __INT16_FMTi__ "hi"{{$}} +// WEBASSEMBLY64-NEXT:#define __INT16_MAX__ 32767{{$}} +// WEBASSEMBLY64-NEXT:#define __INT16_TYPE__ short{{$}} +// WEBASSEMBLY64-NEXT:#define __INT32_C_SUFFIX__ {{$}} +// WEBASSEMBLY64-NEXT:#define __INT32_FMTd__ "d"{{$}} +// WEBASSEMBLY64-NEXT:#define __INT32_FMTi__ "i"{{$}} +// WEBASSEMBLY64-NEXT:#define __INT32_MAX__ 2147483647{{$}} +// WEBASSEMBLY64-NEXT:#define __INT32_TYPE__ int{{$}} +// WEBASSEMBLY64-NEXT:#define __INT64_C_SUFFIX__ LL{{$}} +// WEBASSEMBLY64-NEXT:#define __INT64_FMTd__ "lld"{{$}} +// WEBASSEMBLY64-NEXT:#define __INT64_FMTi__ "lli"{{$}} +// WEBASSEMBLY64-NEXT:#define __INT64_MAX__ 9223372036854775807LL{{$}} +// WEBASSEMBLY64-NEXT:#define __INT64_TYPE__ long long int{{$}} +// WEBASSEMBLY64-NEXT:#define __INT8_C_SUFFIX__ {{$}} +// WEBASSEMBLY64-NEXT:#define __INT8_FMTd__ "hhd"{{$}} +// WEBASSEMBLY64-NEXT:#define __INT8_FMTi__ "hhi"{{$}} +// WEBASSEMBLY64-NEXT:#define __INT8_MAX__ 127{{$}} +// WEBASSEMBLY64-NEXT:#define __INT8_TYPE__ signed char{{$}} +// WEBASSEMBLY64-NEXT:#define __INTMAX_C_SUFFIX__ LL{{$}} +// WEBASSEMBLY64-NEXT:#define __INTMAX_FMTd__ "lld"{{$}} +// WEBASSEMBLY64-NEXT:#define __INTMAX_FMTi__ "lli"{{$}} +// WEBASSEMBLY64-NEXT:#define __INTMAX_MAX__ 9223372036854775807LL{{$}} +// WEBASSEMBLY64-NEXT:#define __INTMAX_TYPE__ long long int{{$}} +// WEBASSEMBLY64-NEXT:#define __INTMAX_WIDTH__ 64{{$}} +// WEBASSEMBLY64-NEXT:#define __INTPTR_FMTd__ "ld"{{$}} +// WEBASSEMBLY64-NEXT:#define __INTPTR_FMTi__ "li"{{$}} +// WEBASSEMBLY64-NEXT:#define __INTPTR_MAX__ 9223372036854775807L{{$}} +// WEBASSEMBLY64-NEXT:#define __INTPTR_TYPE__ long int{{$}} +// WEBASSEMBLY64-NEXT:#define __INTPTR_WIDTH__ 64{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_FAST16_FMTd__ "hd"{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_FAST16_FMTi__ "hi"{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_FAST16_MAX__ 32767{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_FAST16_TYPE__ short{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_FAST32_FMTd__ "d"{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_FAST32_FMTi__ "i"{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_FAST32_MAX__ 2147483647{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_FAST32_TYPE__ int{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_FAST64_FMTd__ "lld"{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_FAST64_FMTi__ "lli"{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_FAST64_MAX__ 9223372036854775807LL{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_FAST64_TYPE__ long long int{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_FAST8_FMTd__ "hhd"{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_FAST8_FMTi__ "hhi"{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_FAST8_MAX__ 127{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_FAST8_TYPE__ signed char{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_LEAST16_FMTd__ "hd"{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_LEAST16_FMTi__ "hi"{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_LEAST16_MAX__ 32767{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_LEAST16_TYPE__ short{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_LEAST32_FMTd__ "d"{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_LEAST32_FMTi__ "i"{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_LEAST32_MAX__ 2147483647{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_LEAST32_TYPE__ int{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_LEAST64_FMTd__ "lld"{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_LEAST64_FMTi__ "lli"{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_LEAST64_MAX__ 9223372036854775807LL{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_LEAST64_TYPE__ long long int{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_LEAST8_FMTd__ "hhd"{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_LEAST8_FMTi__ "hhi"{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_LEAST8_MAX__ 127{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_LEAST8_TYPE__ signed char{{$}} +// WEBASSEMBLY64-NEXT:#define __INT_MAX__ 2147483647{{$}} +// WEBASSEMBLY64-NEXT:#define __LDBL_DECIMAL_DIG__ 36{{$}} +// WEBASSEMBLY64-NEXT:#define __LDBL_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966L{{$}} +// WEBASSEMBLY64-NEXT:#define __LDBL_DIG__ 33{{$}} +// WEBASSEMBLY64-NEXT:#define __LDBL_EPSILON__ 1.92592994438723585305597794258492732e-34L{{$}} +// WEBASSEMBLY64-NEXT:#define __LDBL_HAS_DENORM__ 1{{$}} +// WEBASSEMBLY64-NEXT:#define __LDBL_HAS_INFINITY__ 1{{$}} +// WEBASSEMBLY64-NEXT:#define __LDBL_HAS_QUIET_NAN__ 1{{$}} +// WEBASSEMBLY64-NEXT:#define __LDBL_MANT_DIG__ 113{{$}} +// WEBASSEMBLY64-NEXT:#define __LDBL_MAX_10_EXP__ 4932{{$}} +// WEBASSEMBLY64-NEXT:#define __LDBL_MAX_EXP__ 16384{{$}} +// WEBASSEMBLY64-NEXT:#define __LDBL_MAX__ 1.18973149535723176508575932662800702e+4932L{{$}} +// WEBASSEMBLY64-NEXT:#define __LDBL_MIN_10_EXP__ (-4931){{$}} +// WEBASSEMBLY64-NEXT:#define __LDBL_MIN_EXP__ (-16381){{$}} +// WEBASSEMBLY64-NEXT:#define __LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L{{$}} +// WEBASSEMBLY64-NEXT:#define __LITTLE_ENDIAN__ 1{{$}} +// WEBASSEMBLY64-NEXT:#define __LONG_LONG_MAX__ 9223372036854775807LL{{$}} +// WEBASSEMBLY64-NEXT:#define __LONG_MAX__ 9223372036854775807L{{$}} +// WEBASSEMBLY64-NEXT:#define __LP64__ 1{{$}} +// WEBASSEMBLY64-NEXT:#define __NO_INLINE__ 1{{$}} +// WEBASSEMBLY64-NEXT:#define __ORDER_BIG_ENDIAN__ 4321{{$}} +// WEBASSEMBLY64-NEXT:#define __ORDER_LITTLE_ENDIAN__ 1234{{$}} +// WEBASSEMBLY64-NEXT:#define __ORDER_PDP_ENDIAN__ 3412{{$}} +// WEBASSEMBLY64-NEXT:#define __POINTER_WIDTH__ 64{{$}} +// WEBASSEMBLY64-NEXT:#define __PRAGMA_REDEFINE_EXTNAME 1{{$}} +// WEBASSEMBLY64-NEXT:#define __PTRDIFF_FMTd__ "ld"{{$}} +// WEBASSEMBLY64-NEXT:#define __PTRDIFF_FMTi__ "li"{{$}} +// WEBASSEMBLY64-NEXT:#define __PTRDIFF_MAX__ 9223372036854775807L{{$}} +// WEBASSEMBLY64-NEXT:#define __PTRDIFF_TYPE__ long int{{$}} +// WEBASSEMBLY64-NEXT:#define __PTRDIFF_WIDTH__ 64{{$}} +// WEBASSEMBLY64-NOT:#define __REGISTER_PREFIX__ +// WEBASSEMBLY64-NEXT:#define __SCHAR_MAX__ 127{{$}} +// WEBASSEMBLY64-NEXT:#define __SHRT_MAX__ 32767{{$}} +// WEBASSEMBLY64-NEXT:#define __SIG_ATOMIC_MAX__ 9223372036854775807L{{$}} +// WEBASSEMBLY64-NEXT:#define __SIG_ATOMIC_WIDTH__ 64{{$}} +// WEBASSEMBLY64-NEXT:#define __SIZEOF_DOUBLE__ 8{{$}} +// WEBASSEMBLY64-NEXT:#define __SIZEOF_FLOAT__ 4{{$}} +// WEBASSEMBLY64-NEXT:#define __SIZEOF_INT128__ 16{{$}} +// WEBASSEMBLY64-NEXT:#define __SIZEOF_INT__ 4{{$}} +// WEBASSEMBLY64-NEXT:#define __SIZEOF_LONG_DOUBLE__ 16{{$}} +// WEBASSEMBLY64-NEXT:#define __SIZEOF_LONG_LONG__ 8{{$}} +// WEBASSEMBLY64-NEXT:#define __SIZEOF_LONG__ 8{{$}} +// WEBASSEMBLY64-NEXT:#define __SIZEOF_POINTER__ 8{{$}} +// WEBASSEMBLY64-NEXT:#define __SIZEOF_PTRDIFF_T__ 8{{$}} +// WEBASSEMBLY64-NEXT:#define __SIZEOF_SHORT__ 2{{$}} +// WEBASSEMBLY64-NEXT:#define __SIZEOF_SIZE_T__ 8{{$}} +// WEBASSEMBLY64-NEXT:#define __SIZEOF_WCHAR_T__ 4{{$}} +// WEBASSEMBLY64-NEXT:#define __SIZEOF_WINT_T__ 4{{$}} +// WEBASSEMBLY64-NEXT:#define __SIZE_FMTX__ "lX"{{$}} +// WEBASSEMBLY64-NEXT:#define __SIZE_FMTo__ "lo"{{$}} +// WEBASSEMBLY64-NEXT:#define __SIZE_FMTu__ "lu"{{$}} +// WEBASSEMBLY64-NEXT:#define __SIZE_FMTx__ "lx"{{$}} +// WEBASSEMBLY64-NEXT:#define __SIZE_MAX__ 18446744073709551615UL{{$}} +// WEBASSEMBLY64-NEXT:#define __SIZE_TYPE__ long unsigned int{{$}} +// WEBASSEMBLY64-NEXT:#define __SIZE_WIDTH__ 64{{$}} +// WEBASSEMBLY64-NEXT:#define __STDC_HOSTED__ 0{{$}} +// WEBASSEMBLY64-NOT:#define __STDC_MB_MIGHT_NEQ_WC__ +// WEBASSEMBLY64-NOT:#define __STDC_NO_ATOMICS__ +// WEBASSEMBLY64-NOT:#define __STDC_NO_COMPLEX__ +// WEBASSEMBLY64-NOT:#define __STDC_NO_VLA__ +// WEBASSEMBLY64-NOT:#define __STDC_NO_THREADS__ +// WEBASSEMBLY64-NEXT:#define __STDC_UTF_16__ 1{{$}} +// WEBASSEMBLY64-NEXT:#define __STDC_UTF_32__ 1{{$}} +// WEBASSEMBLY64-NEXT:#define __STDC_VERSION__ 201112L{{$}} +// WEBASSEMBLY64-NEXT:#define __STDC__ 1{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT16_C_SUFFIX__ {{$}} +// WEBASSEMBLY64-NEXT:#define __UINT16_FMTX__ "hX"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT16_FMTo__ "ho"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT16_FMTu__ "hu"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT16_FMTx__ "hx"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT16_MAX__ 65535{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT16_TYPE__ unsigned short{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT32_C_SUFFIX__ U{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT32_FMTX__ "X"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT32_FMTo__ "o"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT32_FMTu__ "u"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT32_FMTx__ "x"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT32_MAX__ 4294967295U{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT32_TYPE__ unsigned int{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT64_C_SUFFIX__ ULL{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT64_FMTX__ "llX"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT64_FMTo__ "llo"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT64_FMTu__ "llu"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT64_FMTx__ "llx"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT64_MAX__ 18446744073709551615ULL{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT64_TYPE__ long long unsigned int{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT8_C_SUFFIX__ {{$}} +// WEBASSEMBLY64-NEXT:#define __UINT8_FMTX__ "hhX"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT8_FMTo__ "hho"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT8_FMTu__ "hhu"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT8_FMTx__ "hhx"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT8_MAX__ 255{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT8_TYPE__ unsigned char{{$}} +// WEBASSEMBLY64-NEXT:#define __UINTMAX_C_SUFFIX__ ULL{{$}} +// WEBASSEMBLY64-NEXT:#define __UINTMAX_FMTX__ "llX"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINTMAX_FMTo__ "llo"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINTMAX_FMTu__ "llu"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINTMAX_FMTx__ "llx"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINTMAX_MAX__ 18446744073709551615ULL{{$}} +// WEBASSEMBLY64-NEXT:#define __UINTMAX_TYPE__ long long unsigned int{{$}} +// WEBASSEMBLY64-NEXT:#define __UINTMAX_WIDTH__ 64{{$}} +// WEBASSEMBLY64-NEXT:#define __UINTPTR_FMTX__ "lX"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINTPTR_FMTo__ "lo"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINTPTR_FMTu__ "lu"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINTPTR_FMTx__ "lx"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINTPTR_MAX__ 18446744073709551615UL{{$}} +// WEBASSEMBLY64-NEXT:#define __UINTPTR_TYPE__ long unsigned int{{$}} +// WEBASSEMBLY64-NEXT:#define __UINTPTR_WIDTH__ 64{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_FAST16_FMTX__ "hX"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_FAST16_FMTo__ "ho"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_FAST16_FMTu__ "hu"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_FAST16_FMTx__ "hx"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_FAST16_MAX__ 65535{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_FAST16_TYPE__ unsigned short{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_FAST32_FMTX__ "X"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_FAST32_FMTo__ "o"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_FAST32_FMTu__ "u"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_FAST32_FMTx__ "x"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_FAST32_MAX__ 4294967295U{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_FAST32_TYPE__ unsigned int{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_FAST64_FMTX__ "llX"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_FAST64_FMTo__ "llo"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_FAST64_FMTu__ "llu"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_FAST64_FMTx__ "llx"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_FAST64_MAX__ 18446744073709551615ULL{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_FAST64_TYPE__ long long unsigned int{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_FAST8_FMTX__ "hhX"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_FAST8_FMTo__ "hho"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_FAST8_FMTu__ "hhu"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_FAST8_FMTx__ "hhx"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_FAST8_MAX__ 255{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_FAST8_TYPE__ unsigned char{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_LEAST16_FMTX__ "hX"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_LEAST16_FMTo__ "ho"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_LEAST16_FMTu__ "hu"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_LEAST16_FMTx__ "hx"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_LEAST16_MAX__ 65535{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_LEAST16_TYPE__ unsigned short{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_LEAST32_FMTX__ "X"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_LEAST32_FMTo__ "o"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_LEAST32_FMTu__ "u"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_LEAST32_FMTx__ "x"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_LEAST32_MAX__ 4294967295U{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_LEAST32_TYPE__ unsigned int{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_LEAST64_FMTX__ "llX"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_LEAST64_FMTo__ "llo"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_LEAST64_FMTu__ "llu"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_LEAST64_FMTx__ "llx"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_LEAST64_MAX__ 18446744073709551615ULL{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_LEAST64_TYPE__ long long unsigned int{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_LEAST8_FMTX__ "hhX"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_LEAST8_FMTo__ "hho"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_LEAST8_FMTu__ "hhu"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_LEAST8_FMTx__ "hhx"{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_LEAST8_MAX__ 255{{$}} +// WEBASSEMBLY64-NEXT:#define __UINT_LEAST8_TYPE__ unsigned char{{$}} +// WEBASSEMBLY64-NEXT:#define __USER_LABEL_PREFIX__ {{$}} +// WEBASSEMBLY64-NEXT:#define __VERSION__ "{{.*}}"{{$}} +// WEBASSEMBLY64-NEXT:#define __WCHAR_MAX__ 2147483647{{$}} +// WEBASSEMBLY64-NEXT:#define __WCHAR_TYPE__ int{{$}} +// WEBASSEMBLY64-NOT:#define __WCHAR_UNSIGNED__ +// WEBASSEMBLY64-NEXT:#define __WCHAR_WIDTH__ 32{{$}} +// WEBASSEMBLY64-NEXT:#define __WINT_TYPE__ int{{$}} +// WEBASSEMBLY64-NOT:#define __WINT_UNSIGNED__ +// WEBASSEMBLY64-NEXT:#define __WINT_WIDTH__ 32{{$}} +// WEBASSEMBLY64-NEXT:#define __clang__ 1{{$}} +// WEBASSEMBLY64-NEXT:#define __clang_major__ {{.}} +// WEBASSEMBLY64-NEXT:#define __clang_minor__ {{.}} +// WEBASSEMBLY64-NEXT:#define __clang_patchlevel__ {{.}} +// WEBASSEMBLY64-NEXT:#define __clang_version__ "{{.*}}"{{$}} +// WEBASSEMBLY64-NEXT:#define __llvm__ 1{{$}} +// WEBASSEMBLY64-NOT:#define __wasm_simd128__ +// WEBASSEMBLY64-NOT:#define __wasm_simd256__ +// WEBASSEMBLY64-NOT:#define __wasm_simd512__ +// WEBASSEMBLY64-NOT:#define __unix +// WEBASSEMBLY64-NOT:#define __unix__ +// WEBASSEMBLY64-NEXT:#define __wasm 1{{$}} +// WEBASSEMBLY64-NOT:#define __wasm32 +// WEBASSEMBLY64-NOT:#define __wasm32__ +// WEBASSEMBLY64-NEXT:#define __wasm64 1{{$}} +// WEBASSEMBLY64-NEXT:#define __wasm64__ 1{{$}} +// WEBASSEMBLY64-NEXT:#define __wasm__ 1{{$}} diff --git a/test/Preprocessor/macro-multiline.c b/test/Preprocessor/macro-multiline.c index 526192860cf0..72a5d20e523f 100644 --- a/test/Preprocessor/macro-multiline.c +++ b/test/Preprocessor/macro-multiline.c @@ -1,5 +1,4 @@ // RUN: printf -- "-DX=A\nTHIS_SHOULD_NOT_EXIST_IN_THE_OUTPUT" | xargs -0 %clang -E %s | FileCheck -strict-whitespace %s -// REQUIRES: shell // Per GCC -D semantics, \n and anything that follows is ignored. diff --git a/test/Preprocessor/macro-reserved-cxx11.cpp b/test/Preprocessor/macro-reserved-cxx11.cpp index a740ff612954..6daea953e8a6 100644 --- a/test/Preprocessor/macro-reserved-cxx11.cpp +++ b/test/Preprocessor/macro-reserved-cxx11.cpp @@ -1,4 +1,5 @@ // RUN: %clang_cc1 -fsyntax-only -std=c++11 -pedantic -verify %s +// RUN: %clang_cc1 -fsyntax-only -std=c++14 -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}} diff --git a/test/Preprocessor/macro-reserved.cpp b/test/Preprocessor/macro-reserved.cpp index ba1594a0af49..d1f70317f7aa 100644 --- a/test/Preprocessor/macro-reserved.cpp +++ b/test/Preprocessor/macro-reserved.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s +// RUN: %clang_cc1 -fsyntax-only -verify -pedantic -std=c++98 %s #define for 0 // expected-warning {{keyword is hidden by macro definition}} #define final 1 diff --git a/test/Preprocessor/macro_arg_slocentry_merge.c b/test/Preprocessor/macro_arg_slocentry_merge.c index 9ab385f80841..27a2a01b233b 100644 --- a/test/Preprocessor/macro_arg_slocentry_merge.c +++ b/test/Preprocessor/macro_arg_slocentry_merge.c @@ -3,5 +3,3 @@ #include "macro_arg_slocentry_merge.h" // CHECK: macro_arg_slocentry_merge.h:7:19: error: unknown type name 'win' -// CHECK: macro_arg_slocentry_merge.h:5:16: note: expanded from macro 'WINDOW' -// CHECK: macro_arg_slocentry_merge.h:6:18: note: expanded from macro 'P_' diff --git a/test/Preprocessor/macro_paste_msextensions.c b/test/Preprocessor/macro_paste_msextensions.c index aa5f41f9ee4f..dcc5336b91c1 100644 --- a/test/Preprocessor/macro_paste_msextensions.c +++ b/test/Preprocessor/macro_paste_msextensions.c @@ -1,3 +1,4 @@ +// RUN: %clang_cc1 -verify -fms-extensions -Wmicrosoft %s // RUN: not %clang_cc1 -P -E -fms-extensions %s | FileCheck -strict-whitespace %s // This horrible stuff should preprocess into (other than whitespace): @@ -10,6 +11,7 @@ int foo; // CHECK: int foo; #define comment /##/ dead tokens live here +// expected-warning@+1 {{pasting two '/' tokens}} comment This is stupidity int bar; @@ -18,6 +20,7 @@ int bar; #define nested(x) int x comment cute little dead tokens... +// expected-warning@+1 {{pasting two '/' tokens}} nested(baz) rise of the dead tokens ; @@ -29,13 +32,13 @@ nested(baz) rise of the dead tokens // rdar://8197149 - VC++ allows invalid token pastes: (##baz #define foo(x) abc(x) #define bar(y) foo(##baz(y)) -bar(q) +bar(q) // expected-warning {{type specifier missing}} expected-error {{invalid preprocessing token}} expected-error {{parameter list without types}} // CHECK: abc(baz(q)) #define str(x) #x #define collapse_spaces(a, b, c, d) str(a ## - ## b ## - ## c ## d) -collapse_spaces(1a, b2, 3c, d4) +collapse_spaces(1a, b2, 3c, d4) // expected-error 4 {{invalid preprocessing token}} expected-error {{expected function body}} // CHECK: "1a-b2-3cd4" diff --git a/test/Preprocessor/microsoft-header-search.c b/test/Preprocessor/microsoft-header-search.c index 2cdc54e5c416..875bffe8793b 100644 --- a/test/Preprocessor/microsoft-header-search.c +++ b/test/Preprocessor/microsoft-header-search.c @@ -1,7 +1,7 @@ // RUN: %clang_cc1 -I%S/Inputs/microsoft-header-search %s -fms-compatibility -verify -// expected-warning@Inputs/microsoft-header-search/a/findme.h:3 {{findme.h successfully included using MS search rules}} -// expected-warning@Inputs/microsoft-header-search/a/b/include3.h:3 {{#include resolved using non-portable MSVC search rules as}} +// expected-warning@Inputs/microsoft-header-search/a/findme.h:3 {{findme.h successfully included using Microsoft header search rules}} +// expected-warning@Inputs/microsoft-header-search/a/b/include3.h:3 {{#include resolved using non-portable Microsoft search rules as}} // expected-warning@Inputs/microsoft-header-search/falsepos.h:3 {{successfully resolved the falsepos.h header}} diff --git a/test/Preprocessor/pragma_microsoft.c b/test/Preprocessor/pragma_microsoft.c index b6921fa42fc7..2a9e7bab35b5 100644 --- a/test/Preprocessor/pragma_microsoft.c +++ b/test/Preprocessor/pragma_microsoft.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 %s -fsyntax-only -verify -fms-extensions +// RUN: %clang_cc1 %s -fsyntax-only -verify -fms-extensions -Wunknown-pragmas // RUN: not %clang_cc1 %s -fms-extensions -E | FileCheck %s // REQUIRES: non-ps4-sdk @@ -53,7 +53,7 @@ __pragma(comment(linker," bar=" BAR)) void f() { - __pragma() + __pragma() // expected-warning{{unknown pragma ignored}} // CHECK: #pragma // If we ever actually *support* __pragma(warning(disable: x)), @@ -159,3 +159,6 @@ void g() {} #pragma warning(default 321) // expected-warning {{expected ':'}} #pragma warning(asdf : 321) // expected-warning {{expected 'push', 'pop'}} #pragma warning(push, -1) // expected-warning {{requires a level between 0 and 4}} + +// Test that runtime_checks is parsed but ignored. +#pragma runtime_checks("sc", restore) // no-warning diff --git a/test/Preprocessor/predefined-arch-macros.c b/test/Preprocessor/predefined-arch-macros.c index 14fc49478af5..66a96e431fc9 100644 --- a/test/Preprocessor/predefined-arch-macros.c +++ b/test/Preprocessor/predefined-arch-macros.c @@ -425,6 +425,8 @@ // CHECK_COREI7_AVX_M32: #define __SSE4_2__ 1 // CHECK_COREI7_AVX_M32: #define __SSE__ 1 // CHECK_COREI7_AVX_M32: #define __SSSE3__ 1 +// CHECK_COREI7_AVX_M32: #define __XSAVEOPT__ 1 +// CHECK_COREI7_AVX_M32: #define __XSAVE__ 1 // CHECK_COREI7_AVX_M32: #define __corei7 1 // CHECK_COREI7_AVX_M32: #define __corei7__ 1 // CHECK_COREI7_AVX_M32: #define __i386 1 @@ -448,6 +450,8 @@ // CHECK_COREI7_AVX_M64: #define __SSE_MATH__ 1 // CHECK_COREI7_AVX_M64: #define __SSE__ 1 // CHECK_COREI7_AVX_M64: #define __SSSE3__ 1 +// CHECK_COREI7_AVX_M64: #define __XSAVEOPT__ 1 +// CHECK_COREI7_AVX_M64: #define __XSAVE__ 1 // CHECK_COREI7_AVX_M64: #define __amd64 1 // CHECK_COREI7_AVX_M64: #define __amd64__ 1 // CHECK_COREI7_AVX_M64: #define __corei7 1 @@ -471,6 +475,8 @@ // CHECK_CORE_AVX_I_M32: #define __SSE4_2__ 1 // CHECK_CORE_AVX_I_M32: #define __SSE__ 1 // CHECK_CORE_AVX_I_M32: #define __SSSE3__ 1 +// CHECK_CORE_AVX_I_M32: #define __XSAVEOPT__ 1 +// CHECK_CORE_AVX_I_M32: #define __XSAVE__ 1 // CHECK_CORE_AVX_I_M32: #define __corei7 1 // CHECK_CORE_AVX_I_M32: #define __corei7__ 1 // CHECK_CORE_AVX_I_M32: #define __i386 1 @@ -494,6 +500,8 @@ // CHECK_CORE_AVX_I_M64: #define __SSE_MATH__ 1 // CHECK_CORE_AVX_I_M64: #define __SSE__ 1 // CHECK_CORE_AVX_I_M64: #define __SSSE3__ 1 +// CHECK_CORE_AVX_I_M64: #define __XSAVEOPT__ 1 +// CHECK_CORE_AVX_I_M64: #define __XSAVE__ 1 // CHECK_CORE_AVX_I_M64: #define __amd64 1 // CHECK_CORE_AVX_I_M64: #define __amd64__ 1 // CHECK_CORE_AVX_I_M64: #define __corei7 1 @@ -524,6 +532,8 @@ // CHECK_CORE_AVX2_M32: #define __SSE4_2__ 1 // CHECK_CORE_AVX2_M32: #define __SSE__ 1 // CHECK_CORE_AVX2_M32: #define __SSSE3__ 1 +// CHECK_CORE_AVX2_M32: #define __XSAVEOPT__ 1 +// CHECK_CORE_AVX2_M32: #define __XSAVE__ 1 // CHECK_CORE_AVX2_M32: #define __corei7 1 // CHECK_CORE_AVX2_M32: #define __corei7__ 1 // CHECK_CORE_AVX2_M32: #define __i386 1 @@ -554,6 +564,8 @@ // CHECK_CORE_AVX2_M64: #define __SSE_MATH__ 1 // CHECK_CORE_AVX2_M64: #define __SSE__ 1 // CHECK_CORE_AVX2_M64: #define __SSSE3__ 1 +// CHECK_CORE_AVX2_M64: #define __XSAVEOPT__ 1 +// CHECK_CORE_AVX2_M64: #define __XSAVE__ 1 // CHECK_CORE_AVX2_M64: #define __amd64 1 // CHECK_CORE_AVX2_M64: #define __amd64__ 1 // CHECK_CORE_AVX2_M64: #define __corei7 1 @@ -586,6 +598,8 @@ // CHECK_BROADWELL_M32: #define __SSE4_2__ 1 // CHECK_BROADWELL_M32: #define __SSE__ 1 // CHECK_BROADWELL_M32: #define __SSSE3__ 1 +// CHECK_BROADWELL_M32: #define __XSAVEOPT__ 1 +// CHECK_BROADWELL_M32: #define __XSAVE__ 1 // CHECK_BROADWELL_M32: #define __corei7 1 // CHECK_BROADWELL_M32: #define __corei7__ 1 // CHECK_BROADWELL_M32: #define __i386 1 @@ -618,6 +632,8 @@ // CHECK_BROADWELL_M64: #define __SSE_MATH__ 1 // CHECK_BROADWELL_M64: #define __SSE__ 1 // CHECK_BROADWELL_M64: #define __SSSE3__ 1 +// CHECK_BROADWELL_M64: #define __XSAVEOPT__ 1 +// CHECK_BROADWELL_M64: #define __XSAVE__ 1 // CHECK_BROADWELL_M64: #define __amd64 1 // CHECK_BROADWELL_M64: #define __amd64__ 1 // CHECK_BROADWELL_M64: #define __corei7 1 @@ -652,6 +668,8 @@ // CHECK_KNL_M32: #define __SSE4_2__ 1 // CHECK_KNL_M32: #define __SSE__ 1 // CHECK_KNL_M32: #define __SSSE3__ 1 +// CHECK_KNL_M32: #define __XSAVEOPT__ 1 +// CHECK_KNL_M32: #define __XSAVE__ 1 // CHECK_KNL_M32: #define __i386 1 // CHECK_KNL_M32: #define __i386__ 1 // CHECK_KNL_M32: #define __knl 1 @@ -687,6 +705,8 @@ // CHECK_KNL_M64: #define __SSE_MATH__ 1 // CHECK_KNL_M64: #define __SSE__ 1 // CHECK_KNL_M64: #define __SSSE3__ 1 +// CHECK_KNL_M64: #define __XSAVEOPT__ 1 +// CHECK_KNL_M64: #define __XSAVE__ 1 // CHECK_KNL_M64: #define __amd64 1 // CHECK_KNL_M64: #define __amd64__ 1 // CHECK_KNL_M64: #define __knl 1 @@ -722,6 +742,10 @@ // CHECK_SKX_M32: #define __SSE4_2__ 1 // CHECK_SKX_M32: #define __SSE__ 1 // CHECK_SKX_M32: #define __SSSE3__ 1 +// CHECK_SKX_M32: #define __XSAVEC__ 1 +// CHECK_SKX_M32: #define __XSAVEOPT__ 1 +// CHECK_SKX_M32: #define __XSAVES__ 1 +// CHECK_SKX_M32: #define __XSAVE__ 1 // CHECK_SKX_M32: #define __i386 1 // CHECK_SKX_M32: #define __i386__ 1 // CHECK_SKX_M32: #define __skx 1 @@ -758,6 +782,10 @@ // CHECK_SKX_M64: #define __SSE_MATH__ 1 // CHECK_SKX_M64: #define __SSE__ 1 // CHECK_SKX_M64: #define __SSSE3__ 1 +// CHECK_SKX_M64: #define __XSAVEC__ 1 +// CHECK_SKX_M64: #define __XSAVEOPT__ 1 +// CHECK_SKX_M64: #define __XSAVES__ 1 +// CHECK_SKX_M64: #define __XSAVE__ 1 // CHECK_SKX_M64: #define __amd64 1 // CHECK_SKX_M64: #define __amd64__ 1 // CHECK_SKX_M64: #define __skx 1 @@ -1307,6 +1335,7 @@ // CHECK_BTVER1_M32: #define __SSE_MATH__ 1 // CHECK_BTVER1_M32: #define __SSE__ 1 // CHECK_BTVER1_M32: #define __SSSE3__ 1 +// CHECK_BTVER1_M32: #define __XSAVE__ 1 // CHECK_BTVER1_M32: #define __btver1 1 // CHECK_BTVER1_M32: #define __btver1__ 1 // CHECK_BTVER1_M32: #define __i386 1 @@ -1328,6 +1357,7 @@ // CHECK_BTVER1_M64: #define __SSE_MATH__ 1 // CHECK_BTVER1_M64: #define __SSE__ 1 // CHECK_BTVER1_M64: #define __SSSE3__ 1 +// CHECK_BTVER1_M64: #define __XSAVE__ 1 // CHECK_BTVER1_M64: #define __amd64 1 // CHECK_BTVER1_M64: #define __amd64__ 1 // CHECK_BTVER1_M64: #define __btver1 1 @@ -1356,6 +1386,8 @@ // CHECK_BTVER2_M32: #define __SSE_MATH__ 1 // CHECK_BTVER2_M32: #define __SSE__ 1 // CHECK_BTVER2_M32: #define __SSSE3__ 1 +// CHECK_BTVER2_M32: #define __XSAVEOPT__ 1 +// CHECK_BTVER2_M32: #define __XSAVE__ 1 // CHECK_BTVER2_M32: #define __btver2 1 // CHECK_BTVER2_M32: #define __btver2__ 1 // CHECK_BTVER2_M32: #define __i386 1 @@ -1382,6 +1414,8 @@ // CHECK_BTVER2_M64: #define __SSE_MATH__ 1 // CHECK_BTVER2_M64: #define __SSE__ 1 // CHECK_BTVER2_M64: #define __SSSE3__ 1 +// CHECK_BTVER2_M64: #define __XSAVEOPT__ 1 +// CHECK_BTVER2_M64: #define __XSAVE__ 1 // CHECK_BTVER2_M64: #define __amd64 1 // CHECK_BTVER2_M64: #define __amd64__ 1 // CHECK_BTVER2_M64: #define __btver2 1 @@ -1412,6 +1446,7 @@ // CHECK_BDVER1_M32: #define __SSE__ 1 // CHECK_BDVER1_M32: #define __SSSE3__ 1 // CHECK_BDVER1_M32: #define __XOP__ 1 +// CHECK_BDVER1_M32: #define __XSAVE__ 1 // CHECK_BDVER1_M32: #define __bdver1 1 // CHECK_BDVER1_M32: #define __bdver1__ 1 // CHECK_BDVER1_M32: #define __i386 1 @@ -1440,6 +1475,7 @@ // CHECK_BDVER1_M64: #define __SSE__ 1 // CHECK_BDVER1_M64: #define __SSSE3__ 1 // CHECK_BDVER1_M64: #define __XOP__ 1 +// CHECK_BDVER1_M64: #define __XSAVE__ 1 // CHECK_BDVER1_M64: #define __amd64 1 // CHECK_BDVER1_M64: #define __amd64__ 1 // CHECK_BDVER1_M64: #define __bdver1 1 @@ -1474,6 +1510,7 @@ // CHECK_BDVER2_M32: #define __SSSE3__ 1 // CHECK_BDVER2_M32: #define __TBM__ 1 // CHECK_BDVER2_M32: #define __XOP__ 1 +// CHECK_BDVER2_M32: #define __XSAVE__ 1 // CHECK_BDVER2_M32: #define __bdver2 1 // CHECK_BDVER2_M32: #define __bdver2__ 1 // CHECK_BDVER2_M32: #define __i386 1 @@ -1506,6 +1543,7 @@ // CHECK_BDVER2_M64: #define __SSSE3__ 1 // CHECK_BDVER2_M64: #define __TBM__ 1 // CHECK_BDVER2_M64: #define __XOP__ 1 +// CHECK_BDVER2_M64: #define __XSAVE__ 1 // CHECK_BDVER2_M64: #define __amd64 1 // CHECK_BDVER2_M64: #define __amd64__ 1 // CHECK_BDVER2_M64: #define __bdver2 1 @@ -1541,6 +1579,8 @@ // CHECK_BDVER3_M32: #define __SSSE3__ 1 // CHECK_BDVER3_M32: #define __TBM__ 1 // CHECK_BDVER3_M32: #define __XOP__ 1 +// CHECK_BDVER3_M32: #define __XSAVEOPT__ 1 +// CHECK_BDVER3_M32: #define __XSAVE__ 1 // CHECK_BDVER3_M32: #define __bdver3 1 // CHECK_BDVER3_M32: #define __bdver3__ 1 // CHECK_BDVER3_M32: #define __i386 1 @@ -1574,6 +1614,8 @@ // CHECK_BDVER3_M64: #define __SSSE3__ 1 // CHECK_BDVER3_M64: #define __TBM__ 1 // CHECK_BDVER3_M64: #define __XOP__ 1 +// CHECK_BDVER3_M64: #define __XSAVEOPT__ 1 +// CHECK_BDVER3_M64: #define __XSAVE__ 1 // CHECK_BDVER3_M64: #define __amd64 1 // CHECK_BDVER3_M64: #define __amd64__ 1 // CHECK_BDVER3_M64: #define __bdver3 1 @@ -1611,6 +1653,7 @@ // CHECK_BDVER4_M32: #define __SSSE3__ 1 // CHECK_BDVER4_M32: #define __TBM__ 1 // CHECK_BDVER4_M32: #define __XOP__ 1 +// CHECK_BDVER4_M32: #define __XSAVE__ 1 // CHECK_BDVER4_M32: #define __bdver4 1 // CHECK_BDVER4_M32: #define __bdver4__ 1 // CHECK_BDVER4_M32: #define __i386 1 @@ -1646,6 +1689,7 @@ // CHECK_BDVER4_M64: #define __SSSE3__ 1 // CHECK_BDVER4_M64: #define __TBM__ 1 // CHECK_BDVER4_M64: #define __XOP__ 1 +// CHECK_BDVER4_M64: #define __XSAVE__ 1 // CHECK_BDVER4_M64: #define __amd64 1 // CHECK_BDVER4_M64: #define __amd64__ 1 // CHECK_BDVER4_M64: #define __bdver4 1 @@ -1675,6 +1719,9 @@ // // CHECK_PPC_CRYPTO_M64: #define __CRYPTO__ // +// RUN: %clang -mcpu=ppc64 -E -dM %s -o - 2>&1 \ +// RUN: -target powerpc64-unknown-unknown \ +// RUN: | FileCheck %s -check-prefix=CHECK_PPC_GCC_ATOMICS // RUN: %clang -mcpu=pwr8 -E -dM %s -o - 2>&1 \ // RUN: -target powerpc64-unknown-unknown \ // RUN: | FileCheck %s -check-prefix=CHECK_PPC_GCC_ATOMICS @@ -1694,11 +1741,23 @@ // RUN: %clang -E -dM %s -o - 2>&1 \ // RUN: -target sparc-unknown-linux \ // RUN: | FileCheck %s -check-prefix=CHECK_SPARC +// RUN: %clang -mcpu=v9 -E -dM %s -o - 2>&1 \ +// RUN: -target sparc-unknown-linux \ +// RUN: | FileCheck %s -check-prefix=CHECK_SPARC-V9 // // CHECK_SPARC: #define __BIG_ENDIAN__ 1 // CHECK_SPARC: #define __sparc 1 // CHECK_SPARC: #define __sparc__ 1 +// CHECK_SPARC-NOT: #define __sparcv9 1 +// CHECK_SPARC-NOT: #define __sparcv9__ 1 // CHECK_SPARC: #define __sparcv8 1 +// CHECK_SPARC-NOT: #define __sparcv9 1 +// CHECK_SPARC-NOT: #define __sparcv9__ 1 + +// CHECK_SPARC-V9-NOT: #define __sparcv8 1 +// CHECK_SPARC-V9: #define __sparc_v9__ 1 +// CHECK_SPARC-V9: #define __sparcv9 1 +// CHECK_SPARC-V9-NOT: #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 a32f4a158c9b..1f68a082a914 100644 --- a/test/Preprocessor/predefined-macros.c +++ b/test/Preprocessor/predefined-macros.c @@ -18,8 +18,8 @@ // CHECK-MS64: #define _INTEGRAL_MAX_BITS 64 // CHECK-MS64: #define _MSC_EXTENSIONS 1 // CHECK-MS64: #define _MSC_VER 1300 -// CHECK-MS64: #define _M_AMD64 1 -// CHECK-MS64: #define _M_X64 1 +// CHECK-MS64: #define _M_AMD64 100 +// CHECK-MS64: #define _M_X64 100 // CHECK-MS64: #define _WIN64 1 // CHECK-MS64-NOT: #define __STRICT_ANSI__ // CHECK-MS64-NOT: GCC @@ -134,3 +134,15 @@ // RUN: %clang_cc1 %s -E -dM -o - -triple armv6 -target-cpu cortex-m0 \ // RUN: | FileCheck %s --check-prefix=CHECK-SYNC_CAS_ARMv6 // CHECK-SYNC_CAS_ARMv6-NOT: __GCC_HAVE_SYNC_COMPARE_AND_SWAP +// +// RUN: %clang_cc1 %s -E -dM -o - -triple mips -target-cpu mips2 \ +// RUN: | FileCheck %s --check-prefix=CHECK-SYNC_CAS_MIPS \ +// RUN: --check-prefix=CHECK-SYNC_CAS_MIPS32 +// RUN: %clang_cc1 %s -E -dM -o - -triple mips64 -target-cpu mips3 \ +// RUN: | FileCheck %s --check-prefix=CHECK-SYNC_CAS_MIPS \ +// RUN: --check-prefix=CHECK-SYNC_CAS_MIPS64 +// CHECK-SYNC_CAS_MIPS: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 +// CHECK-SYNC_CAS_MIPS: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 +// CHECK-SYNC_CAS_MIPS: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 +// CHECK-SYNC_CAS_MIPS32-NOT: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 +// CHECK-SYNC_CAS_MIPS64: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 diff --git a/test/Preprocessor/traditional-cpp.c b/test/Preprocessor/traditional-cpp.c index aa9f0f146e4c..f311be0bb593 100644 --- a/test/Preprocessor/traditional-cpp.c +++ b/test/Preprocessor/traditional-cpp.c @@ -99,8 +99,8 @@ FOO_NO_STRINGIFY(foobar) */ #define FOO_NO_PASTE(a, b) test(b##a) -FOO_NO_PASTE(foo,bar) -/* CHECK {{^}}test(bar##foo){{$}} +FOO_NO_PASTE(xxx,yyy) +/* CHECK: {{^}}test(yyy##xxx){{$}} */ #define BAR_NO_STRINGIFY(a) test(#a) diff --git a/test/Preprocessor/wasm-target-features.c b/test/Preprocessor/wasm-target-features.c new file mode 100644 index 000000000000..f4d40b1774a2 --- /dev/null +++ b/test/Preprocessor/wasm-target-features.c @@ -0,0 +1,35 @@ +// RUN: %clang -E -dM %s -o - 2>&1 \ +// RUN: -target wasm32-unknown-unknown -msimd128 \ +// RUN: | FileCheck %s -check-prefix=SIMD128 +// RUN: %clang -E -dM %s -o - 2>&1 \ +// RUN: -target wasm64-unknown-unknown -msimd128 \ +// RUN: | FileCheck %s -check-prefix=SIMD128 +// +// SIMD128:#define __wasm_simd128__ 1{{$}} +// +// RUN: %clang -E -dM %s -o - 2>&1 \ +// RUN: -target wasm32-unknown-unknown -mcpu=mvp \ +// RUN: | FileCheck %s -check-prefix=MVP +// RUN: %clang -E -dM %s -o - 2>&1 \ +// RUN: -target wasm64-unknown-unknown -mcpu=mvp \ +// RUN: | FileCheck %s -check-prefix=MVP +// +// MVP-NOT:#define __wasm_simd128__ +// +// RUN: %clang -E -dM %s -o - 2>&1 \ +// RUN: -target wasm32-unknown-unknown -mcpu=bleeding-edge \ +// RUN: | FileCheck %s -check-prefix=BLEEDING_EDGE +// RUN: %clang -E -dM %s -o - 2>&1 \ +// RUN: -target wasm64-unknown-unknown -mcpu=bleeding-edge \ +// RUN: | FileCheck %s -check-prefix=BLEEDING_EDGE +// +// BLEEDING_EDGE:#define __wasm_simd128__ 1{{$}} +// +// RUN: %clang -E -dM %s -o - 2>&1 \ +// RUN: -target wasm32-unknown-unknown -mcpu=bleeding-edge -mno-simd128 \ +// RUN: | FileCheck %s -check-prefix=BLEEDING_EDGE_NO_SIMD128 +// RUN: %clang -E -dM %s -o - 2>&1 \ +// RUN: -target wasm64-unknown-unknown -mcpu=bleeding-edge -mno-simd128 \ +// RUN: | FileCheck %s -check-prefix=BLEEDING_EDGE_NO_SIMD128 +// +// BLEEDING_EDGE_NO_SIMD128-NOT:#define __wasm_simd128__ diff --git a/test/Preprocessor/x86_target_features.c b/test/Preprocessor/x86_target_features.c index ac9e7309f452..9c4192caf3f0 100644 --- a/test/Preprocessor/x86_target_features.c +++ b/test/Preprocessor/x86_target_features.c @@ -293,3 +293,26 @@ // RDSEED: #define __RDSEED__ 1 +// RUN: %clang -target i386-unknown-unknown -march=atom -mxsave -x c -E -dM -o - %s | FileCheck --check-prefix=XSAVE %s + +// XSAVE: #define __XSAVE__ 1 + +// RUN: %clang -target i386-unknown-unknown -march=atom -mxsaveopt -x c -E -dM -o - %s | FileCheck --check-prefix=XSAVEOPT %s + +// XSAVEOPT: #define __XSAVEOPT__ 1 +// XSAVEOPT: #define __XSAVE__ 1 + +// RUN: %clang -target i386-unknown-unknown -march=atom -mxsavec -x c -E -dM -o - %s | FileCheck --check-prefix=XSAVEC %s + +// XSAVEC: #define __XSAVEC__ 1 +// XSAVEC: #define __XSAVE__ 1 + +// RUN: %clang -target i386-unknown-unknown -march=atom -mxsaves -x c -E -dM -o - %s | FileCheck --check-prefix=XSAVES %s + +// XSAVES: #define __XSAVES__ 1 +// XSAVES: #define __XSAVE__ 1 + +// RUN: %clang -target i386-unknown-unknown -march=atom -mxsaveopt -mno-xsave -x c -E -dM -o - %s | FileCheck --check-prefix=NOXSAVE %s + +// NOXSAVE-NOT: #define __XSAVEOPT__ 1 +// NOXSAVE-NOT: #define __XSAVE__ 1 |
