From c19475a8c9c7aa774c23b602a71ef414c706b520 Mon Sep 17 00:00:00 2001 From: David Majnemer Date: Wed, 15 Jul 2015 17:32:34 +0000 Subject: [PATCH] [Targets] Define __BOOL_DEFINED for Windows targets in C++ mode MSVC 4.2 didn't have bool as a builtin type but MSVC 5.0 does. When they added it, they added a macro (__BOOL_DEFINED) which allows build scripts and the like to know if they should provide their own bool. Clang always supports bool as a builtin type in C++ mode. llvm-svn: 242307 --- clang/lib/Basic/Targets.cpp | 2 ++ clang/test/Preprocessor/init.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 2b4f945..af4104f 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -643,6 +643,8 @@ protected: if (Opts.CXXExceptions) Builder.defineMacro("_CPPUNWIND"); + + Builder.defineMacro("__BOOL_DEFINED"); } if (!Opts.CharIsSigned) diff --git a/clang/test/Preprocessor/init.c b/clang/test/Preprocessor/init.c index e80d57b..733e822 100644 --- a/clang/test/Preprocessor/init.c +++ b/clang/test/Preprocessor/init.c @@ -144,12 +144,14 @@ // // MSEXT-CXX:#define _NATIVE_WCHAR_T_DEFINED 1 // MSEXT-CXX:#define _WCHAR_T_DEFINED 1 +// MSEXT-CXX:#define __BOOL_DEFINED 1 // // // RUN: %clang_cc1 -x c++ -fno-wchar -fms-extensions -triple i686-pc-win32 -E -dM < /dev/null | FileCheck -check-prefix MSEXT-CXX-NOWCHAR %s // // MSEXT-CXX-NOWCHAR-NOT:#define _NATIVE_WCHAR_T_DEFINED 1 // MSEXT-CXX-NOWCHAR-NOT:#define _WCHAR_T_DEFINED 1 +// MSEXT-CXX-NOWCHAR:#define __BOOL_DEFINED 1 // // // RUN: %clang_cc1 -x objective-c -E -dM < /dev/null | FileCheck -check-prefix OBJC %s -- 2.7.4