Bump version to 19.1.3
[llvm-project.git] / clang / test / Preprocessor / predefined-win-macros.c
blob7d29e45c7d5ac6bda6f70cadaf92d18555b46597
1 // This test verifies that the correct macros are predefined.
2 //
3 // RUN: %clang_cc1 %s -x c++ -E -dM -triple x86_64-pc-win32 -fms-extensions -fms-compatibility \
4 // RUN: -fms-compatibility-version=19.00 -std=c++14 -o - | FileCheck -match-full-lines %s --check-prefix=CHECK-MS64
5 // RUN: %clang_cc1 %s -x c++ -E -dM -triple x86_64-pc-win32 -fms-extensions -fms-compatibility \
6 // RUN: -fms-compatibility-version=19.00 -std=c++14 -o - | grep GCC | count 7
7 // CHECK-MS64: #define _INTEGRAL_MAX_BITS 64
8 // CHECK-MS64: #define _ISO_VOLATILE 1
9 // CHECK-MS64: #define _MSC_EXTENSIONS 1
10 // CHECK-MS64: #define _MSC_VER 1900
11 // CHECK-MS64: #define _MSVC_LANG 201402L
12 // CHECK-MS64: #define _M_AMD64 100
13 // CHECK-MS64: #define _M_X64 100
14 // CHECK-MS64: #define _WIN64 1
15 // CHECK-MS64-NOT: #define __STRICT_ANSI__
16 // CHECK-MS64-NOT: GNU
17 // CHECK-MS64-NOT: GXX
18 // CHECK-MS64: #define __GCC_ASM_FLAG_OUTPUTS__ 1
19 // CHECK-MS64: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
20 // CHECK-MS64: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
21 // CHECK-MS64: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
22 // CHECK-MS64: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
23 // CHECK-MS64-NOT: GNU
24 // CHECK-MS64-NOT: GXX
26 // RUN: %clang_cc1 %s -x c++ -E -dM -triple i686-pc-win32 -fms-extensions -fms-compatibility \
27 // RUN: -fms-compatibility-version=19.00 -std=c++17 -o - | FileCheck -match-full-lines %s --check-prefix=CHECK-MS
28 // RUN: %clang_cc1 %s -x c++ -E -dM -triple i686-pc-win32 -fms-extensions -fms-compatibility \
29 // RUN: -fms-compatibility-version=19.00 -std=c++17 -o - | grep GCC | count 7
30 // CHECK-MS: #define _INTEGRAL_MAX_BITS 64
31 // CHECK-MS: #define _ISO_VOLATILE 1
32 // CHECK-MS: #define _MSC_EXTENSIONS 1
33 // CHECK-MS: #define _MSC_VER 1900
34 // CHECK-MS: #define _MSVC_LANG 201703L
35 // CHECK-MS: #define _M_IX86 600
36 // CHECK-MS: #define _M_IX86_FP 0
37 // CHECK-MS: #define _WIN32 1
38 // CHECK-MS-NOT: #define __STRICT_ANSI__
39 // CHECK-MS-NOT: GNU
40 // CHECK-MS-NOT: GXX
41 // CHECK-MS: #define __GCC_ASM_FLAG_OUTPUTS__ 1
42 // CHECK-MS: #define __GCC_CONSTRUCTIVE_SIZE {{.+}}
43 // CHECK-MS: #define __GCC_DESTRUCTIVE_SIZE {{.+}}
44 // CHECK-MS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
45 // CHECK-MS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
46 // CHECK-MS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
47 // CHECK-MS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
48 // CHECK-MS-NOT: GNU
49 // CHECK-MS-NOT: GXX
51 // RUN: %clang_cc1 %s -x c++ -E -dM -triple i686-pc-win32 -fms-extensions -fms-compatibility \
52 // RUN: -fms-compatibility-version=19.00 -std=c++20 -o - | FileCheck -match-full-lines %s --check-prefix=CHECK-MS-CPP20
53 // CHECK-MS-CPP20: #define _MSC_VER 1900
54 // CHECK-MS-CPP20: #define _MSVC_LANG 202002L
56 // RUN: %clang_cc1 %s -x c++ -E -dM -triple i686-pc-win32 -fms-extensions -fms-compatibility \
57 // RUN: -fms-compatibility-version=19.00 -std=c++23 -o - | FileCheck -match-full-lines %s --check-prefix=CHECK-MS-CPP2B
58 // CHECK-MS-CPP2B: #define _MSC_VER 1900
59 // CHECK-MS-CPP2B: #define _MSVC_LANG 202004L
61 // RUN: %clang_cc1 -triple i386-windows %s -E -dM -o - \
62 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-X86-WIN
64 // CHECK-X86-WIN-NOT: #define WIN32 1
65 // CHECK-X86-WIN-NOT: #define WIN64 1
66 // CHECK-X86-WIN-NOT: #define WINNT 1
67 // CHECK-X86-WIN: #define _WIN32 1
68 // CHECK-X86-WIN-NOT: #define _WIN64 1
70 // RUN: %clang_cc1 -triple thumbv7-windows %s -E -dM -o - \
71 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-ARM-WIN
73 // CHECK-ARM-WIN-NOT: #define WIN32 1
74 // CHECK-ARM-WIN-NOT: #define WIN64 1
75 // CHECK-ARM-WIN-NOT: #define WINNT 1
76 // CHECK-ARM-WIN: #define _WIN32 1
77 // CHECK-ARM-WIN-NOT: #define _WIN64 1
79 // RUN: %clang_cc1 -triple x86_64-windows %s -E -dM -o - \
80 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-AMD64-WIN
82 // CHECK-AMD64-WIN-NOT: #define WIN32 1
83 // CHECK-AMD64-WIN-NOT: #define WIN64 1
84 // CHECK-AMD64-WIN-NOT: #define WINNT 1
85 // CHECK-AMD64-WIN: #define _WIN32 1
86 // CHECK-AMD64-WIN: #define _WIN64 1
88 // RUN: %clang_cc1 -triple aarch64-windows %s -E -dM -o - \
89 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-ARM64-WIN
91 // CHECK-ARM64-WIN-NOT: #define WIN32 1
92 // CHECK-ARM64-WIN-NOT: #define WIN64 1
93 // CHECK-ARM64-WIN-NOT: #define WINNT 1
94 // CHECK-ARM64-WIN: #define _M_ARM64 1
95 // CHECK-ARM64-WIN: #define _WIN32 1
96 // CHECK-ARM64-WIN: #define _WIN64 1
98 // RUN: %clang_cc1 -triple arm64ec-windows %s -E -dM -o - \
99 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-ARM64EC-WIN
101 // CHECK-ARM64EC-WIN-NOT: #define WIN32 1
102 // CHECK-ARM64EC-WIN-NOT: #define WIN64 1
103 // CHECK-ARM64EC-WIN-NOT: #define WINNT 1
104 // CHECK-ARM64EC-WIN-NOT: #define _M_ARM64 1
105 // CHECK-ARM64EC-WIN: #define _M_AMD64 100
106 // CHECK-ARM64EC-WIN: #define _M_ARM64EC 1
107 // CHECK-ARM64EC-WIN: #define _M_X64 100
108 // CHECK-ARM64EC-WIN: #define _WIN32 1
109 // CHECK-ARM64EC-WIN: #define _WIN64 1
111 // RUN: %clang_cc1 -triple i686-windows-gnu %s -E -dM -o - \
112 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-X86-MINGW
114 // CHECK-X86-MINGW: #define WIN32 1
115 // CHECK-X86-MINGW-NOT: #define WIN64 1
116 // CHECK-X86-MINGW: #define WINNT 1
117 // CHECK-X86-MINGW: #define _WIN32 1
118 // CHECK-X86-MINGW-NOT: #define _WIN64 1
119 // CHECK-X86-MINGW: #define __GXX_TYPEINFO_EQUALITY_INLINE 0
121 // RUN: %clang_cc1 -triple thumbv7-windows-gnu %s -E -dM -o - \
122 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-ARM-MINGW
124 // CHECK-ARM-MINGW: #define WIN32 1
125 // CHECK-ARM-MINGW-NOT: #define WIN64 1
126 // CHECK-ARM-MINGW: #define WINNT 1
127 // CHECK-ARM-MINGW: #define _WIN32 1
128 // CHECK-ARM-MINGW-NOT: #define _WIN64 1
129 // CHECK-ARM-MINGW: #define __GXX_TYPEINFO_EQUALITY_INLINE 0
131 // RUN: %clang_cc1 -triple x86_64-windows-gnu %s -E -dM -o - \
132 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-AMD64-MINGW
134 // CHECK-AMD64-MINGW: #define WIN32 1
135 // CHECK-AMD64-MINGW: #define WIN64 1
136 // CHECK-AMD64-MINGW: #define WINNT 1
137 // CHECK-AMD64-MINGW: #define _WIN32 1
138 // CHECK-AMD64-MINGW: #define _WIN64 1
139 // CHECK-AMD64-MINGW: #define __GXX_TYPEINFO_EQUALITY_INLINE 0
141 // RUN: %clang_cc1 -triple aarch64-windows-gnu %s -E -dM -o - \
142 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-ARM64-MINGW
144 // CHECK-ARM64-MINGW-NOT: #define _M_ARM64 1
145 // CHECK-ARM64-MINGW: #define WIN32 1
146 // CHECK-ARM64-MINGW: #define WIN64 1
147 // CHECK-ARM64-MINGW: #define WINNT 1
148 // CHECK-ARM64-MINGW: #define _WIN32 1
149 // CHECK-ARM64-MINGW: #define _WIN64 1
150 // CHECK-ARM64-MINGW: #define __GCC_ASM_FLAG_OUTPUTS__ 1
151 // CHECK-ARM64-MINGW: #define __GXX_TYPEINFO_EQUALITY_INLINE 0
152 // CHECK-ARM64-MINGW: #define __aarch64__ 1
154 // RUN: %clang_cc1 -triple arm64ec-windows-gnu %s -E -dM -o - \
155 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-ARM64EC-MINGW
157 // CHECK-ARM64EC-MINGW-NOT: #define _M_ARM64EC 1
158 // CHECK-ARM64EC-MINGW: #define WIN32 1
159 // CHECK-ARM64EC-MINGW: #define WIN64 1
160 // CHECK-ARM64EC-MINGW: #define WINNT 1
161 // CHECK-ARM64EC-MINGW: #define _WIN32 1
162 // CHECK-ARM64EC-MINGW: #define _WIN64 1
163 // CHECK-ARM64EC-MINGW: #define __GCC_ASM_FLAG_OUTPUTS__ 1
164 // CHECK-ARM64EC-MINGW: #define __GXX_TYPEINFO_EQUALITY_INLINE 0
165 // CHECK-ARM64EC-MINGW-NOT: #define __aarch64__ 1
166 // CHECK-ARM64EC-MINGW: #define __amd64 1
167 // CHECK-ARM64EC-MINGW: #define __amd64__ 1
168 // CHECK-ARM64EC-MINGW: #define __arm64ec__ 1
169 // CHECK-ARM64EC-MINGW: #define __x86_64 1
170 // CHECK-ARM64EC-MINGW: #define __x86_64__ 1