diff options
Diffstat (limited to 'test/Preprocessor')
29 files changed, 1488 insertions, 340 deletions
diff --git a/test/Preprocessor/Inputs/cycle/a.h b/test/Preprocessor/Inputs/cycle/a.h new file mode 100644 index 000000000000..dd3ef35d61fc --- /dev/null +++ b/test/Preprocessor/Inputs/cycle/a.h @@ -0,0 +1,8 @@ +// Presence of 2 inclusion cycles +// b.h -> a.h -> b.h -> ... +// c.h -> a.h -> c.h -> ... +// makes it unfeasible to reach max inclusion depth in all possible ways. Need +// to stop earlier. + +#include "b.h" +#include "c.h" diff --git a/test/Preprocessor/Inputs/cycle/b.h b/test/Preprocessor/Inputs/cycle/b.h new file mode 100644 index 000000000000..2243de1baf9a --- /dev/null +++ b/test/Preprocessor/Inputs/cycle/b.h @@ -0,0 +1 @@ +#include "a.h" diff --git a/test/Preprocessor/Inputs/cycle/c.h b/test/Preprocessor/Inputs/cycle/c.h new file mode 100644 index 000000000000..2243de1baf9a --- /dev/null +++ b/test/Preprocessor/Inputs/cycle/c.h @@ -0,0 +1 @@ +#include "a.h" diff --git a/test/Preprocessor/Inputs/headermap-rel/foo.hmap b/test/Preprocessor/Inputs/headermap-rel/foo.hmap Binary files differdeleted file mode 100644 index 783c64e67bb8..000000000000 --- a/test/Preprocessor/Inputs/headermap-rel/foo.hmap +++ /dev/null diff --git a/test/Preprocessor/Inputs/headermap-rel/foo.hmap.json b/test/Preprocessor/Inputs/headermap-rel/foo.hmap.json new file mode 100644 index 000000000000..ccfd911f0f7f --- /dev/null +++ b/test/Preprocessor/Inputs/headermap-rel/foo.hmap.json @@ -0,0 +1,6 @@ +{ + "mappings" : + { + "Foo.h" : "Foo/Foo.h" + } +} diff --git a/test/Preprocessor/Inputs/headermap-rel2/project-headers.hmap b/test/Preprocessor/Inputs/headermap-rel2/project-headers.hmap Binary files differdeleted file mode 100644 index a0770fb25124..000000000000 --- a/test/Preprocessor/Inputs/headermap-rel2/project-headers.hmap +++ /dev/null diff --git a/test/Preprocessor/Inputs/headermap-rel2/project-headers.hmap.json b/test/Preprocessor/Inputs/headermap-rel2/project-headers.hmap.json new file mode 100644 index 000000000000..e03703b1bb06 --- /dev/null +++ b/test/Preprocessor/Inputs/headermap-rel2/project-headers.hmap.json @@ -0,0 +1,6 @@ +{ + "mappings" : + { + "someheader.h" : "Product/someheader.h" + } +} diff --git a/test/Preprocessor/Inputs/nonportable-hmaps/foo.hmap b/test/Preprocessor/Inputs/nonportable-hmaps/foo.hmap Binary files differdeleted file mode 100644 index 9036f208711c..000000000000 --- a/test/Preprocessor/Inputs/nonportable-hmaps/foo.hmap +++ /dev/null diff --git a/test/Preprocessor/Inputs/nonportable-hmaps/foo.hmap.json b/test/Preprocessor/Inputs/nonportable-hmaps/foo.hmap.json new file mode 100644 index 000000000000..c69f1df77253 --- /dev/null +++ b/test/Preprocessor/Inputs/nonportable-hmaps/foo.hmap.json @@ -0,0 +1,6 @@ +{ + "mappings" : + { + "Foo/Foo.h" : "headers/foo/Foo.h" + } +} diff --git a/test/Preprocessor/aarch64-target-features.c b/test/Preprocessor/aarch64-target-features.c index 836d29866efe..92df0004e906 100644 --- a/test/Preprocessor/aarch64-target-features.c +++ b/test/Preprocessor/aarch64-target-features.c @@ -38,6 +38,7 @@ // CHECK-NOT: __ARM_SIZEOF_MINIMAL_ENUM 1 // CHECK-NOT: __ARM_SIZEOF_WCHAR_T 2 // CHECK-NOT: __ARM_FEATURE_SVE +// CHECK-NOT: __ARM_FEATURE_DOTPROD // RUN: %clang -target aarch64_be-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-BIGENDIAN // CHECK-BIGENDIAN: __ARM_BIG_ENDIAN 1 @@ -89,6 +90,21 @@ // RUN: %clang -target aarch64-none-linux-gnu -march=armv8-a+sve -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-SVE %s // CHECK-SVE: __ARM_FEATURE_SVE 1 +// RUN: %clang -target aarch64-none-linux-gnu -march=armv8.2a+dotprod -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-DOTPROD %s +// CHECK-DOTPROD: __ARM_FEATURE_DOTPROD 1 + +// RUN: %clang -target aarch64-none-linux-gnueabi -march=armv8.2a+fp16 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-VECTOR-SCALAR %s +// CHECK-FULLFP16-VECTOR-SCALAR: #define __ARM_FEATURE_FP16_SCALAR_ARITHMETIC 1 +// CHECK-FULLFP16-VECTOR-SCALAR: #define __ARM_FEATURE_FP16_VECTOR_ARITHMETIC 1 +// CHECK-FULLFP16-VECTOR-SCALAR: #define __ARM_FP 0xE +// CHECK-FULLFP16-VECTOR-SCALAR: #define __ARM_FP16_FORMAT_IEEE 1 + +// RUN: %clang -target aarch64-none-linux-gnueabi -march=armv8.2a+fp16+nosimd -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-SCALAR %s +// CHECK-FULLFP16-SCALAR: #define __ARM_FEATURE_FP16_SCALAR_ARITHMETIC 1 +// CHECK-FULLFP16-SCALAR-NOT: #define __ARM_FEATURE_FP16_VECTOR_ARITHMETIC 1 +// CHECK-FULLFP16-SCALAR: #define __ARM_FP 0xE +// CHECK-FULLFP16-SCALAR: #define __ARM_FP16_FORMAT_IEEE 1 + // ================== 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" @@ -102,6 +118,7 @@ // RUN: %clang -target aarch64 -mcpu=exynos-m1 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MCPU-M1 %s // RUN: %clang -target aarch64 -mcpu=exynos-m2 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MCPU-M1 %s // RUN: %clang -target aarch64 -mcpu=exynos-m3 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MCPU-M1 %s +// RUN: %clang -target aarch64 -mcpu=exynos-m4 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MCPU-M1 %s // RUN: %clang -target aarch64 -mcpu=kryo -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MCPU-KRYO %s // RUN: %clang -target aarch64 -mcpu=thunderx2t99 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MCPU-THUNDERX2T99 %s // CHECK-MCPU-CYCLONE: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+neon" "-target-feature" "+crypto" "-target-feature" "+zcm" "-target-feature" "+zcz" diff --git a/test/Preprocessor/arm-target-features.c b/test/Preprocessor/arm-target-features.c index 43c9c7c65ff5..a982d8085028 100644 --- a/test/Preprocessor/arm-target-features.c +++ b/test/Preprocessor/arm-target-features.c @@ -5,9 +5,36 @@ // CHECK-V8A: #define __ARM_FEATURE_CRC32 1 // CHECK-V8A: #define __ARM_FEATURE_DIRECTED_ROUNDING 1 // CHECK-V8A: #define __ARM_FEATURE_NUMERIC_MAXMIN 1 -// CHECK-V8A: #define __ARM_FP 0xe -// CHECK-V8A: #define __ARM_FP16_ARGS 1 -// CHECK-V8A: #define __ARM_FP16_FORMAT_IEEE 1 +// CHECK-V8A-NOT: #define __ARM_FP 0x +// CHECK-V8A-NOT: #define __ARM_FEATURE_DOTPROD + +// RUN: %clang -target armv8a-none-linux-gnueabi -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V8A-ALLOW-FP-INSTR %s +// RUN: %clang -target armv8a-none-linux-gnueabihf -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V8A-ALLOW-FP-INSTR %s +// CHECK-V8A-ALLOW-FP-INSTR: #define __ARMEL__ 1 +// CHECK-V8A-ALLOW-FP-INSTR: #define __ARM_ARCH 8 +// CHECK-V8A-ALLOW-FP-INSTR: #define __ARM_ARCH_8A__ 1 +// CHECK-V8A-ALLOW-FP-INSTR: #define __ARM_FEATURE_CRC32 1 +// CHECK-V8A-ALLOW-FP-INSTR: #define __ARM_FEATURE_DIRECTED_ROUNDING 1 +// CHECK-V8A-ALLOW-FP-INSTR: #define __ARM_FEATURE_NUMERIC_MAXMIN 1 +// CHECK-V8A-ALLOW-FP-INSTR: #define __ARM_FP 0xe +// CHECK-V8A-ALLOW-FP-INSTR: #define __ARM_FP16_ARGS 1 +// CHECK-V8A-ALLOW-FP-INSTR: #define __ARM_FP16_FORMAT_IEEE 1 +// CHECK-V8A-ALLOW-FP-INSTR-V8A-NOT: #define __ARM_FEATURE_DOTPROD + +// RUN: %clang -target arm-none-linux-gnueabi -march=armv8.2a+fp16 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-VECTOR-SCALAR %s +// CHECK-FULLFP16-VECTOR-SCALAR: #define __ARM_FEATURE_FP16_SCALAR_ARITHMETIC 1 +// CHECK-FULLFP16-VECTOR-SCALAR: #define __ARM_FEATURE_FP16_VECTOR_ARITHMETIC 1 +// CHECK-FULLFP16-VECTOR-SCALAR: #define __ARM_FP 0xe +// CHECK-FULLFP16-VECTOR-SCALAR: #define __ARM_FP16_FORMAT_IEEE 1 + +// RUN: %clang -target arm-none-linux-gnueabi -march=armv8.2a+fp16 -mfpu=vfp4 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-FULLFP16-SCALAR %s +// CHECK-FULLFP16-SCALAR: #define __ARM_FEATURE_FP16_SCALAR_ARITHMETIC 1 +// CHECK-FULLFP16-SCALAR-NOT: #define __ARM_FEATURE_FP16_VECTOR_ARITHMETIC 1 +// CHECK-FULLFP16-SCALAR: #define __ARM_FP 0xe +// CHECK-FULLFP16-SCALAR: #define __ARM_FP16_FORMAT_IEEE 1 +// +// RUN: %clang -target arm-none-linux-gnueabi -march=armv8.2a+dotprod -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-DOTPROD %s +// CHECK-DOTPROD: #define __ARM_FEATURE_DOTPROD 1 // RUN: %clang -target armv8r-none-linux-gnu -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V8R %s // CHECK-V8R: #define __ARMEL__ 1 @@ -16,7 +43,17 @@ // CHECK-V8R: #define __ARM_FEATURE_CRC32 1 // CHECK-V8R: #define __ARM_FEATURE_DIRECTED_ROUNDING 1 // CHECK-V8R: #define __ARM_FEATURE_NUMERIC_MAXMIN 1 -// CHECK-V8R: #define __ARM_FP 0xe +// CHECK-V8R-NOT: #define __ARM_FP 0x + +// RUN: %clang -target armv8r-none-linux-gnueabi -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V8R-ALLOW-FP-INSTR %s +// RUN: %clang -target armv8r-none-linux-gnueabihf -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V8R-ALLOW-FP-INSTR %s +// CHECK-V8R-ALLOW-FP-INSTR: #define __ARMEL__ 1 +// CHECK-V8R-ALLOW-FP-INSTR: #define __ARM_ARCH 8 +// CHECK-V8R-ALLOW-FP-INSTR: #define __ARM_ARCH_8R__ 1 +// CHECK-V8R-ALLOW-FP-INSTR: #define __ARM_FEATURE_CRC32 1 +// CHECK-V8R-ALLOW-FP-INSTR: #define __ARM_FEATURE_DIRECTED_ROUNDING 1 +// CHECK-V8R-ALLOW-FP-INSTR: #define __ARM_FEATURE_NUMERIC_MAXMIN 1 +// CHECK-V8R-ALLOW-FP-INSTR: #define __ARM_FP 0xe // RUN: %clang -target armv7a-none-linux-gnu -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V7 %s // CHECK-V7: #define __ARMEL__ 1 @@ -25,14 +62,32 @@ // CHECK-V7-NOT: __ARM_FEATURE_CRC32 // CHECK-V7-NOT: __ARM_FEATURE_NUMERIC_MAXMIN // CHECK-V7-NOT: __ARM_FEATURE_DIRECTED_ROUNDING -// CHECK-V7: #define __ARM_FP 0xc +// CHECK-V7-NOT: #define __ARM_FP 0x + +// RUN: %clang -target armv7a-none-linux-gnueabi -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V7-ALLOW-FP-INSTR %s +// RUN: %clang -target armv7a-none-linux-gnueabihf -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V7-ALLOW-FP-INSTR %s +// CHECK-V7-ALLOW-FP-INSTR: #define __ARMEL__ 1 +// CHECK-V7-ALLOW-FP-INSTR: #define __ARM_ARCH 7 +// CHECK-V7-ALLOW-FP-INSTR: #define __ARM_ARCH_7A__ 1 +// CHECK-V7-ALLOW-FP-INSTR-NOT: __ARM_FEATURE_CRC32 +// CHECK-V7-ALLOW-FP-INSTR-NOT: __ARM_FEATURE_NUMERIC_MAXMIN +// CHECK-V7-ALLOW-FP-INSTR-NOT: __ARM_FEATURE_DIRECTED_ROUNDING +// CHECK-V7-ALLOW-FP-INSTR: #define __ARM_FP 0xc // RUN: %clang -target armv7ve-none-linux-gnu -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V7VE %s // CHECK-V7VE: #define __ARMEL__ 1 // CHECK-V7VE: #define __ARM_ARCH 7 // CHECK-V7VE: #define __ARM_ARCH_7VE__ 1 // CHECK-V7VE: #define __ARM_ARCH_EXT_IDIV__ 1 -// CHECK-V7VE: #define __ARM_FP 0xc +// CHECK-V7VE-NOT: #define __ARM_FP 0x + +// RUN: %clang -target armv7ve-none-linux-gnueabi -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V7VE-DEFAULT-ABI-SOFT %s +// RUN: %clang -target armv7ve-none-linux-gnueabihf -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V7VE-DEFAULT-ABI-SOFT %s +// CHECK-V7VE-DEFAULT-ABI-SOFT: #define __ARMEL__ 1 +// CHECK-V7VE-DEFAULT-ABI-SOFT: #define __ARM_ARCH 7 +// CHECK-V7VE-DEFAULT-ABI-SOFT: #define __ARM_ARCH_7VE__ 1 +// CHECK-V7VE-DEFAULT-ABI-SOFT: #define __ARM_ARCH_EXT_IDIV__ 1 +// CHECK-V7VE-DEFAULT-ABI-SOFT: #define __ARM_FP 0xc // RUN: %clang -target x86_64-apple-macosx10.10 -arch armv7s -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V7S %s // CHECK-V7S: #define __ARMEL__ 1 @@ -85,10 +140,15 @@ // RUN: %clang -target armv8a -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8A %s // RUN: %clang -target armv8a -mthumb -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8A %s -// RUN: %clang -target armv8a-eabi -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8A %s -// RUN: %clang -target armv8a-eabi -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8A %s // V8A:#define __ARM_ARCH_EXT_IDIV__ 1 -// V8A:#define __ARM_FP 0xe +// V8A-NOT:#define __ARM_FP 0x + +// RUN: %clang -target armv8a-eabi -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8A-ALLOW-FP-INSTR %s +// RUN: %clang -target armv8a-eabi -mthumb -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8A-ALLOW-FP-INSTR %s +// RUN: %clang -target armv8a-eabihf -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8A-ALLOW-FP-INSTR %s +// RUN: %clang -target armv8a-eabihf -mthumb -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8A-ALLOW-FP-INSTR %s +// V8A-ALLOW-FP-INSTR:#define __ARM_ARCH_EXT_IDIV__ 1 +// V8A-ALLOW-FP-INSTR:#define __ARM_FP 0xe // RUN: %clang -target armv8m.base-none-linux-gnu -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8M_BASELINE %s // V8M_BASELINE: #define __ARM_ARCH 8 @@ -111,9 +171,22 @@ // V8M_MAINLINE: #define __ARM_ARCH_PROFILE 'M' // V8M_MAINLINE-NOT: __ARM_FEATURE_CRC32 // V8M_MAINLINE-NOT: __ARM_FEATURE_DSP -// V8M_MAINLINE: #define __ARM_FP 0xe +// V8M_MAINLINE-NOT: #define __ARM_FP 0x // V8M_MAINLINE: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 +// RUN: %clang -target armv8m.main-none-linux-gnueabi -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8M-MAINLINE-ALLOW-FP-INSTR %s +// RUN: %clang -target armv8m.main-none-linux-gnueabihf -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8M-MAINLINE-ALLOW-FP-INSTR %s +// V8M-MAINLINE-ALLOW-FP-INSTR: #define __ARM_ARCH 8 +// V8M-MAINLINE-ALLOW-FP-INSTR: #define __ARM_ARCH_8M_MAIN__ 1 +// V8M-MAINLINE-ALLOW-FP-INSTR: #define __ARM_ARCH_EXT_IDIV__ 1 +// V8M-MAINLINE-ALLOW-FP-INSTR-NOT: __ARM_ARCH_ISA_ARM +// V8M-MAINLINE-ALLOW-FP-INSTR: #define __ARM_ARCH_ISA_THUMB 2 +// V8M-MAINLINE-ALLOW-FP-INSTR: #define __ARM_ARCH_PROFILE 'M' +// V8M-MAINLINE-ALLOW-FP-INSTR-NOT: __ARM_FEATURE_CRC32 +// V8M-MAINLINE-ALLOW-FP-INSTR-NOT: __ARM_FEATURE_DSP +// V8M-MAINLINE-ALLOW-FP-INSTR: #define __ARM_FP 0xe +// V8M-MAINLINE-ALLOW-FP-INSTR: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 + // RUN: %clang -target arm-none-linux-gnu -march=armv8-m.main+dsp -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8M_MAINLINE_DSP %s // V8M_MAINLINE_DSP: #define __ARM_ARCH 8 // V8M_MAINLINE_DSP: #define __ARM_ARCH_8M_MAIN__ 1 @@ -123,9 +196,21 @@ // V8M_MAINLINE_DSP: #define __ARM_ARCH_PROFILE 'M' // V8M_MAINLINE_DSP-NOT: __ARM_FEATURE_CRC32 // V8M_MAINLINE_DSP: #define __ARM_FEATURE_DSP 1 -// V8M_MAINLINE_DSP: #define __ARM_FP 0xe +// V8M_MAINLINE_DSP-NOT: #define __ARM_FP 0x // V8M_MAINLINE_DSP: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 +// RUN: %clang -target arm-none-linux-gnueabi -march=armv8-m.main+dsp -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=V8M-MAINLINE-DSP-ALLOW-FP-INSTR %s +// V8M-MAINLINE-DSP-ALLOW-FP-INSTR: #define __ARM_ARCH 8 +// V8M-MAINLINE-DSP-ALLOW-FP-INSTR: #define __ARM_ARCH_8M_MAIN__ 1 +// V8M-MAINLINE-DSP-ALLOW-FP-INSTR: #define __ARM_ARCH_EXT_IDIV__ 1 +// V8M-MAINLINE-DSP-ALLOW-FP-INSTR-NOT: __ARM_ARCH_ISA_ARM +// V8M-MAINLINE-DSP-ALLOW-FP-INSTR: #define __ARM_ARCH_ISA_THUMB 2 +// V8M-MAINLINE-DSP-ALLOW-FP-INSTR: #define __ARM_ARCH_PROFILE 'M' +// V8M-MAINLINE-DSP-ALLOW-FP-INSTR-NOT: __ARM_FEATURE_CRC32 +// V8M-MAINLINE-DSP-ALLOW-FP-INSTR: #define __ARM_FEATURE_DSP 1 +// V8M-MAINLINE-DSP-ALLOW-FP-INSTR: #define __ARM_FP 0xe +// V8M-MAINLINE-DSP-ALLOW-FP-INSTR: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 + // RUN: %clang -target arm-none-linux-gnu -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-DEFS %s // CHECK-DEFS:#define __ARM_PCS 1 // CHECK-DEFS:#define __ARM_SIZEOF_MINIMAL_ENUM 4 @@ -161,6 +246,8 @@ // 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 -match-full-lines --check-prefix=DEFAULTFPU-A7 %s // RUN: %clang -target armv7-none-linux-gnueabi -mthumb -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=DEFAULTFPU-A7 %s +// RUN: %clang -target armv7-none-linux-gnueabihf -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=DEFAULTFPU-A7 %s +// RUN: %clang -target armv7-none-linux-gnueabihf -mthumb -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=DEFAULTFPU-A7 %s // DEFAULTFPU-A7:#define __ARM_FP 0xe // DEFAULTFPU-A7:#define __ARM_NEON__ 1 // DEFAULTFPU-A7:#define __ARM_VFPV4__ 1 @@ -207,7 +294,7 @@ // A5T-NOT:#define __ARM_FEATURE_DSP // A5T-NOT:#define __ARM_FP 0x{{.*}} -// Test whether predefines are as expected when targeting cortex-a5. +// Test whether predefines are as expected when targeting cortex-a5i (soft FP ABI as default). // RUN: %clang -target armv7 -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A5 %s // RUN: %clang -target armv7 -mthumb -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A5 %s // A5:#define __ARM_ARCH 7 @@ -218,9 +305,21 @@ // A5-NOT: #define __ARM_FEATURE_DIRECTED_ROUNDING // A5:#define __ARM_FEATURE_DSP 1 // A5-NOT: #define __ARM_FEATURE_NUMERIC_MAXMIN -// A5:#define __ARM_FP 0xe +// A5-NOT:#define __ARM_FP 0x -// Test whether predefines are as expected when targeting cortex-a7. +// Test whether predefines are as expected when targeting cortex-a5 (softfp FP ABI as default). +// RUN: %clang -target armv7-eabi -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A5-ALLOW-FP-INSTR %s +// RUN: %clang -target armv7-eabi -mthumb -mcpu=cortex-a5 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A5-ALLOW-FP-INSTR %s +// A5-ALLOW-FP-INSTR:#define __ARM_ARCH 7 +// A5-ALLOW-FP-INSTR:#define __ARM_ARCH_7A__ 1 +// A5-ALLOW-FP-INSTR-NOT:#define __ARM_ARCH_EXT_IDIV__ +// A5-ALLOW-FP-INSTR:#define __ARM_ARCH_PROFILE 'A' +// A5-ALLOW-FP-INSTR-NOT: #define __ARM_FEATURE_DIRECTED_ROUNDING +// A5-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 +// A5-ALLOW-FP-INSTR-NOT: #define __ARM_FEATURE_NUMERIC_MAXMIN +// A5-ALLOW-FP-INSTR:#define __ARM_FP 0xe + +// Test whether predefines are as expected when targeting cortex-a7 (soft FP ABI as default). // RUN: %clang -target armv7k -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A7 %s // RUN: %clang -target armv7k -mthumb -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A7 %s // A7:#define __ARM_ARCH 7 @@ -228,7 +327,16 @@ // A7:#define __ARM_ARCH_PROFILE 'A' // A7-NOT:#define __ARM_DWARF_EH__ 1 // A7:#define __ARM_FEATURE_DSP 1 -// A7:#define __ARM_FP 0xe +// A7-NOT:#define __ARM_FP 0x + +// Test whether predefines are as expected when targeting cortex-a7 (softfp FP ABI as default). +// RUN: %clang -target armv7k-eabi -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A7-ALLOW-FP-INSTR %s +// RUN: %clang -target armv7k-eabi -mthumb -mcpu=cortex-a7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A7-ALLOW-FP-INSTR %s +// A7-ALLOW-FP-INSTR:#define __ARM_ARCH 7 +// A7-ALLOW-FP-INSTR:#define __ARM_ARCH_EXT_IDIV__ 1 +// A7-ALLOW-FP-INSTR:#define __ARM_ARCH_PROFILE 'A' +// A7-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 +// A7-ALLOW-FP-INSTR:#define __ARM_FP 0xe // Test whether predefines are as expected when targeting cortex-a7. // RUN: %clang -target x86_64-apple-darwin -arch armv7k -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV7K %s @@ -241,19 +349,33 @@ // ARMV7K:#define __ARM_PCS_VFP 1 -// Test whether predefines are as expected when targeting cortex-a8. +// Test whether predefines are as expected when targeting cortex-a8 (soft FP ABI as default). // RUN: %clang -target armv7 -mcpu=cortex-a8 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A8 %s // RUN: %clang -target armv7 -mthumb -mcpu=cortex-a8 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A8 %s // A8-NOT:#define __ARM_ARCH_EXT_IDIV__ // A8:#define __ARM_FEATURE_DSP 1 -// A8:#define __ARM_FP 0xc +// A8-NOT:#define __ARM_FP 0x + +// Test whether predefines are as expected when targeting cortex-a8 (softfp FP ABI as default). +// RUN: %clang -target armv7-eabi -mcpu=cortex-a8 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A8-ALLOW-FP-INSTR %s +// RUN: %clang -target armv7-eabi -mthumb -mcpu=cortex-a8 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A8-ALLOW-FP-INSTR %s +// A8-ALLOW-FP-INSTR-NOT:#define __ARM_ARCH_EXT_IDIV__ +// A8-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 +// A8-ALLOW-FP-INSTR:#define __ARM_FP 0xc -// Test whether predefines are as expected when targeting cortex-a9. +// Test whether predefines are as expected when targeting cortex-a9 (soft FP as default). // RUN: %clang -target armv7 -mcpu=cortex-a9 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A9 %s // RUN: %clang -target armv7 -mthumb -mcpu=cortex-a9 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A9 %s // A9-NOT:#define __ARM_ARCH_EXT_IDIV__ // A9:#define __ARM_FEATURE_DSP 1 -// A9:#define __ARM_FP 0xe +// A9-NOT:#define __ARM_FP 0x + +// Test whether predefines are as expected when targeting cortex-a9 (softfp FP as default). +// RUN: %clang -target armv7-eabi -mcpu=cortex-a9 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A9-ALLOW-FP-INSTR %s +// RUN: %clang -target armv7-eabi -mthumb -mcpu=cortex-a9 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A9-ALLOW-FP-INSTR %s +// A9-ALLOW-FP-INSTR-NOT:#define __ARM_ARCH_EXT_IDIV__ +// A9-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 +// A9-ALLOW-FP-INSTR:#define __ARM_FP 0xe // Check that -mfpu works properly for Cortex-A12 (enabled by default). @@ -269,7 +391,7 @@ // FPUNONE-A12-NOT:#define __ARM_NEON__ 1 // FPUNONE-A12-NOT:#define __ARM_VFPV4__ 1 -// Test whether predefines are as expected when targeting cortex-a12. +// Test whether predefines are as expected when targeting cortex-a12 (soft FP ABI as default). // RUN: %clang -target armv7 -mcpu=cortex-a12 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A12 %s // RUN: %clang -target armv7 -mthumb -mcpu=cortex-a12 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A12 %s // A12:#define __ARM_ARCH 7 @@ -277,14 +399,31 @@ // A12:#define __ARM_ARCH_EXT_IDIV__ 1 // A12:#define __ARM_ARCH_PROFILE 'A' // A12:#define __ARM_FEATURE_DSP 1 -// A12:#define __ARM_FP 0xe +// A12-NOT:#define __ARM_FP 0x -// Test whether predefines are as expected when targeting cortex-a15. +// Test whether predefines are as expected when targeting cortex-a12 (soft FP ABI as default). +// RUN: %clang -target armv7-eabi -mcpu=cortex-a12 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A12-ALLOW-FP-INSTR %s +// RUN: %clang -target armv7-eabi -mthumb -mcpu=cortex-a12 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A12-ALLOW-FP-INSTR %s +// A12-ALLOW-FP-INSTR:#define __ARM_ARCH 7 +// A12-ALLOW-FP-INSTR:#define __ARM_ARCH_7A__ 1 +// A12-ALLOW-FP-INSTR:#define __ARM_ARCH_EXT_IDIV__ 1 +// A12-ALLOW-FP-INSTR:#define __ARM_ARCH_PROFILE 'A' +// A12-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 +// A12-ALLOW-FP-INSTR:#define __ARM_FP 0xe + +// Test whether predefines are as expected when targeting cortex-a15 (soft FP ABI as default). // RUN: %clang -target armv7 -mcpu=cortex-a15 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A15 %s // RUN: %clang -target armv7 -mthumb -mcpu=cortex-a15 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A15 %s // A15:#define __ARM_ARCH_EXT_IDIV__ 1 // A15:#define __ARM_FEATURE_DSP 1 -// A15:#define __ARM_FP 0xe +// A15-NOT:#define __ARM_FP 0x + +// Test whether predefines are as expected when targeting cortex-a15 (softfp ABI as default). +// RUN: %clang -target armv7-eabi -mcpu=cortex-a15 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A15-ALLOW-FP-INSTR %s +// RUN: %clang -target armv7-eabi -mthumb -mcpu=cortex-a15 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A15-ALLOW-FP-INSTR %s +// A15-ALLOW-FP-INSTR:#define __ARM_ARCH_EXT_IDIV__ 1 +// A15-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 +// A15-ALLOW-FP-INSTR:#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 -match-full-lines --check-prefix=DEFAULTFPU-A17 %s @@ -299,7 +438,7 @@ // FPUNONE-A17-NOT:#define __ARM_NEON__ 1 // FPUNONE-A17-NOT:#define __ARM_VFPV4__ 1 -// Test whether predefines are as expected when targeting cortex-a17. +// Test whether predefines are as expected when targeting cortex-a17 (soft FP ABI as default). // RUN: %clang -target armv7 -mcpu=cortex-a17 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A17 %s // RUN: %clang -target armv7 -mthumb -mcpu=cortex-a17 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A17 %s // A17:#define __ARM_ARCH 7 @@ -307,16 +446,33 @@ // A17:#define __ARM_ARCH_EXT_IDIV__ 1 // A17:#define __ARM_ARCH_PROFILE 'A' // A17:#define __ARM_FEATURE_DSP 1 -// A17:#define __ARM_FP 0xe +// A17-NOT:#define __ARM_FP 0x -// Test whether predefines are as expected when targeting swift. +// Test whether predefines are as expected when targeting cortex-a17 (softfp FP ABI as default). +// RUN: %clang -target armv7-eabi -mcpu=cortex-a17 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A17-ALLOW-FP-INSTR %s +// RUN: %clang -target armv7-eabi -mthumb -mcpu=cortex-a17 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=A17-ALLOW-FP-INSTR %s +// A17-ALLOW-FP-INSTR:#define __ARM_ARCH 7 +// A17-ALLOW-FP-INSTR:#define __ARM_ARCH_7A__ 1 +// A17-ALLOW-FP-INSTR:#define __ARM_ARCH_EXT_IDIV__ 1 +// A17-ALLOW-FP-INSTR:#define __ARM_ARCH_PROFILE 'A' +// A17-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 +// A17-ALLOW-FP-INSTR:#define __ARM_FP 0xe + +// Test whether predefines are as expected when targeting swift (soft FP ABI as default). // RUN: %clang -target armv7s -mcpu=swift -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=SWIFT %s // RUN: %clang -target armv7s -mthumb -mcpu=swift -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=SWIFT %s // SWIFT:#define __ARM_ARCH_EXT_IDIV__ 1 // SWIFT:#define __ARM_FEATURE_DSP 1 -// SWIFT:#define __ARM_FP 0xe +// SWIFT-NOT:#define __ARM_FP 0xxE + +// Test whether predefines are as expected when targeting swift (softfp FP ABI as default). +// RUN: %clang -target armv7s-eabi -mcpu=swift -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=SWIFT-ALLOW-FP-INSTR %s +// RUN: %clang -target armv7s-eabi -mthumb -mcpu=swift -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=SWIFT-ALLOW-FP-INSTR %s +// SWIFT-ALLOW-FP-INSTR:#define __ARM_ARCH_EXT_IDIV__ 1 +// SWIFT-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 +// SWIFT-ALLOW-FP-INSTR:#define __ARM_FP 0xe -// Test whether predefines are as expected when targeting ARMv8-A Cortex implementations +// Test whether predefines are as expected when targeting ARMv8-A Cortex implementations (soft FP ABI as default) // RUN: %clang -target armv8 -mcpu=cortex-a32 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s // RUN: %clang -target armv8 -mthumb -mcpu=cortex-a32 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s // RUN: %clang -target armv8 -mcpu=cortex-a35 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s @@ -329,9 +485,44 @@ // RUN: %clang -target armv8 -mthumb -mcpu=cortex-a72 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s // RUN: %clang -target armv8 -mcpu=cortex-a73 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s // RUN: %clang -target armv8 -mthumb -mcpu=cortex-a73 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s +// +// RUN: %clang -target armv8 -mcpu=exynos-m1 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s +// RUN: %clang -target armv8 -mthumb -mcpu=exynos-m1 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s +// RUN: %clang -target armv8 -mcpu=exynos-m2 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s +// RUN: %clang -target armv8 -mthumb -mcpu=exynos-m2 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s +// RUN: %clang -target armv8 -mcpu=exynos-m3 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s +// RUN: %clang -target armv8 -mthumb -mcpu=exynos-m3 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s +// RUN: %clang -target armv8 -mcpu=exynos-m4 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s +// RUN: %clang -target armv8 -mthumb -mcpu=exynos-m4 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8 %s // ARMV8:#define __ARM_ARCH_EXT_IDIV__ 1 // ARMV8:#define __ARM_FEATURE_DSP 1 -// ARMV8:#define __ARM_FP 0xe +// ARMV8-NOT:#define __ARM_FP 0x + +// Test whether predefines are as expected when targeting ARMv8-A Cortex implementations (softfp FP ABI as default) +// RUN: %clang -target armv8-eabi -mcpu=cortex-a32 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s +// RUN: %clang -target armv8-eabi -mthumb -mcpu=cortex-a32 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s +// RUN: %clang -target armv8-eabi -mcpu=cortex-a35 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s +// RUN: %clang -target armv8-eabi -mthumb -mcpu=cortex-a35 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s +// RUN: %clang -target armv8-eabi -mcpu=cortex-a53 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s +// RUN: %clang -target armv8-eabi -mthumb -mcpu=cortex-a53 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s +// RUN: %clang -target armv8-eabi -mcpu=cortex-a57 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s +// RUN: %clang -target armv8-eabi -mthumb -mcpu=cortex-a57 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s +// RUN: %clang -target armv8-eabi -mcpu=cortex-a72 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s +// RUN: %clang -target armv8-eabi -mthumb -mcpu=cortex-a72 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s +// RUN: %clang -target armv8-eabi -mcpu=cortex-a73 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s +// RUN: %clang -target armv8-eabi -mthumb -mcpu=cortex-a73 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s +// +// RUN: %clang -target armv8-eabi -mcpu=exynos-m1 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s +// RUN: %clang -target armv8-eabi -mthumb -mcpu=exynos-m1 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s +// RUN: %clang -target armv8-eabi -mcpu=exynos-m2 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s +// RUN: %clang -target armv8-eabi -mthumb -mcpu=exynos-m2 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s +// RUN: %clang -target armv8-eabi -mcpu=exynos-m3 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s +// RUN: %clang -target armv8-eabi -mthumb -mcpu=exynos-m3 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s +// RUN: %clang -target armv8-eabi -mcpu=exynos-m4 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s +// RUN: %clang -target armv8-eabi -mthumb -mcpu=exynos-m4 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=ARMV8-ALLOW-FP-INSTR %s +// ARMV8-ALLOW-FP-INSTR:#define __ARM_ARCH_EXT_IDIV__ 1 +// ARMV8-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 +// ARMV8-ALLOW-FP-INSTR:#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 -match-full-lines --check-prefix=R4-ARM %s @@ -344,32 +535,59 @@ // R4-THUMB:#define __ARM_FEATURE_DSP 1 // R4-THUMB-NOT:#define __ARM_FP 0x{{.*}} -// Test whether predefines are as expected when targeting cortex-r4f. +// Test whether predefines are as expected when targeting cortex-r4f (soft FP ABI as default). // RUN: %clang -target armv7 -mcpu=cortex-r4f -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R4F-ARM %s // R4F-ARM-NOT:#define __ARM_ARCH_EXT_IDIV__ // R4F-ARM:#define __ARM_FEATURE_DSP 1 -// R4F-ARM:#define __ARM_FP 0xc +// R4F-ARM-NOT:#define __ARM_FP 0x + +// Test whether predefines are as expected when targeting cortex-r4f (softfp FP ABI as default). +// RUN: %clang -target armv7-eabi -mcpu=cortex-r4f -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R4F-ARM-ALLOW-FP-INSTR %s +// R4F-ARM-ALLOW-FP-INSTR-NOT:#define __ARM_ARCH_EXT_IDIV__ +// R4F-ARM-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 +// R4F-ARM-ALLOW-FP-INSTR:#define __ARM_FP 0xc // RUN: %clang -target armv7 -mthumb -mcpu=cortex-r4f -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R4F-THUMB %s // R4F-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1 // R4F-THUMB:#define __ARM_FEATURE_DSP 1 -// R4F-THUMB:#define __ARM_FP 0xc +// R4F-THUMB-NOT:#define __ARM_FP 0x + +// RUN: %clang -target armv7-eabi -mthumb -mcpu=cortex-r4f -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R4F-THUMB-ALLOW-FP-INSTR %s +// R4F-THUMB-ALLOW-FP-INSTR:#define __ARM_ARCH_EXT_IDIV__ 1 +// R4F-THUMB-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 +// R4F-THUMB-ALLOW-FP-INSTR:#define __ARM_FP 0xc -// Test whether predefines are as expected when targeting cortex-r5. +// Test whether predefines are as expected when targeting cortex-r5 (soft FP ABI as default). // RUN: %clang -target armv7 -mcpu=cortex-r5 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R5 %s // RUN: %clang -target armv7 -mthumb -mcpu=cortex-r5 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R5 %s // R5:#define __ARM_ARCH_EXT_IDIV__ 1 // R5:#define __ARM_FEATURE_DSP 1 -// R5:#define __ARM_FP 0xc +// R5-NOT:#define __ARM_FP 0x -// Test whether predefines are as expected when targeting cortex-r7 and cortex-r8. +// Test whether predefines are as expected when targeting cortex-r5 (softfp FP ABI as default). +// RUN: %clang -target armv7-eabi -mcpu=cortex-r5 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R5-ALLOW-FP-INSTR %s +// RUN: %clang -target armv7-eabi -mthumb -mcpu=cortex-r5 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R5-ALLOW-FP-INSTR %s +// R5-ALLOW-FP-INSTR:#define __ARM_ARCH_EXT_IDIV__ 1 +// R5-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 +// R5-ALLOW-FP-INSTR:#define __ARM_FP 0xc + +// Test whether predefines are as expected when targeting cortex-r7 and cortex-r8 (soft FP ABI as default). // RUN: %clang -target armv7 -mcpu=cortex-r7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R7-R8 %s // RUN: %clang -target armv7 -mthumb -mcpu=cortex-r7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R7-R8 %s // RUN: %clang -target armv7 -mcpu=cortex-r8 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R7-R8 %s // RUN: %clang -target armv7 -mthumb -mcpu=cortex-r8 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R7-R8 %s // R7-R8:#define __ARM_ARCH_EXT_IDIV__ 1 // R7-R8:#define __ARM_FEATURE_DSP 1 -// R7-R8:#define __ARM_FP 0xe +// R7-R8-NOT:#define __ARM_FP 0x + +// Test whether predefines are as expected when targeting cortex-r7 and cortex-r8 (softfp FP ABI as default). +// RUN: %clang -target armv7-eabi -mcpu=cortex-r7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R7-R8-ALLOW-FP-INSTR %s +// RUN: %clang -target armv7-eabi -mthumb -mcpu=cortex-r7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R7-R8-ALLOW-FP-INSTR %s +// RUN: %clang -target armv7-eabi -mcpu=cortex-r8 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R7-R8-ALLOW-FP-INSTR %s +// RUN: %clang -target armv7-eabi -mthumb -mcpu=cortex-r8 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=R7-R8-ALLOW-FP-INSTR %s +// R7-R8-ALLOW-FP-INSTR:#define __ARM_ARCH_EXT_IDIV__ 1 +// R7-R8-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 +// R7-R8-ALLOW-FP-INSTR:#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 -match-full-lines --check-prefix=M0-THUMB %s @@ -387,18 +605,31 @@ // M3-THUMB-NOT:#define __ARM_FEATURE_DSP // M3-THUMB-NOT:#define __ARM_FP 0x{{.*}} -// Test whether predefines are as expected when targeting cortex-m4. +// Test whether predefines are as expected when targeting cortex-m4 (soft FP ABI as default). // RUN: %clang -target armv7 -mthumb -mcpu=cortex-m4 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=M4-THUMB %s // M4-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1 // M4-THUMB:#define __ARM_FEATURE_DSP 1 -// M4-THUMB:#define __ARM_FP 0x6 +// M4-THUMB-NOT:#define __ARM_FP 0x + +// Test whether predefines are as expected when targeting cortex-m4 (softfp ABI as default). +// RUN: %clang -target armv7-eabi -mthumb -mcpu=cortex-m4 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=M4-THUMB-ALLOW-FP-INSTR %s +// M4-THUMB-ALLOW-FP-INSTR:#define __ARM_ARCH_EXT_IDIV__ 1 +// M4-THUMB-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 +// M4-THUMB-ALLOW-FP-INSTR:#define __ARM_FP 0x6 -// Test whether predefines are as expected when targeting cortex-m7. +// Test whether predefines are as expected when targeting cortex-m7 (soft FP ABI as default). // RUN: %clang -target armv7 -mthumb -mcpu=cortex-m7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=M7-THUMB %s // M7-THUMB:#define __ARM_ARCH_EXT_IDIV__ 1 // M7-THUMB:#define __ARM_FEATURE_DSP 1 -// M7-THUMB:#define __ARM_FP 0xe -// M7-THUMB:#define __ARM_FPV5__ 1 +// M7-THUMB-NOT:#define __ARM_FP 0x +// M7-THUMB-NOT:#define __ARM_FPV5__ + +// Test whether predefines are as expected when targeting cortex-m7 (softfp FP ABI as default). +// RUN: %clang -target armv7-eabi -mthumb -mcpu=cortex-m7 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=M7-THUMB-ALLOW-FP-INSTR %s +// M7-THUMB-ALLOW-FP-INSTR:#define __ARM_ARCH_EXT_IDIV__ 1 +// M7-THUMB-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 +// M7-THUMB-ALLOW-FP-INSTR:#define __ARM_FP 0xe +// M7-THUMB-ALLOW-FP-INSTR:#define __ARM_FPV5__ 1 // Test whether predefines are as expected when targeting v8m cores // RUN: %clang -target arm -mcpu=cortex-m23 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=M23 %s @@ -413,6 +644,7 @@ // M23-NOT: __ARM_FP 0x{{.*}} // M23-NOT: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 +// Test whether predefines are as expected when targeting m33 (soft FP ABI as default). // RUN: %clang -target arm -mcpu=cortex-m33 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=M33 %s // M33: #define __ARM_ARCH 8 // M33: #define __ARM_ARCH_8M_MAIN__ 1 @@ -422,15 +654,35 @@ // M33: #define __ARM_ARCH_PROFILE 'M' // M33-NOT: __ARM_FEATURE_CRC32 // M33: #define __ARM_FEATURE_DSP 1 -// M33: #define __ARM_FP 0x6 +// M33-NOT: #define __ARM_FP 0x // M33: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 -// Test whether predefines are as expected when targeting krait. +// Test whether predefines are as expected when targeting m33 (softfp FP ABI as default). +// RUN: %clang -target arm-eabi -mcpu=cortex-m33 -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=M33-ALLOW-FP-INSTR %s +// M33-ALLOW-FP-INSTR: #define __ARM_ARCH 8 +// M33-ALLOW-FP-INSTR: #define __ARM_ARCH_8M_MAIN__ 1 +// M33-ALLOW-FP-INSTR: #define __ARM_ARCH_EXT_IDIV__ 1 +// M33-ALLOW-FP-INSTR-NOT: __ARM_ARCH_ISA_ARM +// M33-ALLOW-FP-INSTR: #define __ARM_ARCH_ISA_THUMB 2 +// M33-ALLOW-FP-INSTR: #define __ARM_ARCH_PROFILE 'M' +// M33-ALLOW-FP-INSTR-NOT: __ARM_FEATURE_CRC32 +// M33-ALLOW-FP-INSTR: #define __ARM_FEATURE_DSP 1 +// M33-ALLOW-FP-INSTR: #define __ARM_FP 0x6 +// M33-ALLOW-FP-INSTR: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 + +// Test whether predefines are as expected when targeting krait (soft FP as default). // RUN: %clang -target armv7 -mcpu=krait -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=KRAIT %s // RUN: %clang -target armv7 -mthumb -mcpu=krait -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=KRAIT %s // KRAIT:#define __ARM_ARCH_EXT_IDIV__ 1 // KRAIT:#define __ARM_FEATURE_DSP 1 -// KRAIT:#define __ARM_VFPV4__ 1 +// KRAIT-NOT:#define __ARM_VFPV4__ + +// Test whether predefines are as expected when targeting krait (softfp FP as default). +// RUN: %clang -target armv7-eabi -mcpu=krait -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=KRAIT-ALLOW-FP-INSTR %s +// RUN: %clang -target armv7-eabi -mthumb -mcpu=krait -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=KRAIT-ALLOW-FP-INSTR %s +// KRAIT-ALLOW-FP-INSTR:#define __ARM_ARCH_EXT_IDIV__ 1 +// KRAIT-ALLOW-FP-INSTR:#define __ARM_FEATURE_DSP 1 +// KRAIT-ALLOW-FP-INSTR:#define __ARM_VFPV4__ 1 // RUN: %clang -target armv8.1a-none-none-eabi -x c -E -dM %s -o - | FileCheck -match-full-lines --check-prefix=CHECK-V81A %s // CHECK-V81A: #define __ARM_ARCH 8 diff --git a/test/Preprocessor/cuda-types.cu b/test/Preprocessor/cuda-types.cu index 9e96f6a15e6e..4ad3e4d97aa2 100644 --- a/test/Preprocessor/cuda-types.cu +++ b/test/Preprocessor/cuda-types.cu @@ -9,40 +9,40 @@ // RUN: %clang --cuda-host-only -nocudainc -target i386-unknown-linux-gnu -x cuda -E -dM -o - /dev/null \ // RUN: | grep 'define __[^ ]*\(TYPE\|MAX\|SIZEOF|WIDTH\)\|define __GCC_ATOMIC' \ -// RUN: | grep -v '__FLT128\|__LDBL\|_LONG_DOUBLE' > %t/i386-host-defines-filtered +// RUN: | grep -v '__LDBL\|_LONG_DOUBLE' > %t/i386-host-defines-filtered // RUN: %clang --cuda-device-only -nocudainc -nocudalib -target i386-unknown-linux-gnu -x cuda -E -dM -o - /dev/null \ // RUN: | grep 'define __[^ ]*\(TYPE\|MAX\|SIZEOF|WIDTH\)\|define __GCC_ATOMIC' \ -// RUN: | grep -v '__FLT128\|__LDBL\|_LONG_DOUBLE' > %t/i386-device-defines-filtered +// RUN: | grep -v '__LDBL\|_LONG_DOUBLE' > %t/i386-device-defines-filtered // RUN: diff %t/i386-host-defines-filtered %t/i386-device-defines-filtered // RUN: %clang --cuda-host-only -nocudainc -target x86_64-unknown-linux-gnu -x cuda -E -dM -o - /dev/null \ // RUN: | grep 'define __[^ ]*\(TYPE\|MAX\|SIZEOF|WIDTH\)\|define __GCC_ATOMIC' \ -// RUN: | grep -v '__FLT128\|__LDBL\|_LONG_DOUBLE' > %t/x86_64-host-defines-filtered +// RUN: | grep -v '__LDBL\|_LONG_DOUBLE' > %t/x86_64-host-defines-filtered // RUN: %clang --cuda-device-only -nocudainc -nocudalib -target x86_64-unknown-linux-gnu -x cuda -E -dM -o - /dev/null \ // RUN: | grep 'define __[^ ]*\(TYPE\|MAX\|SIZEOF|WIDTH\)\|define __GCC_ATOMIC' \ -// RUN: | grep -v '__FLT128\|__LDBL\|_LONG_DOUBLE' > %t/x86_64-device-defines-filtered +// RUN: | grep -v '__LDBL\|_LONG_DOUBLE' > %t/x86_64-device-defines-filtered // RUN: diff %t/x86_64-host-defines-filtered %t/x86_64-device-defines-filtered // RUN: %clang --cuda-host-only -nocudainc -target powerpc64-unknown-linux-gnu -x cuda -E -dM -o - /dev/null \ // RUN: | grep 'define __[^ ]*\(TYPE\|MAX\|SIZEOF|WIDTH\)\|define __GCC_ATOMIC' \ -// RUN: | grep -v '__FLT128\|__LDBL\|_LONG_DOUBLE' > %t/powerpc64-host-defines-filtered +// RUN: | grep -v '__LDBL\|_LONG_DOUBLE' > %t/powerpc64-host-defines-filtered // RUN: %clang --cuda-device-only -nocudainc -nocudalib -target powerpc64-unknown-linux-gnu -x cuda -E -dM -o - /dev/null \ // RUN: | grep 'define __[^ ]*\(TYPE\|MAX\|SIZEOF|WIDTH\)\|define __GCC_ATOMIC' \ -// RUN: | grep -v '__FLT128\|__LDBL\|_LONG_DOUBLE' > %t/powerpc64-device-defines-filtered +// RUN: | grep -v '__LDBL\|_LONG_DOUBLE' > %t/powerpc64-device-defines-filtered // RUN: diff %t/powerpc64-host-defines-filtered %t/powerpc64-device-defines-filtered // RUN: %clang --cuda-host-only -nocudainc -target i386-windows-msvc -x cuda -E -dM -o - /dev/null \ // RUN: | grep 'define __[^ ]*\(TYPE\|MAX\|SIZEOF|WIDTH\)\|define __GCC_ATOMIC' \ -// RUN: | grep -v '__FLT128\|__LDBL\|_LONG_DOUBLE' > %t/i386-msvc-host-defines-filtered +// RUN: | grep -v '__LDBL\|_LONG_DOUBLE' > %t/i386-msvc-host-defines-filtered // RUN: %clang --cuda-device-only -nocudainc -nocudalib -target i386-windows-msvc -x cuda -E -dM -o - /dev/null \ // RUN: | grep 'define __[^ ]*\(TYPE\|MAX\|SIZEOF|WIDTH\)\|define __GCC_ATOMIC' \ -// RUN: | grep -v '__FLT128\|__LDBL\|_LONG_DOUBLE' > %t/i386-msvc-device-defines-filtered +// RUN: | grep -v '__LDBL\|_LONG_DOUBLE' > %t/i386-msvc-device-defines-filtered // RUN: diff %t/i386-msvc-host-defines-filtered %t/i386-msvc-device-defines-filtered // RUN: %clang --cuda-host-only -nocudainc -target x86_64-windows-msvc -x cuda -E -dM -o - /dev/null \ // RUN: | grep 'define __[^ ]*\(TYPE\|MAX\|SIZEOF|WIDTH\)\|define __GCC_ATOMIC' \ -// RUN: | grep -v '__FLT128\|__LDBL\|_LONG_DOUBLE' > %t/x86_64-msvc-host-defines-filtered +// RUN: | grep -v '__LDBL\|_LONG_DOUBLE' > %t/x86_64-msvc-host-defines-filtered // RUN: %clang --cuda-device-only -nocudainc -nocudalib -target x86_64-windows-msvc -x cuda -E -dM -o - /dev/null \ // RUN: | grep 'define __[^ ]*\(TYPE\|MAX\|SIZEOF|WIDTH\)\|define __GCC_ATOMIC' \ -// RUN: | grep -v '__FLT128\|__LDBL\|_LONG_DOUBLE' > %t/x86_64-msvc-device-defines-filtered +// RUN: | grep -v '__LDBL\|_LONG_DOUBLE' > %t/x86_64-msvc-device-defines-filtered // RUN: diff %t/x86_64-msvc-host-defines-filtered %t/x86_64-msvc-device-defines-filtered diff --git a/test/Preprocessor/has_include.c b/test/Preprocessor/has_include.c index ad7329390ef6..af1f6b8414e1 100644 --- a/test/Preprocessor/has_include.c +++ b/test/Preprocessor/has_include.c @@ -93,19 +93,19 @@ // Try as non-preprocessor directives void foo( void ) { - __has_include_next("stdint.h") // expected-warning {{#include_next in primary source file}} expected-error {{__has_include_next must be used within a preprocessing directive}} - __has_include("stdint.h") // expected-error {{__has_include must be used within a preprocessing directive}} + __has_include_next("stdint.h") // expected-warning {{#include_next in primary source file}} expected-error {{'__has_include_next' must be used within a preprocessing directive}} + __has_include("stdint.h") // expected-error {{'__has_include' must be used within a preprocessing directive}} } -MACRO1 // expected-error {{__has_include must be used within a preprocessing directive}} +MACRO1 // expected-error {{'__has_include' must be used within a preprocessing directive}} #if 1 -MACRO1 // expected-error {{__has_include must be used within a preprocessing directive}} +MACRO1 // expected-error {{'__has_include' must be used within a preprocessing directive}} #endif #if 0 #elif 1 -MACRO1 // expected-error {{__has_include must be used within a preprocessing directive}} +MACRO1 // expected-error {{'__has_include' must be used within a preprocessing directive}} #endif #if 0 @@ -148,7 +148,7 @@ MACRO1 // This should be fine because it is never actually reached #if __has_include(stdint.h>) #endif -// expected-error@+1 {{__has_include must be used within a preprocessing directive}} +// expected-error@+1 {{'__has_include' must be used within a preprocessing directive}} __has_include // expected-error@+1 {{missing ')' after '__has_include'}} // expected-error@+1 {{expected value in expression}} // expected-note@+1 {{to match this '('}} diff --git a/test/Preprocessor/headermap-rel.c b/test/Preprocessor/headermap-rel.c index 38500a70f697..db57534c1c7f 100644 --- a/test/Preprocessor/headermap-rel.c +++ b/test/Preprocessor/headermap-rel.c @@ -1,8 +1,6 @@ - -// This uses a headermap with this entry: -// Foo.h -> Foo/Foo.h - -// RUN: %clang_cc1 -E %s -o %t.i -I %S/Inputs/headermap-rel/foo.hmap -F %S/Inputs/headermap-rel +// RUN: rm -f %t.hmap +// RUN: %hmaptool write %S/Inputs/headermap-rel/foo.hmap.json %t.hmap +// RUN: %clang_cc1 -E %s -o %t.i -I %t.hmap -F %S/Inputs/headermap-rel // RUN: FileCheck %s -input-file %t.i // CHECK: Foo.h is parsed diff --git a/test/Preprocessor/headermap-rel2.c b/test/Preprocessor/headermap-rel2.c index d61f3385b22d..83e89f0a492e 100644 --- a/test/Preprocessor/headermap-rel2.c +++ b/test/Preprocessor/headermap-rel2.c @@ -1,8 +1,7 @@ -// This uses a headermap with this entry: -// someheader.h -> Product/someheader.h - -// RUN: %clang_cc1 -v -fsyntax-only %s -iquote %S/Inputs/headermap-rel2/project-headers.hmap -isystem %S/Inputs/headermap-rel2/system/usr/include -I %S/Inputs/headermap-rel2 -H -// RUN: %clang_cc1 -fsyntax-only %s -iquote %S/Inputs/headermap-rel2/project-headers.hmap -isystem %S/Inputs/headermap-rel2/system/usr/include -I %S/Inputs/headermap-rel2 -H 2> %t.out +// RUN: rm -f %t.hmap +// RUN: %hmaptool write %S/Inputs/headermap-rel2/project-headers.hmap.json %t.hmap +// RUN: %clang_cc1 -v -fsyntax-only %s -iquote %t.hmap -isystem %S/Inputs/headermap-rel2/system/usr/include -I %S/Inputs/headermap-rel2 -H +// RUN: %clang_cc1 -fsyntax-only %s -iquote %t.hmap -isystem %S/Inputs/headermap-rel2/system/usr/include -I %S/Inputs/headermap-rel2 -H 2> %t.out // RUN: FileCheck %s -input-file %t.out // CHECK: Product/someheader.h diff --git a/test/Preprocessor/include-cycle.c b/test/Preprocessor/include-cycle.c new file mode 100644 index 000000000000..52fcfbd27ad8 --- /dev/null +++ b/test/Preprocessor/include-cycle.c @@ -0,0 +1,5 @@ +// RUN: not %clang_cc1 -E -I%S/Inputs -ferror-limit 20 %s + +// Test that preprocessing terminates even if we have inclusion cycles. + +#include "cycle/a.h" diff --git a/test/Preprocessor/init.c b/test/Preprocessor/init.c index 51e1233456b8..68d057d87b08 100644 --- a/test/Preprocessor/init.c +++ b/test/Preprocessor/init.c @@ -724,21 +724,21 @@ // AARCH64-NETBSD:#define __INT32_FMTi__ "i" // AARCH64-NETBSD:#define __INT32_MAX__ 2147483647 // AARCH64-NETBSD:#define __INT32_TYPE__ int -// AARCH64-NETBSD:#define __INT64_C_SUFFIX__ LL -// AARCH64-NETBSD:#define __INT64_FMTd__ "lld" -// AARCH64-NETBSD:#define __INT64_FMTi__ "lli" -// AARCH64-NETBSD:#define __INT64_MAX__ 9223372036854775807LL -// AARCH64-NETBSD:#define __INT64_TYPE__ long long int +// AARCH64-NETBSD:#define __INT64_C_SUFFIX__ L +// AARCH64-NETBSD:#define __INT64_FMTd__ "ld" +// AARCH64-NETBSD:#define __INT64_FMTi__ "li" +// AARCH64-NETBSD:#define __INT64_MAX__ 9223372036854775807L +// AARCH64-NETBSD:#define __INT64_TYPE__ long int // AARCH64-NETBSD:#define __INT8_C_SUFFIX__ // AARCH64-NETBSD:#define __INT8_FMTd__ "hhd" // AARCH64-NETBSD:#define __INT8_FMTi__ "hhi" // AARCH64-NETBSD:#define __INT8_MAX__ 127 // AARCH64-NETBSD:#define __INT8_TYPE__ signed char -// AARCH64-NETBSD:#define __INTMAX_C_SUFFIX__ LL -// AARCH64-NETBSD:#define __INTMAX_FMTd__ "lld" -// AARCH64-NETBSD:#define __INTMAX_FMTi__ "lli" -// AARCH64-NETBSD:#define __INTMAX_MAX__ 9223372036854775807LL -// AARCH64-NETBSD:#define __INTMAX_TYPE__ long long int +// AARCH64-NETBSD:#define __INTMAX_C_SUFFIX__ L +// AARCH64-NETBSD:#define __INTMAX_FMTd__ "ld" +// AARCH64-NETBSD:#define __INTMAX_FMTi__ "li" +// AARCH64-NETBSD:#define __INTMAX_MAX__ 9223372036854775807L +// AARCH64-NETBSD:#define __INTMAX_TYPE__ long int // AARCH64-NETBSD:#define __INTMAX_WIDTH__ 64 // AARCH64-NETBSD:#define __INTPTR_FMTd__ "ld" // AARCH64-NETBSD:#define __INTPTR_FMTi__ "li" @@ -824,15 +824,15 @@ // AARCH64-NETBSD:#define __UINT32_C_SUFFIX__ U // AARCH64-NETBSD:#define __UINT32_MAX__ 4294967295U // AARCH64-NETBSD:#define __UINT32_TYPE__ unsigned int -// AARCH64-NETBSD:#define __UINT64_C_SUFFIX__ ULL -// AARCH64-NETBSD:#define __UINT64_MAX__ 18446744073709551615ULL -// AARCH64-NETBSD:#define __UINT64_TYPE__ long long unsigned int +// AARCH64-NETBSD:#define __UINT64_C_SUFFIX__ UL +// AARCH64-NETBSD:#define __UINT64_MAX__ 18446744073709551615UL +// AARCH64-NETBSD:#define __UINT64_TYPE__ long unsigned int // AARCH64-NETBSD:#define __UINT8_C_SUFFIX__ // AARCH64-NETBSD:#define __UINT8_MAX__ 255 // AARCH64-NETBSD:#define __UINT8_TYPE__ unsigned char -// AARCH64-NETBSD:#define __UINTMAX_C_SUFFIX__ ULL -// AARCH64-NETBSD:#define __UINTMAX_MAX__ 18446744073709551615ULL -// AARCH64-NETBSD:#define __UINTMAX_TYPE__ long long unsigned int +// AARCH64-NETBSD:#define __UINTMAX_C_SUFFIX__ UL +// AARCH64-NETBSD:#define __UINTMAX_MAX__ 18446744073709551615UL +// AARCH64-NETBSD:#define __UINTMAX_TYPE__ long unsigned int // AARCH64-NETBSD:#define __UINTMAX_WIDTH__ 64 // AARCH64-NETBSD:#define __UINTPTR_MAX__ 18446744073709551615UL // AARCH64-NETBSD:#define __UINTPTR_TYPE__ long unsigned int @@ -2652,7 +2652,7 @@ // Thumbebv7: #define __THUMB_INTERWORK__ 1 // Thumbebv7: #define __thumb2__ 1 -// RUN: %clang -E -dM -ffreestanding -target thumbv7-pc-mingw32 %s -o - | FileCheck -match-full-lines -check-prefix THUMB-MINGW %s +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=thumbv7-pc-windows-gnu -fdwarf-exceptions %s -o - | FileCheck -match-full-lines -check-prefix THUMB-MINGW %s // THUMB-MINGW:#define __ARM_DWARF_EH__ 1 @@ -6370,7 +6370,7 @@ // PPCPOWER9:#define _ARCH_PWR7 1 // PPCPOWER9:#define _ARCH_PWR9 1 // -// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-feature +float128 -target-cpu power8 -fno-signed-char < /dev/null | FileCheck -check-prefix PPC-FLOAT128 %s +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-feature +float128 -target-cpu power9 -fno-signed-char < /dev/null | FileCheck -check-prefix PPC-FLOAT128 %s // PPC-FLOAT128:#define __FLOAT128__ 1 // // RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-unknown-linux-gnu -fno-signed-char < /dev/null | FileCheck -match-full-lines -check-prefix PPC64-LINUX %s @@ -8965,6 +8965,9 @@ // PS4:#define __x86_64__ 1 // PS4:#define unix 1 // +// RUN: %clang_cc1 -x c++ -E -dM -ffreestanding -triple=x86_64-scei-ps4 < /dev/null | FileCheck -match-full-lines -check-prefix PS4-CXX %s +// PS4-CXX:#define __STDCPP_DEFAULT_NEW_ALIGNMENT__ 32UL +// // RUN: %clang_cc1 -E -dM -triple=x86_64-pc-mingw32 < /dev/null | FileCheck -match-full-lines -check-prefix X86-64-DECLSPEC %s // RUN: %clang_cc1 -E -dM -fms-extensions -triple=x86_64-unknown-mingw32 < /dev/null | FileCheck -match-full-lines -check-prefix X86-64-DECLSPEC %s // X86-64-DECLSPEC: #define __declspec{{.*}} @@ -8999,6 +9002,13 @@ // RUN: %clang_cc1 -x c++ -triple sparc-rtems-elf -E -dM < /dev/null | FileCheck -match-full-lines -check-prefix GNUSOURCE %s // GNUSOURCE:#define _GNU_SOURCE 1 // +// Check that the GNUstep Objective-C ABI defines exist and are clamped at the +// highest supported version. +// RUN: %clang_cc1 -x objective-c -triple i386-unknown-freebsd -fobjc-runtime=gnustep-1.9 -E -dM < /dev/null | FileCheck -match-full-lines -check-prefix GNUSTEP1 %s +// GNUSTEP1:#define __OBJC_GNUSTEP_RUNTIME_ABI__ 18 +// RUN: %clang_cc1 -x objective-c -triple i386-unknown-freebsd -fobjc-runtime=gnustep-2.5 -E -dM < /dev/null | FileCheck -match-full-lines -check-prefix GNUSTEP2 %s +// GNUSTEP2:#define __OBJC_GNUSTEP_RUNTIME_ABI__ 20 +// // RUN: %clang_cc1 -x c++ -std=c++98 -fno-rtti -E -dM < /dev/null | FileCheck -match-full-lines -check-prefix NORTTI %s // NORTTI: #define __GXX_ABI_VERSION {{.*}} // NORTTI-NOT:#define __GXX_RTTI @@ -9161,10 +9171,10 @@ // 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__ "d" -// WEBASSEMBLY32-NEXT:#define __INTPTR_FMTi__ "i" -// WEBASSEMBLY32-NEXT:#define __INTPTR_MAX__ 2147483647 -// WEBASSEMBLY32-NEXT:#define __INTPTR_TYPE__ int +// 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" @@ -9229,10 +9239,10 @@ // 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__ "d" -// WEBASSEMBLY32-NEXT:#define __PTRDIFF_FMTi__ "i" -// WEBASSEMBLY32-NEXT:#define __PTRDIFF_MAX__ 2147483647 -// WEBASSEMBLY32-NEXT:#define __PTRDIFF_TYPE__ int +// 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 @@ -9252,12 +9262,12 @@ // 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__ "X" -// WEBASSEMBLY32-NEXT:#define __SIZE_FMTo__ "o" -// WEBASSEMBLY32-NEXT:#define __SIZE_FMTu__ "u" -// WEBASSEMBLY32-NEXT:#define __SIZE_FMTx__ "x" -// WEBASSEMBLY32-NEXT:#define __SIZE_MAX__ 4294967295U -// WEBASSEMBLY32-NEXT:#define __SIZE_TYPE__ unsigned int +// 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__ @@ -9305,12 +9315,12 @@ // 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__ "X" -// WEBASSEMBLY32-NEXT:#define __UINTPTR_FMTo__ "o" -// WEBASSEMBLY32-NEXT:#define __UINTPTR_FMTu__ "u" -// WEBASSEMBLY32-NEXT:#define __UINTPTR_FMTx__ "x" -// WEBASSEMBLY32-NEXT:#define __UINTPTR_MAX__ 4294967295U -// WEBASSEMBLY32-NEXT:#define __UINTPTR_TYPE__ unsigned int +// 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" @@ -10003,3 +10013,420 @@ // ARM-DARWIN-BAREMETAL-64: #define __PTRDIFF_TYPE__ long int // ARM-DARWIN-BAREMETAL-64: #define __SIZE_TYPE__ long unsigned int +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=riscv32 < /dev/null \ +// RUN: | FileCheck -match-full-lines -check-prefix=RISCV32 %s +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=riscv32-unknown-linux < /dev/null \ +// RUN: | FileCheck -match-full-lines -check-prefixes=RISCV32,RISCV32-LINUX %s +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=riscv32 \ +// RUN: -fforce-enable-int128 < /dev/null | FileCheck -match-full-lines \ +// RUN: -check-prefixes=RISCV32,RISCV32-INT128 %s +// RISCV32: #define _ILP32 1 +// RISCV32: #define __ATOMIC_ACQUIRE 2 +// RISCV32: #define __ATOMIC_ACQ_REL 4 +// RISCV32: #define __ATOMIC_CONSUME 1 +// RISCV32: #define __ATOMIC_RELAXED 0 +// RISCV32: #define __ATOMIC_RELEASE 3 +// RISCV32: #define __ATOMIC_SEQ_CST 5 +// RISCV32: #define __BIGGEST_ALIGNMENT__ 16 +// RISCV32: #define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__ +// RISCV32: #define __CHAR16_TYPE__ unsigned short +// RISCV32: #define __CHAR32_TYPE__ unsigned int +// RISCV32: #define __CHAR_BIT__ 8 +// RISCV32: #define __DBL_DECIMAL_DIG__ 17 +// RISCV32: #define __DBL_DENORM_MIN__ 4.9406564584124654e-324 +// RISCV32: #define __DBL_DIG__ 15 +// RISCV32: #define __DBL_EPSILON__ 2.2204460492503131e-16 +// RISCV32: #define __DBL_HAS_DENORM__ 1 +// RISCV32: #define __DBL_HAS_INFINITY__ 1 +// RISCV32: #define __DBL_HAS_QUIET_NAN__ 1 +// RISCV32: #define __DBL_MANT_DIG__ 53 +// RISCV32: #define __DBL_MAX_10_EXP__ 308 +// RISCV32: #define __DBL_MAX_EXP__ 1024 +// RISCV32: #define __DBL_MAX__ 1.7976931348623157e+308 +// RISCV32: #define __DBL_MIN_10_EXP__ (-307) +// RISCV32: #define __DBL_MIN_EXP__ (-1021) +// RISCV32: #define __DBL_MIN__ 2.2250738585072014e-308 +// RISCV32: #define __DECIMAL_DIG__ __LDBL_DECIMAL_DIG__ +// RISCV32: #define __ELF__ 1 +// RISCV32: #define __FINITE_MATH_ONLY__ 0 +// RISCV32: #define __FLT_DECIMAL_DIG__ 9 +// RISCV32: #define __FLT_DENORM_MIN__ 1.40129846e-45F +// RISCV32: #define __FLT_DIG__ 6 +// RISCV32: #define __FLT_EPSILON__ 1.19209290e-7F +// RISCV32: #define __FLT_EVAL_METHOD__ 0 +// RISCV32: #define __FLT_HAS_DENORM__ 1 +// RISCV32: #define __FLT_HAS_INFINITY__ 1 +// RISCV32: #define __FLT_HAS_QUIET_NAN__ 1 +// RISCV32: #define __FLT_MANT_DIG__ 24 +// RISCV32: #define __FLT_MAX_10_EXP__ 38 +// RISCV32: #define __FLT_MAX_EXP__ 128 +// RISCV32: #define __FLT_MAX__ 3.40282347e+38F +// RISCV32: #define __FLT_MIN_10_EXP__ (-37) +// RISCV32: #define __FLT_MIN_EXP__ (-125) +// RISCV32: #define __FLT_MIN__ 1.17549435e-38F +// RISCV32: #define __FLT_RADIX__ 2 +// RISCV32: #define __GCC_ATOMIC_BOOL_LOCK_FREE 1 +// RISCV32: #define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 1 +// RISCV32: #define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 1 +// RISCV32: #define __GCC_ATOMIC_CHAR_LOCK_FREE 1 +// RISCV32: #define __GCC_ATOMIC_INT_LOCK_FREE 1 +// RISCV32: #define __GCC_ATOMIC_LLONG_LOCK_FREE 1 +// RISCV32: #define __GCC_ATOMIC_LONG_LOCK_FREE 1 +// RISCV32: #define __GCC_ATOMIC_POINTER_LOCK_FREE 1 +// RISCV32: #define __GCC_ATOMIC_SHORT_LOCK_FREE 1 +// RISCV32: #define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1 +// RISCV32: #define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 1 +// RISCV32: #define __GNUC_MINOR__ {{.*}} +// RISCV32: #define __GNUC_PATCHLEVEL__ {{.*}} +// RISCV32: #define __GNUC_STDC_INLINE__ 1 +// RISCV32: #define __GNUC__ {{.*}} +// RISCV32: #define __GXX_ABI_VERSION {{.*}} +// RISCV32: #define __ILP32__ 1 +// RISCV32: #define __INT16_C_SUFFIX__ +// RISCV32: #define __INT16_MAX__ 32767 +// RISCV32: #define __INT16_TYPE__ short +// RISCV32: #define __INT32_C_SUFFIX__ +// RISCV32: #define __INT32_MAX__ 2147483647 +// RISCV32: #define __INT32_TYPE__ int +// RISCV32: #define __INT64_C_SUFFIX__ LL +// RISCV32: #define __INT64_MAX__ 9223372036854775807LL +// RISCV32: #define __INT64_TYPE__ long long int +// RISCV32: #define __INT8_C_SUFFIX__ +// RISCV32: #define __INT8_MAX__ 127 +// RISCV32: #define __INT8_TYPE__ signed char +// RISCV32: #define __INTMAX_C_SUFFIX__ LL +// RISCV32: #define __INTMAX_MAX__ 9223372036854775807LL +// RISCV32: #define __INTMAX_TYPE__ long long int +// RISCV32: #define __INTMAX_WIDTH__ 64 +// RISCV32: #define __INTPTR_MAX__ 2147483647 +// RISCV32: #define __INTPTR_TYPE__ int +// RISCV32: #define __INTPTR_WIDTH__ 32 +// TODO: RISC-V GCC defines INT_FAST16 as int +// RISCV32: #define __INT_FAST16_MAX__ 32767 +// RISCV32: #define __INT_FAST16_TYPE__ short +// RISCV32: #define __INT_FAST32_MAX__ 2147483647 +// RISCV32: #define __INT_FAST32_TYPE__ int +// RISCV32: #define __INT_FAST64_MAX__ 9223372036854775807LL +// RISCV32: #define __INT_FAST64_TYPE__ long long int +// TODO: RISC-V GCC defines INT_FAST8 as int +// RISCV32: #define __INT_FAST8_MAX__ 127 +// RISCV32: #define __INT_FAST8_TYPE__ signed char +// RISCV32: #define __INT_LEAST16_MAX__ 32767 +// RISCV32: #define __INT_LEAST16_TYPE__ short +// RISCV32: #define __INT_LEAST32_MAX__ 2147483647 +// RISCV32: #define __INT_LEAST32_TYPE__ int +// RISCV32: #define __INT_LEAST64_MAX__ 9223372036854775807LL +// RISCV32: #define __INT_LEAST64_TYPE__ long long int +// RISCV32: #define __INT_LEAST8_MAX__ 127 +// RISCV32: #define __INT_LEAST8_TYPE__ signed char +// RISCV32: #define __INT_MAX__ 2147483647 +// RISCV32: #define __LDBL_DECIMAL_DIG__ 36 +// RISCV32: #define __LDBL_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966L +// RISCV32: #define __LDBL_DIG__ 33 +// RISCV32: #define __LDBL_EPSILON__ 1.92592994438723585305597794258492732e-34L +// RISCV32: #define __LDBL_HAS_DENORM__ 1 +// RISCV32: #define __LDBL_HAS_INFINITY__ 1 +// RISCV32: #define __LDBL_HAS_QUIET_NAN__ 1 +// RISCV32: #define __LDBL_MANT_DIG__ 113 +// RISCV32: #define __LDBL_MAX_10_EXP__ 4932 +// RISCV32: #define __LDBL_MAX_EXP__ 16384 +// RISCV32: #define __LDBL_MAX__ 1.18973149535723176508575932662800702e+4932L +// RISCV32: #define __LDBL_MIN_10_EXP__ (-4931) +// RISCV32: #define __LDBL_MIN_EXP__ (-16381) +// RISCV32: #define __LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L +// RISCV32: #define __LITTLE_ENDIAN__ 1 +// RISCV32: #define __LONG_LONG_MAX__ 9223372036854775807LL +// RISCV32: #define __LONG_MAX__ 2147483647L +// RISCV32: #define __NO_INLINE__ 1 +// RISCV32: #define __POINTER_WIDTH__ 32 +// RISCV32: #define __PRAGMA_REDEFINE_EXTNAME 1 +// RISCV32: #define __PTRDIFF_MAX__ 2147483647 +// RISCV32: #define __PTRDIFF_TYPE__ int +// RISCV32: #define __PTRDIFF_WIDTH__ 32 +// RISCV32: #define __SCHAR_MAX__ 127 +// RISCV32: #define __SHRT_MAX__ 32767 +// RISCV32: #define __SIG_ATOMIC_MAX__ 2147483647 +// RISCV32: #define __SIG_ATOMIC_WIDTH__ 32 +// RISCV32: #define __SIZEOF_DOUBLE__ 8 +// RISCV32: #define __SIZEOF_FLOAT__ 4 +// RISCV32-INT128: #define __SIZEOF_INT128__ 16 +// RISCV32: #define __SIZEOF_INT__ 4 +// RISCV32: #define __SIZEOF_LONG_DOUBLE__ 16 +// RISCV32: #define __SIZEOF_LONG_LONG__ 8 +// RISCV32: #define __SIZEOF_LONG__ 4 +// RISCV32: #define __SIZEOF_POINTER__ 4 +// RISCV32: #define __SIZEOF_PTRDIFF_T__ 4 +// RISCV32: #define __SIZEOF_SHORT__ 2 +// RISCV32: #define __SIZEOF_SIZE_T__ 4 +// RISCV32: #define __SIZEOF_WCHAR_T__ 4 +// RISCV32: #define __SIZEOF_WINT_T__ 4 +// RISCV32: #define __SIZE_MAX__ 4294967295U +// RISCV32: #define __SIZE_TYPE__ unsigned int +// RISCV32: #define __SIZE_WIDTH__ 32 +// RISCV32: #define __STDC_HOSTED__ 0 +// RISCV32: #define __STDC_UTF_16__ 1 +// RISCV32: #define __STDC_UTF_32__ 1 +// RISCV32: #define __STDC_VERSION__ 201112L +// RISCV32: #define __STDC__ 1 +// RISCV32: #define __UINT16_C_SUFFIX__ +// RISCV32: #define __UINT16_MAX__ 65535 +// RISCV32: #define __UINT16_TYPE__ unsigned short +// RISCV32: #define __UINT32_C_SUFFIX__ U +// RISCV32: #define __UINT32_MAX__ 4294967295U +// RISCV32: #define __UINT32_TYPE__ unsigned int +// RISCV32: #define __UINT64_C_SUFFIX__ ULL +// RISCV32: #define __UINT64_MAX__ 18446744073709551615ULL +// RISCV32: #define __UINT64_TYPE__ long long unsigned int +// RISCV32: #define __UINT8_C_SUFFIX__ +// RISCV32: #define __UINT8_MAX__ 255 +// RISCV32: #define __UINT8_TYPE__ unsigned char +// RISCV32: #define __UINTMAX_C_SUFFIX__ ULL +// RISCV32: #define __UINTMAX_MAX__ 18446744073709551615ULL +// RISCV32: #define __UINTMAX_TYPE__ long long unsigned int +// RISCV32: #define __UINTMAX_WIDTH__ 64 +// RISCV32: #define __UINTPTR_MAX__ 4294967295U +// RISCV32: #define __UINTPTR_TYPE__ unsigned int +// RISCV32: #define __UINTPTR_WIDTH__ 32 +// TODO: RISC-V GCC defines UINT_FAST16 to be unsigned int +// RISCV32: #define __UINT_FAST16_MAX__ 65535 +// RISCV32: #define __UINT_FAST16_TYPE__ unsigned short +// RISCV32: #define __UINT_FAST32_MAX__ 4294967295U +// RISCV32: #define __UINT_FAST32_TYPE__ unsigned int +// RISCV32: #define __UINT_FAST64_MAX__ 18446744073709551615ULL +// RISCV32: #define __UINT_FAST64_TYPE__ long long unsigned int +// TODO: RISC-V GCC defines UINT_FAST8 to be unsigned int +// RISCV32: #define __UINT_FAST8_MAX__ 255 +// RISCV32: #define __UINT_FAST8_TYPE__ unsigned char +// RISCV32: #define __UINT_LEAST16_MAX__ 65535 +// RISCV32: #define __UINT_LEAST16_TYPE__ unsigned short +// RISCV32: #define __UINT_LEAST32_MAX__ 4294967295U +// RISCV32: #define __UINT_LEAST32_TYPE__ unsigned int +// RISCV32: #define __UINT_LEAST64_MAX__ 18446744073709551615ULL +// RISCV32: #define __UINT_LEAST64_TYPE__ long long unsigned int +// RISCV32: #define __UINT_LEAST8_MAX__ 255 +// RISCV32: #define __UINT_LEAST8_TYPE__ unsigned char +// RISCV32: #define __USER_LABEL_PREFIX__ +// RISCV32: #define __WCHAR_MAX__ 2147483647 +// RISCV32: #define __WCHAR_TYPE__ int +// RISCV32: #define __WCHAR_WIDTH__ 32 +// RISCV32: #define __WINT_TYPE__ unsigned int +// RISCV32: #define __WINT_UNSIGNED__ 1 +// RISCV32: #define __WINT_WIDTH__ 32 +// RISCV32-LINUX: #define __gnu_linux__ 1 +// RISCV32-LINUX: #define __linux 1 +// RISCV32-LINUX: #define __linux__ 1 +// RISCV32: #define __riscv 1 +// RISCV32: #define __riscv_cmodel_medlow 1 +// RISCV32: #define __riscv_float_abi_soft 1 +// RISCV32: #define __riscv_xlen 32 +// RISCV32-LINUX: #define __unix 1 +// RISCV32-LINUX: #define __unix__ 1 +// RISCV32-LINUX: #define linux 1 +// RISCV32-LINUX: #define unix 1 + +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=riscv64 < /dev/null \ +// RUN: | FileCheck -match-full-lines -check-prefix=RISCV64 %s +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=riscv64-unknown-linux < /dev/null \ +// RUN: | FileCheck -match-full-lines -check-prefixes=RISCV64,RISCV64-LINUX %s +// RISCV64: #define _LP64 1 +// RISCV64: #define __ATOMIC_ACQUIRE 2 +// RISCV64: #define __ATOMIC_ACQ_REL 4 +// RISCV64: #define __ATOMIC_CONSUME 1 +// RISCV64: #define __ATOMIC_RELAXED 0 +// RISCV64: #define __ATOMIC_RELEASE 3 +// RISCV64: #define __ATOMIC_SEQ_CST 5 +// RISCV64: #define __BIGGEST_ALIGNMENT__ 16 +// RISCV64: #define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__ +// RISCV64: #define __CHAR16_TYPE__ unsigned short +// RISCV64: #define __CHAR32_TYPE__ unsigned int +// RISCV64: #define __CHAR_BIT__ 8 +// RISCV64: #define __DBL_DECIMAL_DIG__ 17 +// RISCV64: #define __DBL_DENORM_MIN__ 4.9406564584124654e-324 +// RISCV64: #define __DBL_DIG__ 15 +// RISCV64: #define __DBL_EPSILON__ 2.2204460492503131e-16 +// RISCV64: #define __DBL_HAS_DENORM__ 1 +// RISCV64: #define __DBL_HAS_INFINITY__ 1 +// RISCV64: #define __DBL_HAS_QUIET_NAN__ 1 +// RISCV64: #define __DBL_MANT_DIG__ 53 +// RISCV64: #define __DBL_MAX_10_EXP__ 308 +// RISCV64: #define __DBL_MAX_EXP__ 1024 +// RISCV64: #define __DBL_MAX__ 1.7976931348623157e+308 +// RISCV64: #define __DBL_MIN_10_EXP__ (-307) +// RISCV64: #define __DBL_MIN_EXP__ (-1021) +// RISCV64: #define __DBL_MIN__ 2.2250738585072014e-308 +// RISCV64: #define __DECIMAL_DIG__ __LDBL_DECIMAL_DIG__ +// RISCV64: #define __ELF__ 1 +// RISCV64: #define __FINITE_MATH_ONLY__ 0 +// RISCV64: #define __FLT_DECIMAL_DIG__ 9 +// RISCV64: #define __FLT_DENORM_MIN__ 1.40129846e-45F +// RISCV64: #define __FLT_DIG__ 6 +// RISCV64: #define __FLT_EPSILON__ 1.19209290e-7F +// RISCV64: #define __FLT_EVAL_METHOD__ 0 +// RISCV64: #define __FLT_HAS_DENORM__ 1 +// RISCV64: #define __FLT_HAS_INFINITY__ 1 +// RISCV64: #define __FLT_HAS_QUIET_NAN__ 1 +// RISCV64: #define __FLT_MANT_DIG__ 24 +// RISCV64: #define __FLT_MAX_10_EXP__ 38 +// RISCV64: #define __FLT_MAX_EXP__ 128 +// RISCV64: #define __FLT_MAX__ 3.40282347e+38F +// RISCV64: #define __FLT_MIN_10_EXP__ (-37) +// RISCV64: #define __FLT_MIN_EXP__ (-125) +// RISCV64: #define __FLT_MIN__ 1.17549435e-38F +// RISCV64: #define __FLT_RADIX__ 2 +// RISCV64: #define __GCC_ATOMIC_BOOL_LOCK_FREE 1 +// RISCV64: #define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 1 +// RISCV64: #define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 1 +// RISCV64: #define __GCC_ATOMIC_CHAR_LOCK_FREE 1 +// RISCV64: #define __GCC_ATOMIC_INT_LOCK_FREE 1 +// RISCV64: #define __GCC_ATOMIC_LLONG_LOCK_FREE 1 +// RISCV64: #define __GCC_ATOMIC_LONG_LOCK_FREE 1 +// RISCV64: #define __GCC_ATOMIC_POINTER_LOCK_FREE 1 +// RISCV64: #define __GCC_ATOMIC_SHORT_LOCK_FREE 1 +// RISCV64: #define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1 +// RISCV64: #define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 1 +// RISCV64: #define __GNUC_MINOR__ {{.*}} +// RISCV64: #define __GNUC_PATCHLEVEL__ {{.*}} +// RISCV64: #define __GNUC_STDC_INLINE__ 1 +// RISCV64: #define __GNUC__ {{.*}} +// RISCV64: #define __GXX_ABI_VERSION {{.*}} +// RISCV64: #define __INT16_C_SUFFIX__ +// RISCV64: #define __INT16_MAX__ 32767 +// RISCV64: #define __INT16_TYPE__ short +// RISCV64: #define __INT32_C_SUFFIX__ +// RISCV64: #define __INT32_MAX__ 2147483647 +// RISCV64: #define __INT32_TYPE__ int +// RISCV64: #define __INT64_C_SUFFIX__ L +// RISCV64: #define __INT64_MAX__ 9223372036854775807L +// RISCV64: #define __INT64_TYPE__ long int +// RISCV64: #define __INT8_C_SUFFIX__ +// RISCV64: #define __INT8_MAX__ 127 +// RISCV64: #define __INT8_TYPE__ signed char +// RISCV64: #define __INTMAX_C_SUFFIX__ L +// RISCV64: #define __INTMAX_MAX__ 9223372036854775807L +// RISCV64: #define __INTMAX_TYPE__ long int +// RISCV64: #define __INTMAX_WIDTH__ 64 +// RISCV64: #define __INTPTR_MAX__ 9223372036854775807L +// RISCV64: #define __INTPTR_TYPE__ long int +// RISCV64: #define __INTPTR_WIDTH__ 64 +// TODO: RISC-V GCC defines INT_FAST16 as int +// RISCV64: #define __INT_FAST16_MAX__ 32767 +// RISCV64: #define __INT_FAST16_TYPE__ short +// RISCV64: #define __INT_FAST32_MAX__ 2147483647 +// RISCV64: #define __INT_FAST32_TYPE__ int +// RISCV64: #define __INT_FAST64_MAX__ 9223372036854775807L +// RISCV64: #define __INT_FAST64_TYPE__ long int +// TODO: RISC-V GCC defines INT_FAST8 as int +// RISCV64: #define __INT_FAST8_MAX__ 127 +// RISCV64: #define __INT_FAST8_TYPE__ signed char +// RISCV64: #define __INT_LEAST16_MAX__ 32767 +// RISCV64: #define __INT_LEAST16_TYPE__ short +// RISCV64: #define __INT_LEAST32_MAX__ 2147483647 +// RISCV64: #define __INT_LEAST32_TYPE__ int +// RISCV64: #define __INT_LEAST64_MAX__ 9223372036854775807L +// RISCV64: #define __INT_LEAST64_TYPE__ long int +// RISCV64: #define __INT_LEAST8_MAX__ 127 +// RISCV64: #define __INT_LEAST8_TYPE__ signed char +// RISCV64: #define __INT_MAX__ 2147483647 +// RISCV64: #define __LDBL_DECIMAL_DIG__ 36 +// RISCV64: #define __LDBL_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966L +// RISCV64: #define __LDBL_DIG__ 33 +// RISCV64: #define __LDBL_EPSILON__ 1.92592994438723585305597794258492732e-34L +// RISCV64: #define __LDBL_HAS_DENORM__ 1 +// RISCV64: #define __LDBL_HAS_INFINITY__ 1 +// RISCV64: #define __LDBL_HAS_QUIET_NAN__ 1 +// RISCV64: #define __LDBL_MANT_DIG__ 113 +// RISCV64: #define __LDBL_MAX_10_EXP__ 4932 +// RISCV64: #define __LDBL_MAX_EXP__ 16384 +// RISCV64: #define __LDBL_MAX__ 1.18973149535723176508575932662800702e+4932L +// RISCV64: #define __LDBL_MIN_10_EXP__ (-4931) +// RISCV64: #define __LDBL_MIN_EXP__ (-16381) +// RISCV64: #define __LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L +// RISCV64: #define __LITTLE_ENDIAN__ 1 +// RISCV64: #define __LONG_LONG_MAX__ 9223372036854775807LL +// RISCV64: #define __LONG_MAX__ 9223372036854775807L +// RISCV64: #define __LP64__ 1 +// RISCV64: #define __NO_INLINE__ 1 +// RISCV64: #define __POINTER_WIDTH__ 64 +// RISCV64: #define __PRAGMA_REDEFINE_EXTNAME 1 +// RISCV64: #define __PTRDIFF_MAX__ 9223372036854775807L +// RISCV64: #define __PTRDIFF_TYPE__ long int +// RISCV64: #define __PTRDIFF_WIDTH__ 64 +// RISCV64: #define __SCHAR_MAX__ 127 +// RISCV64: #define __SHRT_MAX__ 32767 +// RISCV64: #define __SIG_ATOMIC_MAX__ 2147483647 +// RISCV64: #define __SIG_ATOMIC_WIDTH__ 32 +// RISCV64: #define __SIZEOF_DOUBLE__ 8 +// RISCV64: #define __SIZEOF_FLOAT__ 4 +// RISCV64: #define __SIZEOF_INT__ 4 +// RISCV64: #define __SIZEOF_LONG_DOUBLE__ 16 +// RISCV64: #define __SIZEOF_LONG_LONG__ 8 +// RISCV64: #define __SIZEOF_LONG__ 8 +// RISCV64: #define __SIZEOF_POINTER__ 8 +// RISCV64: #define __SIZEOF_PTRDIFF_T__ 8 +// RISCV64: #define __SIZEOF_SHORT__ 2 +// RISCV64: #define __SIZEOF_SIZE_T__ 8 +// RISCV64: #define __SIZEOF_WCHAR_T__ 4 +// RISCV64: #define __SIZEOF_WINT_T__ 4 +// RISCV64: #define __SIZE_MAX__ 18446744073709551615UL +// RISCV64: #define __SIZE_TYPE__ long unsigned int +// RISCV64: #define __SIZE_WIDTH__ 64 +// RISCV64: #define __STDC_HOSTED__ 0 +// RISCV64: #define __STDC_UTF_16__ 1 +// RISCV64: #define __STDC_UTF_32__ 1 +// RISCV64: #define __STDC_VERSION__ 201112L +// RISCV64: #define __STDC__ 1 +// RISCV64: #define __UINT16_C_SUFFIX__ +// RISCV64: #define __UINT16_MAX__ 65535 +// RISCV64: #define __UINT16_TYPE__ unsigned short +// RISCV64: #define __UINT32_C_SUFFIX__ U +// RISCV64: #define __UINT32_MAX__ 4294967295U +// RISCV64: #define __UINT32_TYPE__ unsigned int +// RISCV64: #define __UINT64_C_SUFFIX__ UL +// RISCV64: #define __UINT64_MAX__ 18446744073709551615UL +// RISCV64: #define __UINT64_TYPE__ long unsigned int +// RISCV64: #define __UINT8_C_SUFFIX__ +// RISCV64: #define __UINT8_MAX__ 255 +// RISCV64: #define __UINT8_TYPE__ unsigned char +// RISCV64: #define __UINTMAX_C_SUFFIX__ UL +// RISCV64: #define __UINTMAX_MAX__ 18446744073709551615UL +// RISCV64: #define __UINTMAX_TYPE__ long unsigned int +// RISCV64: #define __UINTMAX_WIDTH__ 64 +// RISCV64: #define __UINTPTR_MAX__ 18446744073709551615UL +// RISCV64: #define __UINTPTR_TYPE__ long unsigned int +// RISCV64: #define __UINTPTR_WIDTH__ 64 +// TODO: RISC-V GCC defines UINT_FAST16 to be unsigned int +// RISCV64: #define __UINT_FAST16_MAX__ 65535 +// RISCV64: #define __UINT_FAST16_TYPE__ unsigned short +// RISCV64: #define __UINT_FAST32_MAX__ 4294967295U +// RISCV64: #define __UINT_FAST32_TYPE__ unsigned int +// RISCV64: #define __UINT_FAST64_MAX__ 18446744073709551615UL +// RISCV64: #define __UINT_FAST64_TYPE__ long unsigned int +// TODO: RISC-V GCC defines UINT_FAST8 to be unsigned int +// RISCV64: #define __UINT_FAST8_MAX__ 255 +// RISCV64: #define __UINT_FAST8_TYPE__ unsigned char +// RISCV64: #define __UINT_LEAST16_MAX__ 65535 +// RISCV64: #define __UINT_LEAST16_TYPE__ unsigned short +// RISCV64: #define __UINT_LEAST32_MAX__ 4294967295U +// RISCV64: #define __UINT_LEAST32_TYPE__ unsigned int +// RISCV64: #define __UINT_LEAST64_MAX__ 18446744073709551615UL +// RISCV64: #define __UINT_LEAST64_TYPE__ long unsigned int +// RISCV64: #define __UINT_LEAST8_MAX__ 255 +// RISCV64: #define __UINT_LEAST8_TYPE__ unsigned char +// RISCV64: #define __USER_LABEL_PREFIX__ +// RISCV64: #define __WCHAR_MAX__ 2147483647 +// RISCV64: #define __WCHAR_TYPE__ int +// RISCV64: #define __WCHAR_WIDTH__ 32 +// RISCV64: #define __WINT_TYPE__ unsigned int +// RISCV64: #define __WINT_UNSIGNED__ 1 +// RISCV64: #define __WINT_WIDTH__ 32 +// RISCV64-LINUX: #define __gnu_linux__ 1 +// RISCV64-LINUX: #define __linux 1 +// RISCV64-LINUX: #define __linux__ 1 +// RISCV64: #define __riscv 1 +// RISCV64: #define __riscv_cmodel_medlow 1 +// RISCV64: #define __riscv_float_abi_soft 1 +// RISCV64: #define __riscv_xlen 64 +// RISCV64-LINUX: #define __unix 1 +// RISCV64-LINUX: #define __unix__ 1 +// RISCV64-LINUX: #define linux 1 +// RISCV64-LINUX: #define unix 1 diff --git a/test/Preprocessor/macro-multiline.c b/test/Preprocessor/macro-multiline.c index 72a5d20e523f..664c37cd02a4 100644 --- a/test/Preprocessor/macro-multiline.c +++ b/test/Preprocessor/macro-multiline.c @@ -1,4 +1,4 @@ -// RUN: printf -- "-DX=A\nTHIS_SHOULD_NOT_EXIST_IN_THE_OUTPUT" | xargs -0 %clang -E %s | FileCheck -strict-whitespace %s +// RUN: printf -- "-DX=A\\\\\nTHIS_SHOULD_NOT_EXIST_IN_THE_OUTPUT\n" | xargs %clang -E %s | FileCheck -strict-whitespace %s // Per GCC -D semantics, \n and anything that follows is ignored. diff --git a/test/Preprocessor/macro_paste_commaext.c b/test/Preprocessor/macro_paste_commaext.c index 60418effe7c3..f3e6f9d40942 100644 --- a/test/Preprocessor/macro_paste_commaext.c +++ b/test/Preprocessor/macro_paste_commaext.c @@ -1,9 +1,9 @@ // RUN: %clang_cc1 %s -E | FileCheck --strict-whitespace --match-full-lines %s // In the following tests, note that the output is sensitive to the -// whitespace *preceeding* the varargs argument, as well as to +// whitespace *preceding* the varargs argument, as well as to // interior whitespace. AFAIK, this is the only case where whitespace -// preceeding an argument matters, and might be considered a bug in +// preceding an argument matters, and might be considered a bug in // GCC. Nevertheless, since this feature is a GCC extension in the // first place, we'll follow along. diff --git a/test/Preprocessor/nonportable-include-with-hmap.c b/test/Preprocessor/nonportable-include-with-hmap.c index fc958e7e5e3f..bbbd669a0f39 100644 --- a/test/Preprocessor/nonportable-include-with-hmap.c +++ b/test/Preprocessor/nonportable-include-with-hmap.c @@ -1,5 +1,7 @@ +// RUN: rm -f %t.hmap +// RUN: %hmaptool write %S/Inputs/nonportable-hmaps/foo.hmap.json %t.hmap // RUN: %clang_cc1 -Eonly \ -// RUN: -I%S/Inputs/nonportable-hmaps/foo.hmap \ +// RUN: -I%t.hmap \ // RUN: -I%S/Inputs/nonportable-hmaps \ // RUN: %s -verify // diff --git a/test/Preprocessor/pragma-comment-linux.c b/test/Preprocessor/pragma-comment-linux.c new file mode 100644 index 000000000000..fcac049f46e8 --- /dev/null +++ b/test/Preprocessor/pragma-comment-linux.c @@ -0,0 +1,5 @@ +// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fsyntax-only -verify %s -Wunknown-pragmas + +#pragma comment(linker, "") +// expected-warning@-1 {{'#pragma comment linker' ignored}} + diff --git a/test/Preprocessor/pragma_microsoft.c b/test/Preprocessor/pragma_microsoft.c index b256b2bee6cf..4105e41af44b 100644 --- a/test/Preprocessor/pragma_microsoft.c +++ b/test/Preprocessor/pragma_microsoft.c @@ -1,5 +1,5 @@ -// RUN: %clang_cc1 %s -fsyntax-only -verify -fms-extensions -Wunknown-pragmas -// RUN: not %clang_cc1 %s -fms-extensions -E | FileCheck %s +// RUN: %clang_cc1 -triple i686-unknown-windows-msvc %s -fsyntax-only -verify -fms-extensions -Wunknown-pragmas +// RUN: not %clang_cc1 -triple i686-unknown-windows-msvc %s -fms-extensions -E | FileCheck %s // REQUIRES: non-ps4-sdk // rdar://6495941 @@ -190,3 +190,11 @@ void g() {} #pragma intrinsic(asdf) // no-warning #pragma clang diagnostic pop #pragma intrinsic(asdf) // expected-warning {{'asdf' is not a recognized builtin; consider including <intrin.h>}} + +#pragma optimize // expected-warning{{missing '(' after '#pragma optimize'}} +#pragma optimize( // expected-warning{{expected string literal in '#pragma optimize'}} +#pragma optimize(a // expected-warning{{expected string literal in '#pragma optimize'}} +#pragma optimize("g" // expected-warning{{expected ',' in '#pragma optimize'}} +#pragma optimize("g", // expected-warning{{missing argument to '#pragma optimize'; expected 'on' or 'off'}} +#pragma optimize("g",xyz // expected-warning{{unexpected argument 'xyz' to '#pragma optimize'; expected 'on' or 'off'}} +#pragma optimize("g",on) // expected-warning{{#pragma optimize' is not supported}} diff --git a/test/Preprocessor/pragma_unknown.c b/test/Preprocessor/pragma_unknown.c index 5578ce5b7502..81fe88cd3855 100644 --- a/test/Preprocessor/pragma_unknown.c +++ b/test/Preprocessor/pragma_unknown.c @@ -1,29 +1,45 @@ // RUN: %clang_cc1 -fsyntax-only -Wunknown-pragmas -verify %s -// RUN: %clang_cc1 -E %s | FileCheck --strict-whitespace %s +// RUN: %clang_cc1 -E %s 2>&1 | FileCheck --strict-whitespace %s // GCC doesn't expand macro args for unrecognized pragmas. #define bar xX #pragma foo bar // expected-warning {{unknown pragma ignored}} +// CHECK-NOT: unknown pragma in STDC namespace // CHECK: {{^}}#pragma foo bar{{$}} #pragma STDC FP_CONTRACT ON #pragma STDC FP_CONTRACT OFF #pragma STDC FP_CONTRACT DEFAULT #pragma STDC FP_CONTRACT IN_BETWEEN // expected-warning {{expected 'ON' or 'OFF' or 'DEFAULT' in pragma}} +// CHECK: {{^}}#pragma STDC FP_CONTRACT ON{{$}} +// CHECK: {{^}}#pragma STDC FP_CONTRACT OFF{{$}} +// CHECK: {{^}}#pragma STDC FP_CONTRACT DEFAULT{{$}} +// CHECK: {{^}}#pragma STDC FP_CONTRACT IN_BETWEEN{{$}} #pragma STDC FENV_ACCESS ON // expected-warning {{pragma STDC FENV_ACCESS ON is not supported, ignoring pragma}} #pragma STDC FENV_ACCESS OFF #pragma STDC FENV_ACCESS DEFAULT #pragma STDC FENV_ACCESS IN_BETWEEN // expected-warning {{expected 'ON' or 'OFF' or 'DEFAULT' in pragma}} +// CHECK: {{^}}#pragma STDC FENV_ACCESS ON{{$}} +// CHECK: {{^}}#pragma STDC FENV_ACCESS OFF{{$}} +// CHECK: {{^}}#pragma STDC FENV_ACCESS DEFAULT{{$}} +// CHECK: {{^}}#pragma STDC FENV_ACCESS IN_BETWEEN{{$}} #pragma STDC CX_LIMITED_RANGE ON #pragma STDC CX_LIMITED_RANGE OFF #pragma STDC CX_LIMITED_RANGE DEFAULT #pragma STDC CX_LIMITED_RANGE IN_BETWEEN // expected-warning {{expected 'ON' or 'OFF' or 'DEFAULT' in pragma}} +// CHECK: {{^}}#pragma STDC CX_LIMITED_RANGE ON{{$}} +// CHECK: {{^}}#pragma STDC CX_LIMITED_RANGE OFF{{$}} +// CHECK: {{^}}#pragma STDC CX_LIMITED_RANGE DEFAULT{{$}} +// CHECK: {{^}}#pragma STDC CX_LIMITED_RANGE IN_BETWEEN{{$}} #pragma STDC CX_LIMITED_RANGE // expected-warning {{expected 'ON' or 'OFF' or 'DEFAULT' in pragma}} #pragma STDC CX_LIMITED_RANGE ON FULL POWER // expected-warning {{expected end of directive in pragma}} +// CHECK: {{^}}#pragma STDC CX_LIMITED_RANGE{{$}} +// CHECK: {{^}}#pragma STDC CX_LIMITED_RANGE ON FULL POWER{{$}} #pragma STDC SO_GREAT // expected-warning {{unknown pragma in STDC namespace}} #pragma STDC // expected-warning {{unknown pragma in STDC namespace}} - +// CHECK: {{^}}#pragma STDC SO_GREAT{{$}} +// CHECK: {{^}}#pragma STDC{{$}} diff --git a/test/Preprocessor/predefined-arch-macros.c b/test/Preprocessor/predefined-arch-macros.c index dac137c57536..281e6780cbf5 100644 --- a/test/Preprocessor/predefined-arch-macros.c +++ b/test/Preprocessor/predefined-arch-macros.c @@ -1,5 +1,5 @@ // Begin X86/GCC/Linux tests ---------------- -// + // RUN: %clang -march=i386 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_I386_M32 @@ -11,7 +11,7 @@ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_I386_M64 // CHECK_I386_M64: error: {{.*}} -// + // RUN: %clang -march=i486 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_I486_M32 @@ -25,7 +25,7 @@ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_I486_M64 // CHECK_I486_M64: error: {{.*}} -// + // RUN: %clang -march=i586 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_I586_M32 @@ -42,7 +42,7 @@ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_I586_M64 // CHECK_I586_M64: error: {{.*}} -// + // RUN: %clang -march=pentium -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM_M32 @@ -59,7 +59,7 @@ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM_M64 // CHECK_PENTIUM_M64: error: {{.*}} -// + // RUN: %clang -march=pentium-mmx -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM_MMX_M32 @@ -79,7 +79,7 @@ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM_MMX_M64 // CHECK_PENTIUM_MMX_M64: error: {{.*}} -// + // RUN: %clang -march=winchip-c6 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_WINCHIP_C6_M32 @@ -94,7 +94,7 @@ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_WINCHIP_C6_M64 // CHECK_WINCHIP_C6_M64: error: {{.*}} -// + // RUN: %clang -march=winchip2 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_WINCHIP2_M32 @@ -110,7 +110,7 @@ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_WINCHIP2_M64 // CHECK_WINCHIP2_M64: error: {{.*}} -// + // RUN: %clang -march=c3 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_C3_M32 @@ -126,7 +126,7 @@ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_C3_M64 // CHECK_C3_M64: error: {{.*}} -// + // RUN: %clang -march=c3-2 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_C3_2_M32 @@ -146,7 +146,7 @@ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_C3_2_M64 // CHECK_C3_2_M64: error: {{.*}} -// + // RUN: %clang -march=i686 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_I686_M32 @@ -163,7 +163,7 @@ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_I686_M64 // CHECK_I686_M64: error: {{.*}} -// + // RUN: %clang -march=pentiumpro -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUMPRO_M32 @@ -180,7 +180,7 @@ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUMPRO_M64 // CHECK_PENTIUMPRO_M64: error: {{.*}} -// + // RUN: %clang -march=pentium2 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM2_M32 @@ -199,7 +199,7 @@ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM2_M64 // CHECK_PENTIUM2_M64: error: {{.*}} -// + // RUN: %clang -march=pentium3 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM3_M32 @@ -220,7 +220,7 @@ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM3_M64 // CHECK_PENTIUM3_M64: error: {{.*}} -// + // RUN: %clang -march=pentium3m -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM3M_M32 @@ -239,7 +239,7 @@ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM3M_M64 // CHECK_PENTIUM3M_M64: error: {{.*}} -// + // RUN: %clang -march=pentium-m -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM_M_M32 @@ -259,7 +259,7 @@ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM_M_M64 // CHECK_PENTIUM_M_M64: error: {{.*}} -// + // RUN: %clang -march=pentium4 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM4_M32 @@ -276,7 +276,7 @@ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM4_M64 // CHECK_PENTIUM4_M64: error: {{.*}} -// + // RUN: %clang -march=pentium4m -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM4M_M32 @@ -293,7 +293,7 @@ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM4M_M64 // CHECK_PENTIUM4M_M64: error: {{.*}} -// + // RUN: %clang -march=prescott -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PRESCOTT_M32 @@ -311,7 +311,7 @@ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PRESCOTT_M64 // CHECK_PRESCOTT_M64: error: {{.*}} -// + // RUN: %clang -march=nocona -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_NOCONA_M32 @@ -341,7 +341,7 @@ // CHECK_NOCONA_M64: #define __tune_nocona__ 1 // CHECK_NOCONA_M64: #define __x86_64 1 // CHECK_NOCONA_M64: #define __x86_64__ 1 -// + // RUN: %clang -march=core2 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CORE2_M32 @@ -356,6 +356,7 @@ // CHECK_CORE2_M32: #define __i386__ 1 // CHECK_CORE2_M32: #define __tune_core2__ 1 // CHECK_CORE2_M32: #define i386 1 + // RUN: %clang -march=core2 -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CORE2_M64 @@ -373,7 +374,7 @@ // CHECK_CORE2_M64: #define __tune_core2__ 1 // CHECK_CORE2_M64: #define __x86_64 1 // CHECK_CORE2_M64: #define __x86_64__ 1 -// + // RUN: %clang -march=corei7 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_COREI7_M32 @@ -391,6 +392,7 @@ // CHECK_COREI7_M32: #define __i386__ 1 // CHECK_COREI7_M32: #define __tune_corei7__ 1 // CHECK_COREI7_M32: #define i386 1 + // RUN: %clang -march=corei7 -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_COREI7_M64 @@ -411,7 +413,7 @@ // CHECK_COREI7_M64: #define __tune_corei7__ 1 // CHECK_COREI7_M64: #define __x86_64 1 // CHECK_COREI7_M64: #define __x86_64__ 1 -// + // RUN: %clang -march=corei7-avx -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_COREI7_AVX_M32 @@ -435,6 +437,7 @@ // CHECK_COREI7_AVX_M32: #define __i386__ 1 // CHECK_COREI7_AVX_M32: #define __tune_corei7__ 1 // CHECK_COREI7_AVX_M32: #define i386 1 + // RUN: %clang -march=corei7-avx -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_COREI7_AVX_M64 @@ -461,7 +464,7 @@ // CHECK_COREI7_AVX_M64: #define __tune_corei7__ 1 // CHECK_COREI7_AVX_M64: #define __x86_64 1 // CHECK_COREI7_AVX_M64: #define __x86_64__ 1 -// + // RUN: %clang -march=core-avx-i -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CORE_AVX_I_M32 @@ -485,6 +488,7 @@ // CHECK_CORE_AVX_I_M32: #define __i386__ 1 // CHECK_CORE_AVX_I_M32: #define __tune_corei7__ 1 // CHECK_CORE_AVX_I_M32: #define i386 1 + // RUN: %clang -march=core-avx-i -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CORE_AVX_I_M64 @@ -511,7 +515,7 @@ // CHECK_CORE_AVX_I_M64: #define __tune_corei7__ 1 // CHECK_CORE_AVX_I_M64: #define __x86_64 1 // CHECK_CORE_AVX_I_M64: #define __x86_64__ 1 -// + // RUN: %clang -march=core-avx2 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CORE_AVX2_M32 @@ -522,6 +526,7 @@ // CHECK_CORE_AVX2_M32: #define __BMI__ 1 // CHECK_CORE_AVX2_M32: #define __F16C__ 1 // CHECK_CORE_AVX2_M32: #define __FMA__ 1 +// CHECK_CORE_AVX2_M32: #define __INVPCID__ 1 // CHECK_CORE_AVX2_M32: #define __LZCNT__ 1 // CHECK_CORE_AVX2_M32: #define __MMX__ 1 // CHECK_CORE_AVX2_M32: #define __PCLMUL__ 1 @@ -541,6 +546,7 @@ // CHECK_CORE_AVX2_M32: #define __i386__ 1 // CHECK_CORE_AVX2_M32: #define __tune_corei7__ 1 // CHECK_CORE_AVX2_M32: #define i386 1 + // RUN: %clang -march=core-avx2 -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CORE_AVX2_M64 @@ -551,6 +557,7 @@ // CHECK_CORE_AVX2_M64: #define __BMI__ 1 // CHECK_CORE_AVX2_M64: #define __F16C__ 1 // CHECK_CORE_AVX2_M64: #define __FMA__ 1 +// CHECK_CORE_AVX2_M64: #define __INVPCID__ 1 // CHECK_CORE_AVX2_M64: #define __LZCNT__ 1 // CHECK_CORE_AVX2_M64: #define __MMX__ 1 // CHECK_CORE_AVX2_M64: #define __PCLMUL__ 1 @@ -573,7 +580,7 @@ // CHECK_CORE_AVX2_M64: #define __tune_corei7__ 1 // CHECK_CORE_AVX2_M64: #define __x86_64 1 // CHECK_CORE_AVX2_M64: #define __x86_64__ 1 -// + // RUN: %clang -march=broadwell -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BROADWELL_M32 @@ -585,6 +592,7 @@ // CHECK_BROADWELL_M32: #define __BMI__ 1 // CHECK_BROADWELL_M32: #define __F16C__ 1 // CHECK_BROADWELL_M32: #define __FMA__ 1 +// CHECK_BROADWELL_M32: #define __INVPCID__ 1 // CHECK_BROADWELL_M32: #define __LZCNT__ 1 // CHECK_BROADWELL_M32: #define __MMX__ 1 // CHECK_BROADWELL_M32: #define __PCLMUL__ 1 @@ -606,6 +614,7 @@ // CHECK_BROADWELL_M32: #define __i386__ 1 // CHECK_BROADWELL_M32: #define __tune_corei7__ 1 // CHECK_BROADWELL_M32: #define i386 1 + // RUN: %clang -march=broadwell -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BROADWELL_M64 @@ -617,6 +626,7 @@ // CHECK_BROADWELL_M64: #define __BMI__ 1 // CHECK_BROADWELL_M64: #define __F16C__ 1 // CHECK_BROADWELL_M64: #define __FMA__ 1 +// CHECK_BROADWELL_M64: #define __INVPCID__ 1 // CHECK_BROADWELL_M64: #define __LZCNT__ 1 // CHECK_BROADWELL_M64: #define __MMX__ 1 // CHECK_BROADWELL_M64: #define __PCLMUL__ 1 @@ -641,7 +651,7 @@ // CHECK_BROADWELL_M64: #define __tune_corei7__ 1 // CHECK_BROADWELL_M64: #define __x86_64 1 // CHECK_BROADWELL_M64: #define __x86_64__ 1 -// + // RUN: %clang -march=skylake -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SKL_M32 @@ -654,6 +664,7 @@ // CHECK_SKL_M32: #define __CLFLUSHOPT__ 1 // CHECK_SKL_M32: #define __F16C__ 1 // CHECK_SKL_M32: #define __FMA__ 1 +// CHECK_SKL_M32: #define __INVPCID__ 1 // CHECK_SKL_M32: #define __LZCNT__ 1 // CHECK_SKL_M32: #define __MMX__ 1 // CHECK_SKL_M32: #define __MPX__ 1 @@ -688,6 +699,7 @@ // CHECK_SKL_M64: #define __CLFLUSHOPT__ 1 // CHECK_SKL_M64: #define __F16C__ 1 // CHECK_SKL_M64: #define __FMA__ 1 +// CHECK_SKL_M64: #define __INVPCID__ 1 // CHECK_SKL_M64: #define __LZCNT__ 1 // CHECK_SKL_M64: #define __MMX__ 1 // CHECK_SKL_M64: #define __MPX__ 1 @@ -864,7 +876,7 @@ // CHECK_KNM_M64: #define __amd64__ 1 // CHECK_KNM_M64: #define __x86_64 1 // CHECK_KNM_M64: #define __x86_64__ 1 -// + // RUN: %clang -march=skylake-avx512 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SKX_M32 @@ -882,6 +894,7 @@ // CHECK_SKX_M32: #define __CLWB__ 1 // CHECK_SKX_M32: #define __F16C__ 1 // CHECK_SKX_M32: #define __FMA__ 1 +// CHECK_SKX_M32: #define __INVPCID__ 1 // CHECK_SKX_M32: #define __LZCNT__ 1 // CHECK_SKX_M32: #define __MMX__ 1 // CHECK_SKX_M32: #define __MPX__ 1 @@ -890,8 +903,9 @@ // CHECK_SKX_M32: #define __POPCNT__ 1 // CHECK_SKX_M32: #define __PRFCHW__ 1 // CHECK_SKX_M32: #define __RDRND__ 1 +// CHECK_SKX_M32: #define __RDSEED__ 1 // CHECK_SKX_M32: #define __RTM__ 1 -// CHECK_SKX_M32: #define __SGX__ 1 +// CHECK_SKX_M32-NOT: #define __SGX__ 1 // CHECK_SKX_M32: #define __SSE2__ 1 // CHECK_SKX_M32: #define __SSE3__ 1 // CHECK_SKX_M32: #define __SSE4_1__ 1 @@ -926,6 +940,7 @@ // CHECK_SKX_M64: #define __CLWB__ 1 // CHECK_SKX_M64: #define __F16C__ 1 // CHECK_SKX_M64: #define __FMA__ 1 +// CHECK_SKX_M64: #define __INVPCID__ 1 // CHECK_SKX_M64: #define __LZCNT__ 1 // CHECK_SKX_M64: #define __MMX__ 1 // CHECK_SKX_M64: #define __MPX__ 1 @@ -934,8 +949,9 @@ // CHECK_SKX_M64: #define __POPCNT__ 1 // CHECK_SKX_M64: #define __PRFCHW__ 1 // CHECK_SKX_M64: #define __RDRND__ 1 +// CHECK_SKX_M64: #define __RDSEED__ 1 // CHECK_SKX_M64: #define __RTM__ 1 -// CHECK_SKX_M64: #define __SGX__ 1 +// CHECK_SKX_M64-NOT: #define __SGX__ 1 // CHECK_SKX_M64: #define __SSE2_MATH__ 1 // CHECK_SKX_M64: #define __SSE2__ 1 // CHECK_SKX_M64: #define __SSE3__ 1 @@ -955,7 +971,7 @@ // CHECK_SKX_M64: #define __tune_corei7__ 1 // CHECK_SKX_M64: #define __x86_64 1 // CHECK_SKX_M64: #define __x86_64__ 1 -// + // RUN: %clang -march=cannonlake -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CNL_M32 @@ -975,14 +991,16 @@ // CHECK_CNL_M32-NOT: #define __CLWB__ 1 // CHECK_CNL_M32: #define __F16C__ 1 // CHECK_CNL_M32: #define __FMA__ 1 +// CHECK_CNL_M32: #define __INVPCID__ 1 // CHECK_CNL_M32: #define __LZCNT__ 1 // CHECK_CNL_M32: #define __MMX__ 1 // CHECK_CNL_M32: #define __MPX__ 1 // CHECK_CNL_M32: #define __PCLMUL__ 1 -// CHECK_CNL_M32-NOT: #define __PKU__ 1 +// CHECK_CNL_M32: #define __PKU__ 1 // CHECK_CNL_M32: #define __POPCNT__ 1 // CHECK_CNL_M32: #define __PRFCHW__ 1 // CHECK_CNL_M32: #define __RDRND__ 1 +// CHECK_CNL_M32: #define __RDSEED__ 1 // CHECK_CNL_M32: #define __RTM__ 1 // CHECK_CNL_M32: #define __SGX__ 1 // CHECK_CNL_M32: #define __SHA__ 1 @@ -1002,7 +1020,7 @@ // CHECK_CNL_M32: #define __i386__ 1 // CHECK_CNL_M32: #define __tune_corei7__ 1 // CHECK_CNL_M32: #define i386 1 -// + // RUN: %clang -march=cannonlake -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CNL_M64 @@ -1022,14 +1040,16 @@ // CHECK_CNL_M64-NOT: #define __CLWB__ 1 // CHECK_CNL_M64: #define __F16C__ 1 // CHECK_CNL_M64: #define __FMA__ 1 +// CHECK_CNL_M64: #define __INVPCID__ 1 // CHECK_CNL_M64: #define __LZCNT__ 1 // CHECK_CNL_M64: #define __MMX__ 1 // CHECK_CNL_M64: #define __MPX__ 1 // CHECK_CNL_M64: #define __PCLMUL__ 1 -// CHECK_CNL_M64-NOT: #define __PKU__ 1 +// CHECK_CNL_M64: #define __PKU__ 1 // CHECK_CNL_M64: #define __POPCNT__ 1 // CHECK_CNL_M64: #define __PRFCHW__ 1 // CHECK_CNL_M64: #define __RDRND__ 1 +// CHECK_CNL_M64: #define __RDSEED__ 1 // CHECK_CNL_M64: #define __RTM__ 1 // CHECK_CNL_M64: #define __SGX__ 1 // CHECK_CNL_M64: #define __SHA__ 1 @@ -1051,7 +1071,7 @@ // CHECK_CNL_M64: #define __x86_64 1 // CHECK_CNL_M64: #define __x86_64__ 1 -// RUN: %clang -march=icelake -m32 -E -dM %s -o - 2>&1 \ +// RUN: %clang -march=icelake-client -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ICL_M32 // CHECK_ICL_M32: #define __AES__ 1 @@ -1075,14 +1095,17 @@ // CHECK_ICL_M32: #define __F16C__ 1 // CHECK_ICL_M32: #define __FMA__ 1 // CHECK_ICL_M32: #define __GFNI__ 1 +// CHECK_ICL_M32: #define __INVPCID__ 1 // CHECK_ICL_M32: #define __LZCNT__ 1 // CHECK_ICL_M32: #define __MMX__ 1 // CHECK_ICL_M32: #define __MPX__ 1 // CHECK_ICL_M32: #define __PCLMUL__ 1 -// CHECK_ICL_M32-NOT: #define __PKU__ 1 +// CHECK_ICL_M32: #define __PKU__ 1 // CHECK_ICL_M32: #define __POPCNT__ 1 // CHECK_ICL_M32: #define __PRFCHW__ 1 +// CHECK_ICL_M32: #define __RDPID__ 1 // CHECK_ICL_M32: #define __RDRND__ 1 +// CHECK_ICL_M32: #define __RDSEED__ 1 // CHECK_ICL_M32: #define __RTM__ 1 // CHECK_ICL_M32: #define __SGX__ 1 // CHECK_ICL_M32: #define __SHA__ 1 @@ -1094,6 +1117,7 @@ // CHECK_ICL_M32: #define __SSSE3__ 1 // CHECK_ICL_M32: #define __VAES__ 1 // CHECK_ICL_M32: #define __VPCLMULQDQ__ 1 +// CHECK_ICL_M32-NOT: #define __WBNOINVD__ 1 // CHECK_ICL_M32: #define __XSAVEC__ 1 // CHECK_ICL_M32: #define __XSAVEOPT__ 1 // CHECK_ICL_M32: #define __XSAVES__ 1 @@ -1104,8 +1128,8 @@ // CHECK_ICL_M32: #define __i386__ 1 // CHECK_ICL_M32: #define __tune_corei7__ 1 // CHECK_ICL_M32: #define i386 1 -// -// RUN: %clang -march=icelake -m64 -E -dM %s -o - 2>&1 \ + +// RUN: %clang -march=icelake-client -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ICL_M64 // CHECK_ICL_M64: #define __AES__ 1 @@ -1129,14 +1153,17 @@ // CHECK_ICL_M64: #define __F16C__ 1 // CHECK_ICL_M64: #define __FMA__ 1 // CHECK_ICL_M64: #define __GFNI__ 1 +// CHECK_ICL_M64: #define __INVPCID__ 1 // CHECK_ICL_M64: #define __LZCNT__ 1 // CHECK_ICL_M64: #define __MMX__ 1 // CHECK_ICL_M64: #define __MPX__ 1 // CHECK_ICL_M64: #define __PCLMUL__ 1 -// CHECK_ICL_M64-NOT: #define __PKU__ 1 +// CHECK_ICL_M64: #define __PKU__ 1 // CHECK_ICL_M64: #define __POPCNT__ 1 // CHECK_ICL_M64: #define __PRFCHW__ 1 +// CHECK_ICL_M64: #define __RDPID__ 1 // CHECK_ICL_M64: #define __RDRND__ 1 +// CHECK_ICL_M64: #define __RDSEED__ 1 // CHECK_ICL_M64: #define __RTM__ 1 // CHECK_ICL_M64: #define __SGX__ 1 // CHECK_ICL_M64: #define __SHA__ 1 @@ -1148,6 +1175,7 @@ // CHECK_ICL_M64: #define __SSSE3__ 1 // CHECK_ICL_M64: #define __VAES__ 1 // CHECK_ICL_M64: #define __VPCLMULQDQ__ 1 +// CHECK_ICL_M64-NOT: #define __WBNOINVD__ 1 // CHECK_ICL_M64: #define __XSAVEC__ 1 // CHECK_ICL_M64: #define __XSAVEOPT__ 1 // CHECK_ICL_M64: #define __XSAVES__ 1 @@ -1160,6 +1188,125 @@ // CHECK_ICL_M64: #define __x86_64 1 // CHECK_ICL_M64: #define __x86_64__ 1 +// RUN: %clang -march=icelake-server -m32 -E -dM %s -o - 2>&1 \ +// RUN: -target i386-unknown-linux \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ICX_M32 +// CHECK_ICX_M32: #define __AES__ 1 +// CHECK_ICX_M32: #define __AVX2__ 1 +// CHECK_ICX_M32: #define __AVX512BITALG__ 1 +// CHECK_ICX_M32: #define __AVX512BW__ 1 +// CHECK_ICX_M32: #define __AVX512CD__ 1 +// CHECK_ICX_M32: #define __AVX512DQ__ 1 +// CHECK_ICX_M32: #define __AVX512F__ 1 +// CHECK_ICX_M32: #define __AVX512IFMA__ 1 +// CHECK_ICX_M32: #define __AVX512VBMI2__ 1 +// CHECK_ICX_M32: #define __AVX512VBMI__ 1 +// CHECK_ICX_M32: #define __AVX512VL__ 1 +// CHECK_ICX_M32: #define __AVX512VNNI__ 1 +// CHECK_ICX_M32: #define __AVX512VPOPCNTDQ__ 1 +// CHECK_ICX_M32: #define __AVX__ 1 +// CHECK_ICX_M32: #define __BMI2__ 1 +// CHECK_ICX_M32: #define __BMI__ 1 +// CHECK_ICX_M32: #define __CLFLUSHOPT__ 1 +// CHECK_ICX_M32: #define __CLWB__ 1 +// CHECK_ICX_M32: #define __F16C__ 1 +// CHECK_ICX_M32: #define __FMA__ 1 +// CHECK_ICX_M32: #define __GFNI__ 1 +// CHECK_ICX_M32: #define __INVPCID__ 1 +// CHECK_ICX_M32: #define __LZCNT__ 1 +// CHECK_ICX_M32: #define __MMX__ 1 +// CHECK_ICX_M32: #define __MPX__ 1 +// CHECK_ICX_M32: #define __PCLMUL__ 1 +// CHECK_ICX_M32: #define __PCONFIG__ 1 +// CHECK_ICX_M32: #define __PKU__ 1 +// CHECK_ICX_M32: #define __POPCNT__ 1 +// CHECK_ICX_M32: #define __PRFCHW__ 1 +// CHECK_ICX_M32: #define __RDPID__ 1 +// CHECK_ICX_M32: #define __RDRND__ 1 +// CHECK_ICX_M32: #define __RDSEED__ 1 +// CHECK_ICX_M32: #define __RTM__ 1 +// CHECK_ICX_M32: #define __SGX__ 1 +// CHECK_ICX_M32: #define __SHA__ 1 +// CHECK_ICX_M32: #define __SSE2__ 1 +// CHECK_ICX_M32: #define __SSE3__ 1 +// CHECK_ICX_M32: #define __SSE4_1__ 1 +// CHECK_ICX_M32: #define __SSE4_2__ 1 +// CHECK_ICX_M32: #define __SSE__ 1 +// CHECK_ICX_M32: #define __SSSE3__ 1 +// CHECK_ICX_M32: #define __VAES__ 1 +// CHECK_ICX_M32: #define __VPCLMULQDQ__ 1 +// CHECK_ICX_M32: #define __WBNOINVD__ 1 +// CHECK_ICX_M32: #define __XSAVEC__ 1 +// CHECK_ICX_M32: #define __XSAVEOPT__ 1 +// CHECK_ICX_M32: #define __XSAVES__ 1 +// CHECK_ICX_M32: #define __XSAVE__ 1 +// CHECK_ICX_M32: #define __corei7 1 +// CHECK_ICX_M32: #define __corei7__ 1 +// CHECK_ICX_M32: #define __i386 1 +// CHECK_ICX_M32: #define __i386__ 1 +// CHECK_ICX_M32: #define __tune_corei7__ 1 +// CHECK_ICX_M32: #define i386 1 + +// RUN: %clang -march=icelake-server -m64 -E -dM %s -o - 2>&1 \ +// RUN: -target i386-unknown-linux \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ICX_M64 +// CHECK_ICX_M64: #define __AES__ 1 +// CHECK_ICX_M64: #define __AVX2__ 1 +// CHECK_ICX_M64: #define __AVX512BITALG__ 1 +// CHECK_ICX_M64: #define __AVX512BW__ 1 +// CHECK_ICX_M64: #define __AVX512CD__ 1 +// CHECK_ICX_M64: #define __AVX512DQ__ 1 +// CHECK_ICX_M64: #define __AVX512F__ 1 +// CHECK_ICX_M64: #define __AVX512IFMA__ 1 +// CHECK_ICX_M64: #define __AVX512VBMI2__ 1 +// CHECK_ICX_M64: #define __AVX512VBMI__ 1 +// CHECK_ICX_M64: #define __AVX512VL__ 1 +// CHECK_ICX_M64: #define __AVX512VNNI__ 1 +// CHECK_ICX_M64: #define __AVX512VPOPCNTDQ__ 1 +// CHECK_ICX_M64: #define __AVX__ 1 +// CHECK_ICX_M64: #define __BMI2__ 1 +// CHECK_ICX_M64: #define __BMI__ 1 +// CHECK_ICX_M64: #define __CLFLUSHOPT__ 1 +// CHECK_ICX_M64: #define __CLWB__ 1 +// CHECK_ICX_M64: #define __F16C__ 1 +// CHECK_ICX_M64: #define __FMA__ 1 +// CHECK_ICX_M64: #define __GFNI__ 1 +// CHECK_ICX_M64: #define __INVPCID__ 1 +// CHECK_ICX_M64: #define __LZCNT__ 1 +// CHECK_ICX_M64: #define __MMX__ 1 +// CHECK_ICX_M64: #define __MPX__ 1 +// CHECK_ICX_M64: #define __PCLMUL__ 1 +// CHECK_ICX_M64: #define __PCONFIG__ 1 +// CHECK_ICX_M64: #define __PKU__ 1 +// CHECK_ICX_M64: #define __POPCNT__ 1 +// CHECK_ICX_M64: #define __PRFCHW__ 1 +// CHECK_ICX_M64: #define __RDPID__ 1 +// CHECK_ICX_M64: #define __RDRND__ 1 +// CHECK_ICX_M64: #define __RDSEED__ 1 +// CHECK_ICX_M64: #define __RTM__ 1 +// CHECK_ICX_M64: #define __SGX__ 1 +// CHECK_ICX_M64: #define __SHA__ 1 +// CHECK_ICX_M64: #define __SSE2__ 1 +// CHECK_ICX_M64: #define __SSE3__ 1 +// CHECK_ICX_M64: #define __SSE4_1__ 1 +// CHECK_ICX_M64: #define __SSE4_2__ 1 +// CHECK_ICX_M64: #define __SSE__ 1 +// CHECK_ICX_M64: #define __SSSE3__ 1 +// CHECK_ICX_M64: #define __VAES__ 1 +// CHECK_ICX_M64: #define __VPCLMULQDQ__ 1 +// CHECK_ICX_M64: #define __WBNOINVD__ 1 +// CHECK_ICX_M64: #define __XSAVEC__ 1 +// CHECK_ICX_M64: #define __XSAVEOPT__ 1 +// CHECK_ICX_M64: #define __XSAVES__ 1 +// CHECK_ICX_M64: #define __XSAVE__ 1 +// CHECK_ICX_M64: #define __amd64 1 +// CHECK_ICX_M64: #define __amd64__ 1 +// CHECK_ICX_M64: #define __corei7 1 +// CHECK_ICX_M64: #define __corei7__ 1 +// CHECK_ICX_M64: #define __tune_corei7__ 1 +// CHECK_ICX_M64: #define __x86_64 1 +// CHECK_ICX_M64: #define __x86_64__ 1 + // RUN: %clang -march=atom -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATOM_M32 @@ -1174,6 +1321,7 @@ // CHECK_ATOM_M32: #define __i386__ 1 // CHECK_ATOM_M32: #define __tune_atom__ 1 // CHECK_ATOM_M32: #define i386 1 + // RUN: %clang -march=atom -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATOM_M64 @@ -1191,7 +1339,7 @@ // CHECK_ATOM_M64: #define __tune_atom__ 1 // CHECK_ATOM_M64: #define __x86_64 1 // CHECK_ATOM_M64: #define __x86_64__ 1 -// + // RUN: %clang -march=goldmont -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck %s -check-prefix=CHECK_GLM_M32 @@ -1224,7 +1372,7 @@ // CHECK_GLM_M32: #define __i386__ 1 // CHECK_GLM_M32: #define __tune_goldmont__ 1 // CHECK_GLM_M32: #define i386 1 -// + // RUN: %clang -march=goldmont -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck %s -check-prefix=CHECK_GLM_M64 @@ -1239,6 +1387,7 @@ // CHECK_GLM_M64: #define __PRFCHW__ 1 // CHECK_GLM_M64: #define __RDRND__ 1 // CHECK_GLM_M64: #define __RDSEED__ 1 +// CHECK_GLM_M64: #define __SHA__ 1 // CHECK_GLM_M64: #define __SSE2__ 1 // CHECK_GLM_M64: #define __SSE3__ 1 // CHECK_GLM_M64: #define __SSE4_1__ 1 @@ -1254,7 +1403,157 @@ // CHECK_GLM_M64: #define __tune_goldmont__ 1 // CHECK_GLM_M64: #define __x86_64 1 // CHECK_GLM_M64: #define __x86_64__ 1 -// + +// RUN: %clang -march=goldmont-plus -m32 -E -dM %s -o - 2>&1 \ +// RUN: -target i386-unknown-linux \ +// RUN: | FileCheck %s -check-prefix=CHECK_GLMP_M32 +// CHECK_GLMP_M32: #define __AES__ 1 +// CHECK_GLMP_M32: #define __CLFLUSHOPT__ 1 +// CHECK_GLMP_M32: #define __FSGSBASE__ 1 +// CHECK_GLMP_M32: #define __FXSR__ 1 +// CHECK_GLMP_M32: #define __MMX__ 1 +// CHECK_GLMP_M32: #define __MPX__ 1 +// CHECK_GLMP_M32: #define __PCLMUL__ 1 +// CHECK_GLMP_M32: #define __POPCNT__ 1 +// CHECK_GLMP_M32: #define __PRFCHW__ 1 +// CHECK_GLMP_M32: #define __PTWRITE__ 1 +// CHECK_GLMP_M32: #define __RDPID__ 1 +// CHECK_GLMP_M32: #define __RDRND__ 1 +// CHECK_GLMP_M32: #define __RDSEED__ 1 +// CHECK_GLMP_M32: #define __SGX__ 1 +// CHECK_GLMP_M32: #define __SHA__ 1 +// CHECK_GLMP_M32: #define __SSE2__ 1 +// CHECK_GLMP_M32: #define __SSE3__ 1 +// CHECK_GLMP_M32: #define __SSE4_1__ 1 +// CHECK_GLMP_M32: #define __SSE4_2__ 1 +// CHECK_GLMP_M32: #define __SSE_MATH__ 1 +// CHECK_GLMP_M32: #define __SSE__ 1 +// CHECK_GLMP_M32: #define __SSSE3__ 1 +// CHECK_GLMP_M32: #define __XSAVEC__ 1 +// CHECK_GLMP_M32: #define __XSAVEOPT__ 1 +// CHECK_GLMP_M32: #define __XSAVES__ 1 +// CHECK_GLMP_M32: #define __XSAVE__ 1 +// CHECK_GLMP_M32: #define __goldmont_plus 1 +// CHECK_GLMP_M32: #define __goldmont_plus__ 1 +// CHECK_GLMP_M32: #define __i386 1 +// CHECK_GLMP_M32: #define __i386__ 1 +// CHECK_GLMP_M32: #define __tune_goldmont_plus__ 1 +// CHECK_GLMP_M32: #define i386 1 + +// RUN: %clang -march=goldmont-plus -m64 -E -dM %s -o - 2>&1 \ +// RUN: -target i386-unknown-linux \ +// RUN: | FileCheck %s -check-prefix=CHECK_GLMP_M64 +// CHECK_GLMP_M64: #define __AES__ 1 +// CHECK_GLMP_M64: #define __CLFLUSHOPT__ 1 +// CHECK_GLMP_M64: #define __FSGSBASE__ 1 +// CHECK_GLMP_M64: #define __FXSR__ 1 +// CHECK_GLMP_M64: #define __MMX__ 1 +// CHECK_GLMP_M64: #define __MPX__ 1 +// CHECK_GLMP_M64: #define __PCLMUL__ 1 +// CHECK_GLMP_M64: #define __POPCNT__ 1 +// CHECK_GLMP_M64: #define __PRFCHW__ 1 +// CHECK_GLMP_M64: #define __PTWRITE__ 1 +// CHECK_GLMP_M64: #define __RDPID__ 1 +// CHECK_GLMP_M64: #define __RDRND__ 1 +// CHECK_GLMP_M64: #define __RDSEED__ 1 +// CHECK_GLMP_M64: #define __SGX__ 1 +// CHECK_GLMP_M64: #define __SHA__ 1 +// CHECK_GLMP_M64: #define __SSE2__ 1 +// CHECK_GLMP_M64: #define __SSE3__ 1 +// CHECK_GLMP_M64: #define __SSE4_1__ 1 +// CHECK_GLMP_M64: #define __SSE4_2__ 1 +// CHECK_GLMP_M64: #define __SSE__ 1 +// CHECK_GLMP_M64: #define __SSSE3__ 1 +// CHECK_GLMP_M64: #define __XSAVEC__ 1 +// CHECK_GLMP_M64: #define __XSAVEOPT__ 1 +// CHECK_GLMP_M64: #define __XSAVES__ 1 +// CHECK_GLMP_M64: #define __XSAVE__ 1 +// CHECK_GLMP_M64: #define __goldmont_plus 1 +// CHECK_GLMP_M64: #define __goldmont_plus__ 1 +// CHECK_GLMP_M64: #define __tune_goldmont_plus__ 1 +// CHECK_GLMP_M64: #define __x86_64 1 +// CHECK_GLMP_M64: #define __x86_64__ 1 + +// RUN: %clang -march=tremont -m32 -E -dM %s -o - 2>&1 \ +// RUN: -target i386-unknown-linux \ +// RUN: | FileCheck %s -check-prefix=CHECK_TRM_M32 +// CHECK_TRM_M32: #define __AES__ 1 +// CHECK_TRM_M32: #define __CLDEMOTE__ 1 +// CHECK_TRM_M32: #define __CLFLUSHOPT__ 1 +// CHECK_TRM_M32: #define __FSGSBASE__ 1 +// CHECK_TRM_M32: #define __FXSR__ 1 +// CHECK_TRM_M32: #define __GFNI__ 1 +// CHECK_TRM_M32: #define __MMX__ 1 +// CHECK_TRM_M32: #define __MOVDIR64B__ 1 +// CHECK_TRM_M32: #define __MOVDIRI__ 1 +// CHECK_TRM_M32: #define __MPX__ 1 +// CHECK_TRM_M32: #define __PCLMUL__ 1 +// CHECK_TRM_M32: #define __POPCNT__ 1 +// CHECK_TRM_M32: #define __PRFCHW__ 1 +// CHECK_TRM_M32: #define __PTWRITE__ 1 +// CHECK_TRM_M32: #define __RDPID__ 1 +// CHECK_TRM_M32: #define __RDRND__ 1 +// CHECK_TRM_M32: #define __RDSEED__ 1 +// CHECK_TRM_M32: #define __SGX__ 1 +// CHECK_TRM_M32: #define __SHA__ 1 +// CHECK_TRM_M32: #define __SSE2__ 1 +// CHECK_TRM_M32: #define __SSE3__ 1 +// CHECK_TRM_M32: #define __SSE4_1__ 1 +// CHECK_TRM_M32: #define __SSE4_2__ 1 +// CHECK_TRM_M32: #define __SSE_MATH__ 1 +// CHECK_TRM_M32: #define __SSE__ 1 +// CHECK_TRM_M32: #define __SSSE3__ 1 +// CHECK_TRM_M32: #define __WAITPKG__ 1 +// CHECK_TRM_M32: #define __XSAVEC__ 1 +// CHECK_TRM_M32: #define __XSAVEOPT__ 1 +// CHECK_TRM_M32: #define __XSAVES__ 1 +// CHECK_TRM_M32: #define __XSAVE__ 1 +// CHECK_TRM_M32: #define __i386 1 +// CHECK_TRM_M32: #define __i386__ 1 +// CHECK_TRM_M32: #define __tremont 1 +// CHECK_TRM_M32: #define __tremont__ 1 +// CHECK_TRM_M32: #define __tune_tremont__ 1 +// CHECK_TRM_M32: #define i386 1 + +// RUN: %clang -march=tremont -m64 -E -dM %s -o - 2>&1 \ +// RUN: -target i386-unknown-linux \ +// RUN: | FileCheck %s -check-prefix=CHECK_TRM_M64 +// CHECK_TRM_M64: #define __AES__ 1 +// CHECK_TRM_M64: #define __CLDEMOTE__ 1 +// CHECK_TRM_M64: #define __CLFLUSHOPT__ 1 +// CHECK_TRM_M64: #define __FSGSBASE__ 1 +// CHECK_TRM_M64: #define __FXSR__ 1 +// CHECK_TRM_M64: #define __GFNI__ 1 +// CHECK_TRM_M64: #define __MMX__ 1 +// CHECK_TRM_M64: #define __MOVDIR64B__ 1 +// CHECK_TRM_M64: #define __MOVDIRI__ 1 +// CHECK_TRM_M64: #define __MPX__ 1 +// CHECK_TRM_M64: #define __PCLMUL__ 1 +// CHECK_TRM_M64: #define __POPCNT__ 1 +// CHECK_TRM_M64: #define __PRFCHW__ 1 +// CHECK_TRM_M64: #define __PTWRITE__ 1 +// CHECK_TRM_M64: #define __RDPID__ 1 +// CHECK_TRM_M64: #define __RDRND__ 1 +// CHECK_TRM_M64: #define __RDSEED__ 1 +// CHECK_TRM_M64: #define __SGX__ 1 +// CHECK_TRM_M64: #define __SHA__ 1 +// CHECK_TRM_M64: #define __SSE2__ 1 +// CHECK_TRM_M64: #define __SSE3__ 1 +// CHECK_TRM_M64: #define __SSE4_1__ 1 +// CHECK_TRM_M64: #define __SSE4_2__ 1 +// CHECK_TRM_M64: #define __SSE__ 1 +// CHECK_TRM_M64: #define __SSSE3__ 1 +// CHECK_TRM_M64: #define __WAITPKG__ 1 +// CHECK_TRM_M64: #define __XSAVEC__ 1 +// CHECK_TRM_M64: #define __XSAVEOPT__ 1 +// CHECK_TRM_M64: #define __XSAVES__ 1 +// CHECK_TRM_M64: #define __XSAVE__ 1 +// CHECK_TRM_M64: #define __tremont 1 +// CHECK_TRM_M64: #define __tremont__ 1 +// CHECK_TRM_M64: #define __tune_tremont__ 1 +// CHECK_TRM_M64: #define __x86_64 1 +// CHECK_TRM_M64: #define __x86_64__ 1 + // RUN: %clang -march=slm -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SLM_M32 @@ -1264,6 +1563,7 @@ // CHECK_SLM_M32: #define __PCLMUL__ 1 // CHECK_SLM_M32: #define __POPCNT__ 1 // CHECK_SLM_M32: #define __PRFCHW__ 1 +// CHECK_SLM_M32: #define __RDRND__ 1 // CHECK_SLM_M32: #define __SSE2__ 1 // CHECK_SLM_M32: #define __SSE3__ 1 // CHECK_SLM_M32: #define __SSE4_1__ 1 @@ -1276,6 +1576,7 @@ // CHECK_SLM_M32: #define __slm__ 1 // CHECK_SLM_M32: #define __tune_slm__ 1 // CHECK_SLM_M32: #define i386 1 + // RUN: %clang -march=slm -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SLM_M64 @@ -1285,6 +1586,7 @@ // CHECK_SLM_M64: #define __PCLMUL__ 1 // CHECK_SLM_M64: #define __POPCNT__ 1 // CHECK_SLM_M64: #define __PRFCHW__ 1 +// CHECK_SLM_M64: #define __RDRND__ 1 // CHECK_SLM_M64: #define __SSE2_MATH__ 1 // CHECK_SLM_M64: #define __SSE2__ 1 // CHECK_SLM_M64: #define __SSE3__ 1 @@ -1300,7 +1602,7 @@ // CHECK_SLM_M64: #define __tune_slm__ 1 // CHECK_SLM_M64: #define __x86_64 1 // CHECK_SLM_M64: #define __x86_64__ 1 -// + // RUN: %clang -march=lakemont -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck %s -check-prefix=CHECK_LAKEMONT_M32 @@ -1316,7 +1618,7 @@ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck %s -check-prefix=CHECK_LAKEMONT_M64 // CHECK_LAKEMONT_M64: error: -// + // RUN: %clang -march=geode -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_GEODE_M32 @@ -1333,7 +1635,7 @@ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_GEODE_M64 // CHECK_GEODE_M64: error: {{.*}} -// + // RUN: %clang -march=k6 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_M32 @@ -1348,7 +1650,7 @@ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_M64 // CHECK_K6_M64: error: {{.*}} -// + // RUN: %clang -march=k6-2 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_2_M32 @@ -1366,7 +1668,7 @@ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_2_M64 // CHECK_K6_2_M64: error: {{.*}} -// + // RUN: %clang -march=k6-3 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_3_M32 @@ -1384,7 +1686,7 @@ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_3_M64 // CHECK_K6_3_M64: error: {{.*}} -// + // RUN: %clang -march=athlon -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_M32 @@ -1401,7 +1703,7 @@ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_M64 // CHECK_ATHLON_M64: error: {{.*}} -// + // RUN: %clang -march=athlon-tbird -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_TBIRD_M32 @@ -1418,7 +1720,7 @@ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_TBIRD_M64 // CHECK_ATHLON_TBIRD_M64: error: {{.*}} -// + // RUN: %clang -march=athlon-4 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_4_M32 @@ -1438,7 +1740,7 @@ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_4_M64 // CHECK_ATHLON_4_M64: error: {{.*}} -// + // RUN: %clang -march=athlon-xp -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_XP_M32 @@ -1458,7 +1760,7 @@ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_XP_M64 // CHECK_ATHLON_XP_M64: error: {{.*}} -// + // RUN: %clang -march=athlon-mp -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_MP_M32 @@ -1478,7 +1780,7 @@ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_MP_M64 // CHECK_ATHLON_MP_M64: error: {{.*}} -// + // RUN: %clang -march=x86-64 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_X86_64_M32 @@ -1490,6 +1792,7 @@ // CHECK_X86_64_M32: #define __k8 1 // CHECK_X86_64_M32: #define __k8__ 1 // CHECK_X86_64_M32: #define i386 1 + // RUN: %clang -march=x86-64 -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_X86_64_M64 @@ -1504,7 +1807,7 @@ // CHECK_X86_64_M64: #define __k8__ 1 // CHECK_X86_64_M64: #define __x86_64 1 // CHECK_X86_64_M64: #define __x86_64__ 1 -// + // RUN: %clang -march=k8 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K8_M32 @@ -1519,6 +1822,7 @@ // CHECK_K8_M32: #define __k8__ 1 // CHECK_K8_M32: #define __tune_k8__ 1 // CHECK_K8_M32: #define i386 1 + // RUN: %clang -march=k8 -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K8_M64 @@ -1536,7 +1840,7 @@ // CHECK_K8_M64: #define __tune_k8__ 1 // CHECK_K8_M64: #define __x86_64 1 // CHECK_K8_M64: #define __x86_64__ 1 -// + // RUN: %clang -march=k8-sse3 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K8_SSE3_M32 @@ -1552,6 +1856,7 @@ // CHECK_K8_SSE3_M32: #define __k8__ 1 // CHECK_K8_SSE3_M32: #define __tune_k8__ 1 // CHECK_K8_SSE3_M32: #define i386 1 + // RUN: %clang -march=k8-sse3 -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K8_SSE3_M64 @@ -1570,7 +1875,7 @@ // CHECK_K8_SSE3_M64: #define __tune_k8__ 1 // CHECK_K8_SSE3_M64: #define __x86_64 1 // CHECK_K8_SSE3_M64: #define __x86_64__ 1 -// + // RUN: %clang -march=opteron -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_OPTERON_M32 @@ -1585,6 +1890,7 @@ // CHECK_OPTERON_M32: #define __k8__ 1 // CHECK_OPTERON_M32: #define __tune_k8__ 1 // CHECK_OPTERON_M32: #define i386 1 + // RUN: %clang -march=opteron -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_OPTERON_M64 @@ -1602,7 +1908,7 @@ // CHECK_OPTERON_M64: #define __tune_k8__ 1 // CHECK_OPTERON_M64: #define __x86_64 1 // CHECK_OPTERON_M64: #define __x86_64__ 1 -// + // RUN: %clang -march=opteron-sse3 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_OPTERON_SSE3_M32 @@ -1618,6 +1924,7 @@ // CHECK_OPTERON_SSE3_M32: #define __k8__ 1 // CHECK_OPTERON_SSE3_M32: #define __tune_k8__ 1 // CHECK_OPTERON_SSE3_M32: #define i386 1 + // RUN: %clang -march=opteron-sse3 -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_OPTERON_SSE3_M64 @@ -1636,7 +1943,7 @@ // CHECK_OPTERON_SSE3_M64: #define __tune_k8__ 1 // CHECK_OPTERON_SSE3_M64: #define __x86_64 1 // CHECK_OPTERON_SSE3_M64: #define __x86_64__ 1 -// + // RUN: %clang -march=athlon64 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON64_M32 @@ -1651,6 +1958,7 @@ // CHECK_ATHLON64_M32: #define __k8__ 1 // CHECK_ATHLON64_M32: #define __tune_k8__ 1 // CHECK_ATHLON64_M32: #define i386 1 + // RUN: %clang -march=athlon64 -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON64_M64 @@ -1668,7 +1976,7 @@ // CHECK_ATHLON64_M64: #define __tune_k8__ 1 // CHECK_ATHLON64_M64: #define __x86_64 1 // CHECK_ATHLON64_M64: #define __x86_64__ 1 -// + // RUN: %clang -march=athlon64-sse3 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON64_SSE3_M32 @@ -1684,6 +1992,7 @@ // CHECK_ATHLON64_SSE3_M32: #define __k8__ 1 // CHECK_ATHLON64_SSE3_M32: #define __tune_k8__ 1 // CHECK_ATHLON64_SSE3_M32: #define i386 1 + // RUN: %clang -march=athlon64-sse3 -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON64_SSE3_M64 @@ -1702,7 +2011,7 @@ // CHECK_ATHLON64_SSE3_M64: #define __tune_k8__ 1 // CHECK_ATHLON64_SSE3_M64: #define __x86_64 1 // CHECK_ATHLON64_SSE3_M64: #define __x86_64__ 1 -// + // RUN: %clang -march=athlon-fx -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_FX_M32 @@ -1717,6 +2026,7 @@ // CHECK_ATHLON_FX_M32: #define __k8__ 1 // CHECK_ATHLON_FX_M32: #define __tune_k8__ 1 // CHECK_ATHLON_FX_M32: #define i386 1 + // RUN: %clang -march=athlon-fx -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_FX_M64 @@ -1734,6 +2044,7 @@ // CHECK_ATHLON_FX_M64: #define __tune_k8__ 1 // CHECK_ATHLON_FX_M64: #define __x86_64 1 // CHECK_ATHLON_FX_M64: #define __x86_64__ 1 + // RUN: %clang -march=amdfam10 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_AMDFAM10_M32 @@ -1753,6 +2064,7 @@ // CHECK_AMDFAM10_M32: #define __i386 1 // CHECK_AMDFAM10_M32: #define __i386__ 1 // CHECK_AMDFAM10_M32: #define __tune_amdfam10__ 1 + // RUN: %clang -march=amdfam10 -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_AMDFAM10_M64 @@ -1774,6 +2086,7 @@ // CHECK_AMDFAM10_M64: #define __tune_amdfam10__ 1 // CHECK_AMDFAM10_M64: #define __x86_64 1 // CHECK_AMDFAM10_M64: #define __x86_64__ 1 + // RUN: %clang -march=btver1 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BTVER1_M32 @@ -1795,6 +2108,7 @@ // CHECK_BTVER1_M32: #define __i386 1 // CHECK_BTVER1_M32: #define __i386__ 1 // CHECK_BTVER1_M32: #define __tune_btver1__ 1 + // RUN: %clang -march=btver1 -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BTVER1_M64 @@ -1818,6 +2132,7 @@ // CHECK_BTVER1_M64: #define __tune_btver1__ 1 // CHECK_BTVER1_M64: #define __x86_64 1 // CHECK_BTVER1_M64: #define __x86_64__ 1 + // RUN: %clang -march=btver2 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BTVER2_M32 @@ -1846,6 +2161,7 @@ // CHECK_BTVER2_M32: #define __i386 1 // CHECK_BTVER2_M32: #define __i386__ 1 // CHECK_BTVER2_M32: #define __tune_btver2__ 1 + // RUN: %clang -march=btver2 -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BTVER2_M64 @@ -1876,6 +2192,7 @@ // CHECK_BTVER2_M64: #define __tune_btver2__ 1 // CHECK_BTVER2_M64: #define __x86_64 1 // CHECK_BTVER2_M64: #define __x86_64__ 1 + // RUN: %clang -march=bdver1 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER1_M32 @@ -1906,6 +2223,7 @@ // CHECK_BDVER1_M32: #define __i386 1 // CHECK_BDVER1_M32: #define __i386__ 1 // CHECK_BDVER1_M32: #define __tune_bdver1__ 1 + // RUN: %clang -march=bdver1 -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER1_M64 @@ -1938,6 +2256,7 @@ // CHECK_BDVER1_M64: #define __tune_bdver1__ 1 // CHECK_BDVER1_M64: #define __x86_64 1 // CHECK_BDVER1_M64: #define __x86_64__ 1 + // RUN: %clang -march=bdver2 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER2_M32 @@ -1972,6 +2291,7 @@ // CHECK_BDVER2_M32: #define __i386 1 // CHECK_BDVER2_M32: #define __i386__ 1 // CHECK_BDVER2_M32: #define __tune_bdver2__ 1 + // RUN: %clang -march=bdver2 -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER2_M64 @@ -2008,6 +2328,7 @@ // CHECK_BDVER2_M64: #define __tune_bdver2__ 1 // CHECK_BDVER2_M64: #define __x86_64 1 // CHECK_BDVER2_M64: #define __x86_64__ 1 + // RUN: %clang -march=bdver3 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER3_M32 @@ -2044,6 +2365,7 @@ // CHECK_BDVER3_M32: #define __i386 1 // CHECK_BDVER3_M32: #define __i386__ 1 // CHECK_BDVER3_M32: #define __tune_bdver3__ 1 + // RUN: %clang -march=bdver3 -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER3_M64 @@ -2082,6 +2404,7 @@ // CHECK_BDVER3_M64: #define __tune_bdver3__ 1 // CHECK_BDVER3_M64: #define __x86_64 1 // CHECK_BDVER3_M64: #define __x86_64__ 1 + // RUN: %clang -march=bdver4 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER4_M32 @@ -2119,6 +2442,7 @@ // CHECK_BDVER4_M32: #define __i386 1 // CHECK_BDVER4_M32: #define __i386__ 1 // CHECK_BDVER4_M32: #define __tune_bdver4__ 1 + // RUN: %clang -march=bdver4 -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER4_M64 @@ -2158,6 +2482,7 @@ // CHECK_BDVER4_M64: #define __tune_bdver4__ 1 // CHECK_BDVER4_M64: #define __x86_64 1 // CHECK_BDVER4_M64: #define __x86_64__ 1 + // RUN: %clang -march=znver1 -m32 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ZNVER1_M32 @@ -2200,6 +2525,7 @@ // CHECK_ZNVER1_M32: #define __tune_znver1__ 1 // CHECK_ZNVER1_M32: #define __znver1 1 // CHECK_ZNVER1_M32: #define __znver1__ 1 + // RUN: %clang -march=znver1 -m64 -E -dM %s -o - 2>&1 \ // RUN: -target i386-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ZNVER1_M64 @@ -2244,7 +2570,7 @@ // CHECK_ZNVER1_M64: #define __x86_64__ 1 // CHECK_ZNVER1_M64: #define __znver1 1 // CHECK_ZNVER1_M64: #define __znver1__ 1 -// + // End X86/GCC/Linux tests ------------------ // Begin PPC/GCC/Linux tests ---------------- @@ -2252,32 +2578,27 @@ // RUN: %clang -mvsx -E -dM %s -o - 2>&1 \ // RUN: -target powerpc-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_VSX_M32 -// // CHECK_PPC_VSX_M32: #define __ALTIVEC__ 1 // CHECK_PPC_VSX_M32: #define __VSX__ 1 -// + // RUN: %clang -mvsx -E -dM %s -o - 2>&1 \ // RUN: -target powerpc64-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_VSX_M64 -// // CHECK_PPC_VSX_M64: #define __VSX__ 1 -// + // RUN: %clang -mpower8-vector -E -dM %s -o - 2>&1 \ // RUN: -target powerpc64-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_POWER8_VECTOR_M64 -// // CHECK_PPC_POWER8_VECTOR_M64: #define __POWER8_VECTOR__ 1 -// + // RUN: %clang -mpower9-vector -E -dM %s -o - 2>&1 \ // RUN: -target powerpc64-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_POWER9_VECTOR_M64 -// // CHECK_PPC_POWER9_VECTOR_M64: #define __POWER9_VECTOR__ 1 -// + // RUN: %clang -mcrypto -E -dM %s -o - 2>&1 \ // RUN: -target powerpc64-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_CRYPTO_M64 -// // CHECK_PPC_CRYPTO_M64: #define __CRYPTO__ 1 // HTM is available on power8 or later which includes all of powerpc64le as an @@ -2294,10 +2615,8 @@ // RUN: %clang -mcpu=pwr9 -E -dM %s -o - 2>&1 \ // RUN: -target powerpc64-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_HTM -// // CHECK_PPC_HTM: #define __HTM__ 1 -// // RUN: %clang -mcpu=ppc64 -E -dM %s -o - 2>&1 \ // RUN: -target powerpc64-unknown-unknown \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_GCC_ATOMICS @@ -2307,23 +2626,18 @@ // RUN: %clang -E -dM %s -o - 2>&1 \ // RUN: -target powerpc64le-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_GCC_ATOMICS -// // CHECK_PPC_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 // CHECK_PPC_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 // CHECK_PPC_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 // CHECK_PPC_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 -// + // End PPC/GCC/Linux tests ------------------ // Begin Sparc/GCC/Linux tests ---------------- -// + // RUN: %clang -E -dM %s -o - 2>&1 \ // RUN: -target sparc-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARC -// RUN: %clang -mcpu=v9 -E -dM %s -o - 2>&1 \ -// RUN: -target sparc-unknown-linux \ -// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARC-V9 -// // CHECK_SPARC: #define __BIG_ENDIAN__ 1 // CHECK_SPARC: #define __sparc 1 // CHECK_SPARC: #define __sparc__ 1 @@ -2333,12 +2647,14 @@ // CHECK_SPARC-NOT: #define __sparcv9 1 // CHECK_SPARC-NOT: #define __sparcv9__ 1 +// RUN: %clang -mcpu=v9 -E -dM %s -o - 2>&1 \ +// RUN: -target sparc-unknown-linux \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARC-V9 // 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 \ // RUN: -target sparcel-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARCEL @@ -2391,19 +2707,22 @@ // CHECK_MYRIAD2: #define __leon__ 1 // CHECK_MYRIAD2-1: #define __myriad2 1 // CHECK_MYRIAD2-1: #define __myriad2__ 1 +// CHECK_MYRIAD2-2: #define __ma2x5x 1 +// CHECK_MYRIAD2-2: #define __ma2x5x__ 1 // CHECK_MYRIAD2-2: #define __myriad2 2 // CHECK_MYRIAD2-2: #define __myriad2__ 2 +// CHECK_MYRIAD2-3: #define __ma2x8x 1 +// CHECK_MYRIAD2-3: #define __ma2x8x__ 1 // CHECK_MYRIAD2-3: #define __myriad2 3 // CHECK_MYRIAD2-3: #define __myriad2__ 3 // CHECK_SPARCEL: #define __sparc 1 // CHECK_SPARCEL: #define __sparc__ 1 // CHECK_MYRIAD2: #define __sparc_v8__ 1 // CHECK_SPARCEL: #define __sparcv8 1 -// + // RUN: %clang -E -dM %s -o - 2>&1 \ // RUN: -target sparcv9-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARCV9 -// // CHECK_SPARCV9: #define __BIG_ENDIAN__ 1 // CHECK_SPARCV9: #define __sparc 1 // CHECK_SPARCV9: #define __sparc64__ 1 @@ -2413,14 +2732,13 @@ // CHECK_SPARCV9: #define __sparcv9__ 1 // Begin SystemZ/GCC/Linux tests ---------------- -// + // RUN: %clang -march=arch8 -E -dM %s -o - 2>&1 \ // RUN: -target s390x-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH8 // RUN: %clang -march=z10 -E -dM %s -o - 2>&1 \ // RUN: -target s390x-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH8 -// // CHECK_SYSTEMZ_ARCH8: #define __ARCH__ 8 // CHECK_SYSTEMZ_ARCH8: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 // CHECK_SYSTEMZ_ARCH8: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 @@ -2430,14 +2748,13 @@ // CHECK_SYSTEMZ_ARCH8: #define __s390__ 1 // CHECK_SYSTEMZ_ARCH8: #define __s390x__ 1 // CHECK_SYSTEMZ_ARCH8: #define __zarch__ 1 -// + // RUN: %clang -march=arch9 -E -dM %s -o - 2>&1 \ // RUN: -target s390x-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH9 // RUN: %clang -march=z196 -E -dM %s -o - 2>&1 \ // RUN: -target s390x-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH9 -// // CHECK_SYSTEMZ_ARCH9: #define __ARCH__ 9 // CHECK_SYSTEMZ_ARCH9: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 // CHECK_SYSTEMZ_ARCH9: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 @@ -2447,14 +2764,13 @@ // CHECK_SYSTEMZ_ARCH9: #define __s390__ 1 // CHECK_SYSTEMZ_ARCH9: #define __s390x__ 1 // CHECK_SYSTEMZ_ARCH9: #define __zarch__ 1 -// + // RUN: %clang -march=arch10 -E -dM %s -o - 2>&1 \ // RUN: -target s390x-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH10 // RUN: %clang -march=zEC12 -E -dM %s -o - 2>&1 \ // RUN: -target s390x-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH10 -// // CHECK_SYSTEMZ_ARCH10: #define __ARCH__ 10 // CHECK_SYSTEMZ_ARCH10: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 // CHECK_SYSTEMZ_ARCH10: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 @@ -2465,14 +2781,13 @@ // CHECK_SYSTEMZ_ARCH10: #define __s390__ 1 // CHECK_SYSTEMZ_ARCH10: #define __s390x__ 1 // CHECK_SYSTEMZ_ARCH10: #define __zarch__ 1 -// + // RUN: %clang -march=arch11 -E -dM %s -o - 2>&1 \ // RUN: -target s390x-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH11 // RUN: %clang -march=z13 -E -dM %s -o - 2>&1 \ // RUN: -target s390x-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH11 -// // CHECK_SYSTEMZ_ARCH11: #define __ARCH__ 11 // CHECK_SYSTEMZ_ARCH11: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 // CHECK_SYSTEMZ_ARCH11: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 @@ -2484,14 +2799,13 @@ // CHECK_SYSTEMZ_ARCH11: #define __s390__ 1 // CHECK_SYSTEMZ_ARCH11: #define __s390x__ 1 // CHECK_SYSTEMZ_ARCH11: #define __zarch__ 1 -// + // RUN: %clang -march=arch12 -E -dM %s -o - 2>&1 \ // RUN: -target s390x-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH12 // RUN: %clang -march=z14 -E -dM %s -o - 2>&1 \ // RUN: -target s390x-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH12 -// // CHECK_SYSTEMZ_ARCH12: #define __ARCH__ 12 // CHECK_SYSTEMZ_ARCH12: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 // CHECK_SYSTEMZ_ARCH12: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 @@ -2503,30 +2817,27 @@ // CHECK_SYSTEMZ_ARCH12: #define __s390__ 1 // CHECK_SYSTEMZ_ARCH12: #define __s390x__ 1 // CHECK_SYSTEMZ_ARCH12: #define __zarch__ 1 -// + // RUN: %clang -mhtm -E -dM %s -o - 2>&1 \ // RUN: -target s390x-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_HTM -// // CHECK_SYSTEMZ_HTM: #define __HTM__ 1 -// + // RUN: %clang -mvx -E -dM %s -o - 2>&1 \ // RUN: -target s390x-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_VX -// // CHECK_SYSTEMZ_VX: #define __VX__ 1 -// + // RUN: %clang -fzvector -E -dM %s -o - 2>&1 \ // RUN: -target s390x-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ZVECTOR // RUN: %clang -mzvector -E -dM %s -o - 2>&1 \ // RUN: -target s390x-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ZVECTOR -// // CHECK_SYSTEMZ_ZVECTOR: #define __VEC__ 10302 // Begin amdgcn tests ---------------- -// + // RUN: %clang -march=amdgcn -E -dM %s -o - 2>&1 \ // RUN: -target amdgcn-unknown-unknown \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_AMDGCN @@ -2536,7 +2847,7 @@ // CHECK_AMDGCN: #define __HAS_LDEXPF__ 1 // Begin r600 tests ---------------- -// + // RUN: %clang -march=amdgcn -E -dM %s -o - 2>&1 \ // RUN: -target r600-unknown-unknown \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_R600 diff --git a/test/Preprocessor/predefined-macros.c b/test/Preprocessor/predefined-macros.c index def1ef90f55d..9296b1cf5a50 100644 --- a/test/Preprocessor/predefined-macros.c +++ b/test/Preprocessor/predefined-macros.c @@ -1,33 +1,5 @@ // This test verifies that the correct macros are predefined. // -// RUN: %clang_cc1 %s -x c++ -E -dM -triple i686-pc-win32 -fms-extensions -fms-compatibility \ -// RUN: -fms-compatibility-version=19.00 -std=c++1z -o - | FileCheck -match-full-lines %s --check-prefix=CHECK-MS -// CHECK-MS: #define _INTEGRAL_MAX_BITS 64 -// CHECK-MS: #define _MSC_EXTENSIONS 1 -// CHECK-MS: #define _MSC_VER 1900 -// CHECK-MS: #define _MSVC_LANG 201403L -// CHECK-MS: #define _M_IX86 600 -// CHECK-MS: #define _M_IX86_FP 0 -// CHECK-MS: #define _WIN32 1 -// CHECK-MS-NOT: #define __STRICT_ANSI__ -// CHECK-MS-NOT: GCC -// CHECK-MS-NOT: GNU -// CHECK-MS-NOT: GXX -// -// RUN: %clang_cc1 %s -x c++ -E -dM -triple x86_64-pc-win32 -fms-extensions -fms-compatibility \ -// RUN: -fms-compatibility-version=19.00 -std=c++14 -o - | FileCheck -match-full-lines %s --check-prefix=CHECK-MS64 -// CHECK-MS64: #define _INTEGRAL_MAX_BITS 64 -// CHECK-MS64: #define _MSC_EXTENSIONS 1 -// CHECK-MS64: #define _MSC_VER 1900 -// CHECK-MS64: #define _MSVC_LANG 201402L -// 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 -// CHECK-MS64-NOT: GNU -// CHECK-MS64-NOT: GXX -// // RUN: %clang_cc1 %s -E -dM -triple i686-pc-win32 -fms-compatibility \ // RUN: -o - | FileCheck -match-full-lines %s --check-prefix=CHECK-MS-STDINT // CHECK-MS-STDINT:#define __INT16_MAX__ 32767 @@ -159,6 +131,8 @@ // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-CL20 // RUN: %clang_cc1 %s -E -dM -o - -x cl -cl-fast-relaxed-math \ // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-FRM +// RUN: %clang_cc1 %s -E -dM -o - -x cl -cl-std=c++ \ +// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-CLCPP10 // CHECK-CL10: #define CL_VERSION_1_0 100 // CHECK-CL10: #define CL_VERSION_1_1 110 // CHECK-CL10: #define CL_VERSION_1_2 120 @@ -184,6 +158,10 @@ // CHECK-CL20: #define __OPENCL_C_VERSION__ 200 // CHECK-CL20-NOT: #define __FAST_RELAXED_MATH__ 1 // CHECK-FRM: #define __FAST_RELAXED_MATH__ 1 +// CHECK-CLCPP10: #define __CL_CPP_VERSION_1_0__ 100 +// CHECK-CLCPP10: #define __OPENCL_CPP_VERSION__ 100 +// CHECK-CLCPP10-NOT: #define __FAST_RELAXED_MATH__ 1 +// CHECK-CLCPP10-NOT: #define __ENDIAN_LITTLE__ 1 // RUN: %clang_cc1 %s -E -dM -o - -x cl \ // RUN: | FileCheck %s --check-prefix=MSCOPE @@ -193,81 +171,21 @@ // MSCOPE:#define __OPENCL_MEMORY_SCOPE_WORK_GROUP 1 // MSCOPE:#define __OPENCL_MEMORY_SCOPE_WORK_ITEM 0 -// RUN: %clang_cc1 -triple i386-windows %s -E -dM -o - \ -// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-X86-WIN - -// CHECK-X86-WIN-NOT: #define WIN32 1 -// CHECK-X86-WIN-NOT: #define WIN64 1 -// CHECK-X86-WIN-NOT: #define WINNT 1 -// CHECK-X86-WIN: #define _WIN32 1 -// CHECK-X86-WIN-NOT: #define _WIN64 1 - -// RUN: %clang_cc1 -triple thumbv7-windows %s -E -dM -o - \ -// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-ARM-WIN - -// CHECK-ARM-WIN-NOT: #define WIN32 1 -// CHECK-ARM-WIN-NOT: #define WIN64 1 -// CHECK-ARM-WIN-NOT: #define WINNT 1 -// CHECK-ARM-WIN: #define _WIN32 1 -// CHECK-ARM-WIN-NOT: #define _WIN64 1 - -// RUN: %clang_cc1 -triple x86_64-windows %s -E -dM -o - \ -// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-AMD64-WIN - -// CHECK-AMD64-WIN-NOT: #define WIN32 1 -// CHECK-AMD64-WIN-NOT: #define WIN64 1 -// CHECK-AMD64-WIN-NOT: #define WINNT 1 -// CHECK-AMD64-WIN: #define _WIN32 1 -// CHECK-AMD64-WIN: #define _WIN64 1 - -// RUN: %clang_cc1 -triple aarch64-windows %s -E -dM -o - \ -// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-ARM64-WIN - -// CHECK-ARM64-WIN-NOT: #define WIN32 1 -// CHECK-ARM64-WIN-NOT: #define WIN64 1 -// CHECK-ARM64-WIN-NOT: #define WINNT 1 -// CHECK-ARM64-WIN: #define _M_ARM64 1 -// CHECK-ARM64-WIN: #define _WIN32 1 -// CHECK-ARM64-WIN: #define _WIN64 1 - -// RUN: %clang_cc1 -triple i686-windows-gnu %s -E -dM -o - \ -// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-X86-MINGW - -// CHECK-X86-MINGW: #define WIN32 1 -// CHECK-X86-MINGW-NOT: #define WIN64 1 -// CHECK-X86-MINGW: #define WINNT 1 -// CHECK-X86-MINGW: #define _WIN32 1 -// CHECK-X86-MINGW-NOT: #define _WIN64 1 - -// RUN: %clang_cc1 -triple thumbv7-windows-gnu %s -E -dM -o - \ -// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-ARM-MINGW - -// CHECK-ARM-MINGW: #define WIN32 1 -// CHECK-ARM-MINGW-NOT: #define WIN64 1 -// CHECK-ARM-MINGW: #define WINNT 1 -// CHECK-ARM-MINGW: #define _WIN32 1 -// CHECK-ARM-MINGW-NOT: #define _WIN64 1 - -// RUN: %clang_cc1 -triple x86_64-windows-gnu %s -E -dM -o - \ -// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-AMD64-MINGW - -// CHECK-AMD64-MINGW: #define WIN32 1 -// CHECK-AMD64-MINGW: #define WIN64 1 -// CHECK-AMD64-MINGW: #define WINNT 1 -// CHECK-AMD64-MINGW: #define _WIN32 1 -// CHECK-AMD64-MINGW: #define _WIN64 1 - -// RUN: %clang_cc1 -triple aarch64-windows-gnu %s -E -dM -o - \ -// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-ARM64-MINGW - -// CHECK-ARM64-MINGW-NOT: #define _M_ARM64 1 -// CHECK-ARM64-MINGW: #define WIN32 1 -// CHECK-ARM64-MINGW: #define WIN64 1 -// CHECK-ARM64-MINGW: #define WINNT 1 -// CHECK-ARM64-MINGW: #define _WIN32 1 -// CHECK-ARM64-MINGW: #define _WIN64 1 -// CHECK-ARM64-MINGW: #define __aarch64__ 1 - // RUN: %clang_cc1 %s -E -dM -o - -x cl -triple spir-unknown-unknown \ // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-SPIR // CHECK-SPIR: #define __IMAGE_SUPPORT__ 1 + +// RUN: %clang_cc1 %s -E -dM -o - -x hip -triple amdgcn-amd-amdhsa \ +// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-HIP +// CHECK-HIP-NOT: #define __CUDA_ARCH__ +// CHECK-HIP: #define __HIPCC__ 1 +// CHECK-HIP-NOT: #define __HIP_DEVICE_COMPILE__ 1 +// CHECK-HIP: #define __HIP__ 1 + +// RUN: %clang_cc1 %s -E -dM -o - -x hip -triple amdgcn-amd-amdhsa \ +// RUN: -fcuda-is-device \ +// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-HIP-DEV +// CHECK-HIP-DEV-NOT: #define __CUDA_ARCH__ +// CHECK-HIP-DEV: #define __HIPCC__ 1 +// CHECK-HIP-DEV: #define __HIP_DEVICE_COMPILE__ 1 +// CHECK-HIP-DEV: #define __HIP__ 1 diff --git a/test/Preprocessor/predefined-win-macros.c b/test/Preprocessor/predefined-win-macros.c new file mode 100644 index 000000000000..0979e34860cf --- /dev/null +++ b/test/Preprocessor/predefined-win-macros.c @@ -0,0 +1,110 @@ +// This test verifies that the correct macros are predefined. +// +// RUN: %clang_cc1 %s -x c++ -E -dM -triple x86_64-pc-win32 -fms-extensions -fms-compatibility \ +// RUN: -fms-compatibility-version=19.00 -std=c++14 -o - | FileCheck -match-full-lines %s --check-prefix=CHECK-MS64 +// CHECK-MS64: #define _INTEGRAL_MAX_BITS 64 +// CHECK-MS64: #define _MSC_EXTENSIONS 1 +// CHECK-MS64: #define _MSC_VER 1900 +// CHECK-MS64: #define _MSVC_LANG 201402L +// 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 +// CHECK-MS64-NOT: GNU +// CHECK-MS64-NOT: GXX + +// RUN: %clang_cc1 %s -x c++ -E -dM -triple i686-pc-win32 -fms-extensions -fms-compatibility \ +// RUN: -fms-compatibility-version=19.00 -std=c++17 -o - | FileCheck -match-full-lines %s --check-prefix=CHECK-MS +// CHECK-MS: #define _INTEGRAL_MAX_BITS 64 +// CHECK-MS: #define _MSC_EXTENSIONS 1 +// CHECK-MS: #define _MSC_VER 1900 +// CHECK-MS: #define _MSVC_LANG 201703L +// CHECK-MS: #define _M_IX86 600 +// CHECK-MS: #define _M_IX86_FP 0 +// CHECK-MS: #define _WIN32 1 +// CHECK-MS-NOT: #define __STRICT_ANSI__ +// CHECK-MS-NOT: GCC +// CHECK-MS-NOT: GNU +// CHECK-MS-NOT: GXX + +// RUN: %clang_cc1 %s -x c++ -E -dM -triple i686-pc-win32 -fms-extensions -fms-compatibility \ +// RUN: -fms-compatibility-version=19.00 -std=c++2a -o - | FileCheck -match-full-lines %s --check-prefix=CHECK-MS-CPP2A +// CHECK-MS-CPP2A: #define _MSC_VER 1900 +// CHECK-MS-CPP2A: #define _MSVC_LANG 201704L + +// RUN: %clang_cc1 -triple i386-windows %s -E -dM -o - \ +// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-X86-WIN + +// CHECK-X86-WIN-NOT: #define WIN32 1 +// CHECK-X86-WIN-NOT: #define WIN64 1 +// CHECK-X86-WIN-NOT: #define WINNT 1 +// CHECK-X86-WIN: #define _WIN32 1 +// CHECK-X86-WIN-NOT: #define _WIN64 1 + +// RUN: %clang_cc1 -triple thumbv7-windows %s -E -dM -o - \ +// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-ARM-WIN + +// CHECK-ARM-WIN-NOT: #define WIN32 1 +// CHECK-ARM-WIN-NOT: #define WIN64 1 +// CHECK-ARM-WIN-NOT: #define WINNT 1 +// CHECK-ARM-WIN: #define _WIN32 1 +// CHECK-ARM-WIN-NOT: #define _WIN64 1 + +// RUN: %clang_cc1 -triple x86_64-windows %s -E -dM -o - \ +// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-AMD64-WIN + +// CHECK-AMD64-WIN-NOT: #define WIN32 1 +// CHECK-AMD64-WIN-NOT: #define WIN64 1 +// CHECK-AMD64-WIN-NOT: #define WINNT 1 +// CHECK-AMD64-WIN: #define _WIN32 1 +// CHECK-AMD64-WIN: #define _WIN64 1 + +// RUN: %clang_cc1 -triple aarch64-windows %s -E -dM -o - \ +// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-ARM64-WIN + +// CHECK-ARM64-WIN-NOT: #define WIN32 1 +// CHECK-ARM64-WIN-NOT: #define WIN64 1 +// CHECK-ARM64-WIN-NOT: #define WINNT 1 +// CHECK-ARM64-WIN: #define _M_ARM64 1 +// CHECK-ARM64-WIN: #define _WIN32 1 +// CHECK-ARM64-WIN: #define _WIN64 1 + +// RUN: %clang_cc1 -triple i686-windows-gnu %s -E -dM -o - \ +// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-X86-MINGW + +// CHECK-X86-MINGW: #define WIN32 1 +// CHECK-X86-MINGW-NOT: #define WIN64 1 +// CHECK-X86-MINGW: #define WINNT 1 +// CHECK-X86-MINGW: #define _WIN32 1 +// CHECK-X86-MINGW-NOT: #define _WIN64 1 + +// RUN: %clang_cc1 -triple thumbv7-windows-gnu %s -E -dM -o - \ +// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-ARM-MINGW + +// CHECK-ARM-MINGW: #define WIN32 1 +// CHECK-ARM-MINGW-NOT: #define WIN64 1 +// CHECK-ARM-MINGW: #define WINNT 1 +// CHECK-ARM-MINGW: #define _WIN32 1 +// CHECK-ARM-MINGW-NOT: #define _WIN64 1 + +// RUN: %clang_cc1 -triple x86_64-windows-gnu %s -E -dM -o - \ +// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-AMD64-MINGW + +// CHECK-AMD64-MINGW: #define WIN32 1 +// CHECK-AMD64-MINGW: #define WIN64 1 +// CHECK-AMD64-MINGW: #define WINNT 1 +// CHECK-AMD64-MINGW: #define _WIN32 1 +// CHECK-AMD64-MINGW: #define _WIN64 1 + +// RUN: %clang_cc1 -triple aarch64-windows-gnu %s -E -dM -o - \ +// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-ARM64-MINGW + +// CHECK-ARM64-MINGW-NOT: #define _M_ARM64 1 +// CHECK-ARM64-MINGW: #define WIN32 1 +// CHECK-ARM64-MINGW: #define WIN64 1 +// CHECK-ARM64-MINGW: #define WINNT 1 +// CHECK-ARM64-MINGW: #define _WIN32 1 +// CHECK-ARM64-MINGW: #define _WIN64 1 +// CHECK-ARM64-MINGW: #define __aarch64__ 1 + diff --git a/test/Preprocessor/riscv-target-features.c b/test/Preprocessor/riscv-target-features.c new file mode 100644 index 000000000000..2c63e0fa29df --- /dev/null +++ b/test/Preprocessor/riscv-target-features.c @@ -0,0 +1,49 @@ +// RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32i -x c -E -dM %s \ +// RUN: -o - | FileCheck %s +// RUN: %clang -target riscv64-unknown-linux-gnu -march=rv64i -x c -E -dM %s \ +// RUN: -o - | FileCheck %s + +// CHECK-NOT: __riscv_div +// CHECK-NOT: __riscv_mul +// CHECK-NOT: __riscv_muldiv +// CHECK-NOT: __riscv_compressed +// CHECK-NOT: __riscv_flen +// CHECK-NOT: __riscv_fdiv +// CHECK-NOT: __riscv_fsqrt +// CHECK-NOT: __riscv_atomic + +// RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32im -x c -E -dM %s \ +// RUN: -o - | FileCheck --check-prefix=CHECK-M-EXT %s +// RUN: %clang -target riscv64-unknown-linux-gnu -march=rv64im -x c -E -dM %s \ +// RUN: -o - | FileCheck --check-prefix=CHECK-M-EXT %s +// CHECK-M-EXT: __riscv_div 1 +// CHECK-M-EXT: __riscv_mul 1 +// CHECK-M-EXT: __riscv_muldiv 1 + +// RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32ia -x c -E -dM %s \ +// RUN: -o - | FileCheck --check-prefix=CHECK-A-EXT %s +// RUN: %clang -target riscv64-unknown-linux-gnu -march=rv64ia -x c -E -dM %s \ +// RUN: -o - | FileCheck --check-prefix=CHECK-A-EXT %s +// CHECK-A-EXT: __riscv_atomic 1 + +// RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32if -x c -E -dM %s \ +// RUN: -o - | FileCheck --check-prefix=CHECK-F-EXT %s +// RUN: %clang -target riscv64-unknown-linux-gnu -march=rv64if -x c -E -dM %s \ +// RUN: -o - | FileCheck --check-prefix=CHECK-F-EXT %s +// CHECK-F-EXT: __riscv_fdiv 1 +// CHECK-F-EXT: __riscv_flen 32 +// CHECK-F-EXT: __riscv_fsqrt 1 + +// RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32ifd -x c -E -dM %s \ +// RUN: -o - | FileCheck --check-prefix=CHECK-D-EXT %s +// RUN: %clang -target riscv64-unknown-linux-gnu -march=rv64ifd -x c -E -dM %s \ +// RUN: -o - | FileCheck --check-prefix=CHECK-D-EXT %s +// CHECK-D-EXT: __riscv_fdiv 1 +// CHECK-D-EXT: __riscv_flen 64 +// CHECK-D-EXT: __riscv_fsqrt 1 + +// RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32ic -x c -E -dM %s \ +// RUN: -o - | FileCheck --check-prefix=CHECK-C-EXT %s +// RUN: %clang -target riscv64-unknown-linux-gnu -march=rv64ic -x c -E -dM %s \ +// RUN: -o - | FileCheck --check-prefix=CHECK-C-EXT %s +// CHECK-C-EXT: __riscv_compressed 1 diff --git a/test/Preprocessor/stdint.c b/test/Preprocessor/stdint.c index 3b32346d5edc..fc179b4ba538 100644 --- a/test/Preprocessor/stdint.c +++ b/test/Preprocessor/stdint.c @@ -636,8 +636,8 @@ // // RUN: %clang_cc1 -E -ffreestanding -triple=powerpc64-none-netbsd %s | FileCheck -check-prefix PPC64-NETBSD %s // -// PPC64-NETBSD:typedef long long int int64_t; -// PPC64-NETBSD:typedef long long unsigned int uint64_t; +// PPC64-NETBSD:typedef long int int64_t; +// PPC64-NETBSD:typedef long unsigned int uint64_t; // PPC64-NETBSD:typedef int64_t int_least64_t; // PPC64-NETBSD:typedef uint64_t uint_least64_t; // PPC64-NETBSD:typedef int64_t int_fast64_t; @@ -667,8 +667,8 @@ // PPC64-NETBSD:typedef long int intptr_t; // PPC64-NETBSD:typedef long unsigned int uintptr_t; // -// PPC64-NETBSD:typedef long long int intmax_t; -// PPC64-NETBSD:typedef long long unsigned int uintmax_t; +// PPC64-NETBSD:typedef long int intmax_t; +// PPC64-NETBSD:typedef long unsigned int uintmax_t; // // PPC64-NETBSD:INT8_MAX_ 127 // PPC64-NETBSD:INT8_MIN_ (-127 -1) @@ -700,15 +700,15 @@ // PPC64-NETBSD:INT_FAST32_MAX_ 2147483647 // PPC64-NETBSD:UINT_FAST32_MAX_ 4294967295U // -// PPC64-NETBSD:INT64_MAX_ 9223372036854775807LL -// PPC64-NETBSD:INT64_MIN_ (-9223372036854775807LL -1) -// PPC64-NETBSD:UINT64_MAX_ 18446744073709551615ULL -// PPC64-NETBSD:INT_LEAST64_MIN_ (-9223372036854775807LL -1) -// PPC64-NETBSD:INT_LEAST64_MAX_ 9223372036854775807LL -// PPC64-NETBSD:UINT_LEAST64_MAX_ 18446744073709551615ULL -// PPC64-NETBSD:INT_FAST64_MIN_ (-9223372036854775807LL -1) -// PPC64-NETBSD:INT_FAST64_MAX_ 9223372036854775807LL -// PPC64-NETBSD:UINT_FAST64_MAX_ 18446744073709551615ULL +// PPC64-NETBSD:INT64_MAX_ 9223372036854775807L +// PPC64-NETBSD:INT64_MIN_ (-9223372036854775807L -1) +// PPC64-NETBSD:UINT64_MAX_ 18446744073709551615UL +// PPC64-NETBSD:INT_LEAST64_MIN_ (-9223372036854775807L -1) +// PPC64-NETBSD:INT_LEAST64_MAX_ 9223372036854775807L +// PPC64-NETBSD:UINT_LEAST64_MAX_ 18446744073709551615UL +// PPC64-NETBSD:INT_FAST64_MIN_ (-9223372036854775807L -1) +// PPC64-NETBSD:INT_FAST64_MAX_ 9223372036854775807L +// PPC64-NETBSD:UINT_FAST64_MAX_ 18446744073709551615UL // // PPC64-NETBSD:INTPTR_MIN_ (-9223372036854775807L -1) // PPC64-NETBSD:INTPTR_MAX_ 9223372036854775807L @@ -717,9 +717,9 @@ // PPC64-NETBSD:PTRDIFF_MAX_ 9223372036854775807L // PPC64-NETBSD:SIZE_MAX_ 18446744073709551615UL // -// PPC64-NETBSD:INTMAX_MIN_ (-9223372036854775807LL -1) -// PPC64-NETBSD:INTMAX_MAX_ 9223372036854775807LL -// PPC64-NETBSD:UINTMAX_MAX_ 18446744073709551615ULL +// PPC64-NETBSD:INTMAX_MIN_ (-9223372036854775807L -1) +// PPC64-NETBSD:INTMAX_MAX_ 9223372036854775807L +// PPC64-NETBSD:UINTMAX_MAX_ 18446744073709551615UL // // PPC64-NETBSD:SIG_ATOMIC_MIN_ (-2147483647 -1) // PPC64-NETBSD:SIG_ATOMIC_MAX_ 2147483647 @@ -735,11 +735,11 @@ // PPC64-NETBSD:UINT16_C_(0) 0U // PPC64-NETBSD:INT32_C_(0) 0 // PPC64-NETBSD:UINT32_C_(0) 0U -// PPC64-NETBSD:INT64_C_(0) 0LL -// PPC64-NETBSD:UINT64_C_(0) 0ULL +// PPC64-NETBSD:INT64_C_(0) 0L +// PPC64-NETBSD:UINT64_C_(0) 0UL // -// PPC64-NETBSD:INTMAX_C_(0) 0LL -// PPC64-NETBSD:UINTMAX_C_(0) 0ULL +// PPC64-NETBSD:INTMAX_C_(0) 0L +// PPC64-NETBSD:UINTMAX_C_(0) 0UL // // RUN: %clang_cc1 -E -ffreestanding -triple=powerpc-none-none %s | FileCheck -check-prefix PPC %s // diff --git a/test/Preprocessor/x86_target_features.c b/test/Preprocessor/x86_target_features.c index 542328aca047..2d5369faede0 100644 --- a/test/Preprocessor/x86_target_features.c +++ b/test/Preprocessor/x86_target_features.c @@ -376,9 +376,9 @@ // ADX: #define __ADX__ 1 -// RUN: %clang -target i386-unknown-unknown -mshstk -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=CETSS %s +// RUN: %clang -target i386-unknown-unknown -mshstk -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=SHSTK %s -// CETSS: #define __SHSTK__ 1 +// SHSTK: #define __SHSTK__ 1 // RUN: %clang -target i386-unknown-unknown -march=atom -mrdseed -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=RDSEED %s @@ -436,3 +436,6 @@ // VPCLMULQDQNOPCLMUL-NOT: #define __PCLMUL__ 1 // VPCLMULQDQNOPCLMUL-NOT: #define __VPCLMULQDQ__ 1 +// RUN: %clang -target i386-unknown-unknown -march=atom -mrdpid -x c -E -dM -o - %s | FileCheck -match-full-lines --check-prefix=RDPID %s + +// RDPID: #define __RDPID__ 1 |
