[PATCH] D40285: [MINGW] normalize WIN32 macros
This revision was automatically updated to reflect the committed changes. Closed by commit rL318755: [MINGW] normalize WIN32 macros (authored by martell). Changed prior to commit: https://reviews.llvm.org/D40285?vs=123751=123755#toc Repository: rL LLVM https://reviews.llvm.org/D40285 Files: cfe/trunk/lib/Basic/Targets.cpp cfe/trunk/lib/Basic/Targets.h cfe/trunk/lib/Basic/Targets/AArch64.cpp cfe/trunk/lib/Basic/Targets/AArch64.h cfe/trunk/lib/Basic/Targets/ARM.cpp cfe/trunk/lib/Basic/Targets/OSTargets.h cfe/trunk/lib/Basic/Targets/X86.h cfe/trunk/test/Preprocessor/predefined-macros.c Index: cfe/trunk/lib/Basic/Targets.h === --- cfe/trunk/lib/Basic/Targets.h +++ cfe/trunk/lib/Basic/Targets.h @@ -40,7 +40,7 @@ bool Tuning = true); LLVM_LIBRARY_VISIBILITY -void addMinGWDefines(const clang::LangOptions , +void addMinGWDefines(const llvm::Triple , const clang::LangOptions , clang::MacroBuilder ); LLVM_LIBRARY_VISIBILITY Index: cfe/trunk/lib/Basic/Targets/AArch64.cpp === --- cfe/trunk/lib/Basic/Targets/AArch64.cpp +++ cfe/trunk/lib/Basic/Targets/AArch64.cpp @@ -474,8 +474,6 @@ void MicrosoftARM64TargetInfo::getVisualStudioDefines( const LangOptions , MacroBuilder ) const { WindowsTargetInfo::getVisualStudioDefines(Opts, Builder); - Builder.defineMacro("_WIN32", "1"); - Builder.defineMacro("_WIN64", "1"); Builder.defineMacro("_M_ARM64", "1"); } @@ -491,17 +489,6 @@ TheCXXABI.set(TargetCXXABI::GenericAArch64); } -void MinGWARM64TargetInfo::getTargetDefines(const LangOptions , -MacroBuilder ) const { - WindowsTargetInfo::getTargetDefines(Opts, Builder); - Builder.defineMacro("_WIN32", "1"); - Builder.defineMacro("_WIN64", "1"); - Builder.defineMacro("WIN32", "1"); - Builder.defineMacro("WIN64", "1"); - addMinGWDefines(Opts, Builder); -} - - DarwinAArch64TargetInfo::DarwinAArch64TargetInfo(const llvm::Triple , const TargetOptions ) : DarwinTargetInfo(Triple, Opts) { Index: cfe/trunk/lib/Basic/Targets/ARM.cpp === --- cfe/trunk/lib/Basic/Targets/ARM.cpp +++ cfe/trunk/lib/Basic/Targets/ARM.cpp @@ -999,11 +999,8 @@ void MinGWARMTargetInfo::getTargetDefines(const LangOptions , MacroBuilder ) const { WindowsARMTargetInfo::getTargetDefines(Opts, Builder); - DefineStd(Builder, "WIN32", Opts); - DefineStd(Builder, "WINNT", Opts); Builder.defineMacro("_ARM_"); Builder.defineMacro("__ARM_DWARF_EH__"); - addMinGWDefines(Opts, Builder); } CygwinARMTargetInfo::CygwinARMTargetInfo(const llvm::Triple , Index: cfe/trunk/lib/Basic/Targets/AArch64.h === --- cfe/trunk/lib/Basic/Targets/AArch64.h +++ cfe/trunk/lib/Basic/Targets/AArch64.h @@ -122,9 +122,6 @@ : public WindowsARM64TargetInfo { public: MinGWARM64TargetInfo(const llvm::Triple , const TargetOptions ); - - void getTargetDefines(const LangOptions , -MacroBuilder ) const override; }; class LLVM_LIBRARY_VISIBILITY AArch64beTargetInfo : public AArch64TargetInfo { Index: cfe/trunk/lib/Basic/Targets/OSTargets.h === --- cfe/trunk/lib/Basic/Targets/OSTargets.h +++ cfe/trunk/lib/Basic/Targets/OSTargets.h @@ -572,6 +572,11 @@ void getOSDefines(const LangOptions , const llvm::Triple , MacroBuilder ) const override { Builder.defineMacro("_WIN32"); +if (Triple.isArch64Bit()) + Builder.defineMacro("_WIN64"); +if (Triple.isWindowsGNUEnvironment()) + addMinGWDefines(Triple, Opts, Builder); + } void getVisualStudioDefines(const LangOptions , MacroBuilder ) const { Index: cfe/trunk/lib/Basic/Targets/X86.h === --- cfe/trunk/lib/Basic/Targets/X86.h +++ cfe/trunk/lib/Basic/Targets/X86.h @@ -410,11 +410,6 @@ ? "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32" : "e-m:e-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32"); } - - void getTargetDefines(const LangOptions , -MacroBuilder ) const override { -WindowsTargetInfo::getTargetDefines(Opts, Builder); - } }; // x86-32 Windows Visual Studio target @@ -451,10 +446,7 @@ void getTargetDefines(const LangOptions , MacroBuilder ) const override { WindowsX86_32TargetInfo::getTargetDefines(Opts, Builder); -DefineStd(Builder, "WIN32", Opts); -DefineStd(Builder, "WINNT", Opts); Builder.defineMacro("_X86_"); -addMinGWDefines(Opts, Builder); } }; @@ -658,12 +650,6 @@
[PATCH] D40285: [MINGW] normalize WIN32 macros
mstorsjo accepted this revision. mstorsjo added a comment. LGTM Repository: rL LLVM https://reviews.llvm.org/D40285 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D40285: [MINGW] normalize WIN32 macros
martell added a comment. @mstorsjo can you confirm this new order looks good to you? Repository: rL LLVM https://reviews.llvm.org/D40285 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D40285: [MINGW] normalize WIN32 macros
martell updated this revision to Diff 123751. martell added a comment. reorder test checks Repository: rL LLVM https://reviews.llvm.org/D40285 Files: lib/Basic/Targets.cpp lib/Basic/Targets.h lib/Basic/Targets/AArch64.cpp lib/Basic/Targets/AArch64.h lib/Basic/Targets/ARM.cpp lib/Basic/Targets/OSTargets.h lib/Basic/Targets/X86.h test/Preprocessor/predefined-macros.c Index: test/Preprocessor/predefined-macros.c === --- test/Preprocessor/predefined-macros.c +++ test/Preprocessor/predefined-macros.c @@ -193,19 +193,77 @@ // 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 Index: lib/Basic/Targets/X86.h === --- lib/Basic/Targets/X86.h +++ lib/Basic/Targets/X86.h @@ -410,11 +410,6 @@ ? "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32" : "e-m:e-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32"); } - - void getTargetDefines(const LangOptions , -MacroBuilder ) const override { -WindowsTargetInfo::getTargetDefines(Opts, Builder); - } }; // x86-32 Windows Visual Studio target @@ -451,10 +446,7 @@ void getTargetDefines(const LangOptions , MacroBuilder ) const override { WindowsX86_32TargetInfo::getTargetDefines(Opts, Builder); -DefineStd(Builder, "WIN32", Opts); -DefineStd(Builder, "WINNT", Opts); Builder.defineMacro("_X86_"); -addMinGWDefines(Opts, Builder); } }; @@ -658,12 +650,6 @@ IntPtrType = SignedLongLong; } - void getTargetDefines(const LangOptions , -MacroBuilder ) const override { -WindowsTargetInfo::getTargetDefines(Opts, Builder); -Builder.defineMacro("_WIN64"); - } - BuiltinVaListKind getBuiltinVaListKind() const override { return TargetInfo::CharPtrBuiltinVaList; } @@ -726,9 +712,6 @@ void getTargetDefines(const LangOptions , MacroBuilder ) const override { WindowsX86_64TargetInfo::getTargetDefines(Opts,
[PATCH] D40285: [MINGW] normalize WIN32 macros
mstorsjo accepted this revision. mstorsjo added a comment. This revision is now accepted and ready to land. LGTM Comment at: test/Preprocessor/predefined-macros.c:200 +// CHECK-X86-WIN: #define _WIN32 1 +// CHECK-X86-WIN-NOT: #define _WIN64 1 +// CHECK-X86-WIN-NOT: #define WINNT 1 In general, these kinds of `-NOT` tests don't work quite as one would want here - if the non-wanted `#define _WIN64` would appear before the expected `#define _WIN32`, it would actually pass this test. Usually the `-DAG` kinds of checks can be used to avoid that issue. Not sure how well it mixes with `-DAG` and `-DAG-NOT` though. Can we assume that these defines appear in alphabetical order? In that case, we can be pretty sure to catch the issue if they're reordered slightly. This at least clearly documents what is the intended behaviour in any case. Repository: rL LLVM https://reviews.llvm.org/D40285 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D40285: [MINGW] normalize WIN32 macros
martell updated this revision to Diff 123747. martell edited the summary of this revision. martell added a comment. [MINGW] normalize WIN32 macros Repository: rL LLVM https://reviews.llvm.org/D40285 Files: lib/Basic/Targets.cpp lib/Basic/Targets.h lib/Basic/Targets/AArch64.cpp lib/Basic/Targets/AArch64.h lib/Basic/Targets/ARM.cpp lib/Basic/Targets/OSTargets.h lib/Basic/Targets/X86.h test/Preprocessor/predefined-macros.c Index: test/Preprocessor/predefined-macros.c === --- test/Preprocessor/predefined-macros.c +++ test/Preprocessor/predefined-macros.c @@ -193,19 +193,79 @@ // 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: #define _WIN32 1 +// CHECK-X86-WIN-NOT: #define _WIN64 1 +// CHECK-X86-WIN-NOT: #define WINNT 1 +// CHECK-X86-WIN-NOT: #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: #define _WIN32 1 +// CHECK-ARM-WIN-NOT: #define _WIN64 1 +// CHECK-ARM-WIN-NOT: #define WINNT 1 +// CHECK-ARM-WIN-NOT: #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: #define _WIN32 1 +// CHECK-AMD64-WIN: #define _WIN64 1 +// CHECK-AMD64-WIN-NOT: #define WINNT 1 +// CHECK-AMD64-WIN-NOT: #define WIN32 1 +// CHECK-AMD64-WIN-NOT: #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: #define _M_ARM64 1 // CHECK-ARM64-WIN: #define _WIN32 1 // CHECK-ARM64-WIN: #define _WIN64 1 +// CHECK-ARM64-WIN-NOT: #define WINNT 1 +// CHECK-ARM64-WIN-NOT: #define WIN32 1 +// CHECK-ARM64-WIN-NOT: #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: #define WINNT 1 +// CHECK-X86-MINGW: #define _WIN32 1 +// CHECK-X86-MINGW-NOT: #define WIN64 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: #define WINNT 1 +// CHECK-ARM-MINGW: #define _WIN32 1 +// CHECK-ARM-MINGW-NOT: #define WIN64 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 Index: lib/Basic/Targets/X86.h === --- lib/Basic/Targets/X86.h +++ lib/Basic/Targets/X86.h @@ -410,11 +410,6 @@ ? "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32" : "e-m:e-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32"); } - - void getTargetDefines(const LangOptions , -MacroBuilder ) const override { -WindowsTargetInfo::getTargetDefines(Opts, Builder); - } }; // x86-32 Windows Visual Studio target @@ -451,10 +446,7 @@ void getTargetDefines(const LangOptions , MacroBuilder ) const override { WindowsX86_32TargetInfo::getTargetDefines(Opts, Builder); -DefineStd(Builder, "WIN32", Opts); -DefineStd(Builder, "WINNT", Opts); Builder.defineMacro("_X86_"); -addMinGWDefines(Opts, Builder); } }; @@ -658,12 +650,6 @@ IntPtrType = SignedLongLong; } - void getTargetDefines(const LangOptions , -MacroBuilder ) const override { -WindowsTargetInfo::getTargetDefines(Opts, Builder); -Builder.defineMacro("_WIN64"); - } - BuiltinVaListKind getBuiltinVaListKind() const override { return TargetInfo::CharPtrBuiltinVaList; } @@ -726,9 +712,6 @@ void getTargetDefines(const LangOptions , MacroBuilder ) const override