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 // CHECK-MS64: #define _INTEGRAL_MAX_BITS 64 6 // CHECK-MS64: #define _MSC_EXTENSIONS 1 7 // CHECK-MS64: #define _MSC_VER 1900 8 // CHECK-MS64: #define _MSVC_LANG 201402L 9 // CHECK-MS64: #define _M_AMD64 100 10 // CHECK-MS64: #define _M_X64 100 11 // CHECK-MS64: #define _WIN64 1 12 // CHECK-MS64-NOT: #define __STRICT_ANSI__ 13 // CHECK-MS64-NOT: GCC 14 // CHECK-MS64-NOT: GNU 15 // CHECK-MS64-NOT: GXX 16 17 // RUN: %clang_cc1 %s -x c++ -E -dM -triple i686-pc-win32 -fms-extensions -fms-compatibility \ 18 // RUN: -fms-compatibility-version=19.00 -std=c++17 -o - | FileCheck -match-full-lines %s --check-prefix=CHECK-MS 19 // CHECK-MS: #define _INTEGRAL_MAX_BITS 64 20 // CHECK-MS: #define _MSC_EXTENSIONS 1 21 // CHECK-MS: #define _MSC_VER 1900 22 // CHECK-MS: #define _MSVC_LANG 201703L 23 // CHECK-MS: #define _M_IX86 600 24 // CHECK-MS: #define _M_IX86_FP 0 25 // CHECK-MS: #define _WIN32 1 26 // CHECK-MS-NOT: #define __STRICT_ANSI__ 27 // CHECK-MS-NOT: GCC 28 // CHECK-MS-NOT: GNU 29 // CHECK-MS-NOT: GXX 30 31 // RUN: %clang_cc1 %s -x c++ -E -dM -triple i686-pc-win32 -fms-extensions -fms-compatibility \ 32 // RUN: -fms-compatibility-version=19.00 -std=c++2a -o - | FileCheck -match-full-lines %s --check-prefix=CHECK-MS-CPP2A 33 // CHECK-MS-CPP2A: #define _MSC_VER 1900 34 // CHECK-MS-CPP2A: #define _MSVC_LANG 201704L 35 36 // RUN: %clang_cc1 -triple i386-windows %s -E -dM -o - \ 37 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-X86-WIN 38 39 // CHECK-X86-WIN-NOT: #define WIN32 1 40 // CHECK-X86-WIN-NOT: #define WIN64 1 41 // CHECK-X86-WIN-NOT: #define WINNT 1 42 // CHECK-X86-WIN: #define _WIN32 1 43 // CHECK-X86-WIN-NOT: #define _WIN64 1 44 45 // RUN: %clang_cc1 -triple thumbv7-windows %s -E -dM -o - \ 46 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-ARM-WIN 47 48 // CHECK-ARM-WIN-NOT: #define WIN32 1 49 // CHECK-ARM-WIN-NOT: #define WIN64 1 50 // CHECK-ARM-WIN-NOT: #define WINNT 1 51 // CHECK-ARM-WIN: #define _WIN32 1 52 // CHECK-ARM-WIN-NOT: #define _WIN64 1 53 54 // RUN: %clang_cc1 -triple x86_64-windows %s -E -dM -o - \ 55 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-AMD64-WIN 56 57 // CHECK-AMD64-WIN-NOT: #define WIN32 1 58 // CHECK-AMD64-WIN-NOT: #define WIN64 1 59 // CHECK-AMD64-WIN-NOT: #define WINNT 1 60 // CHECK-AMD64-WIN: #define _WIN32 1 61 // CHECK-AMD64-WIN: #define _WIN64 1 62 63 // RUN: %clang_cc1 -triple aarch64-windows %s -E -dM -o - \ 64 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-ARM64-WIN 65 66 // CHECK-ARM64-WIN-NOT: #define WIN32 1 67 // CHECK-ARM64-WIN-NOT: #define WIN64 1 68 // CHECK-ARM64-WIN-NOT: #define WINNT 1 69 // CHECK-ARM64-WIN: #define _M_ARM64 1 70 // CHECK-ARM64-WIN: #define _WIN32 1 71 // CHECK-ARM64-WIN: #define _WIN64 1 72 73 // RUN: %clang_cc1 -triple i686-windows-gnu %s -E -dM -o - \ 74 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-X86-MINGW 75 76 // CHECK-X86-MINGW: #define WIN32 1 77 // CHECK-X86-MINGW-NOT: #define WIN64 1 78 // CHECK-X86-MINGW: #define WINNT 1 79 // CHECK-X86-MINGW: #define _WIN32 1 80 // CHECK-X86-MINGW-NOT: #define _WIN64 1 81 82 // RUN: %clang_cc1 -triple thumbv7-windows-gnu %s -E -dM -o - \ 83 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-ARM-MINGW 84 85 // CHECK-ARM-MINGW: #define WIN32 1 86 // CHECK-ARM-MINGW-NOT: #define WIN64 1 87 // CHECK-ARM-MINGW: #define WINNT 1 88 // CHECK-ARM-MINGW: #define _WIN32 1 89 // CHECK-ARM-MINGW-NOT: #define _WIN64 1 90 91 // RUN: %clang_cc1 -triple x86_64-windows-gnu %s -E -dM -o - \ 92 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-AMD64-MINGW 93 94 // CHECK-AMD64-MINGW: #define WIN32 1 95 // CHECK-AMD64-MINGW: #define WIN64 1 96 // CHECK-AMD64-MINGW: #define WINNT 1 97 // CHECK-AMD64-MINGW: #define _WIN32 1 98 // CHECK-AMD64-MINGW: #define _WIN64 1 99 100 // RUN: %clang_cc1 -triple aarch64-windows-gnu %s -E -dM -o - \ 101 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-ARM64-MINGW 102 103 // CHECK-ARM64-MINGW-NOT: #define _M_ARM64 1 104 // CHECK-ARM64-MINGW: #define WIN32 1 105 // CHECK-ARM64-MINGW: #define WIN64 1 106 // CHECK-ARM64-MINGW: #define WINNT 1 107 // CHECK-ARM64-MINGW: #define _WIN32 1 108 // CHECK-ARM64-MINGW: #define _WIN64 1 109 // CHECK-ARM64-MINGW: #define __aarch64__ 1 110 111