]> granicus.if.org Git - clang/commitdiff
_Bool is not a keyword in C++. Fixes PR7388 and PR8349.
authorDouglas Gregor <dgregor@apple.com>
Wed, 13 Oct 2010 20:00:38 +0000 (20:00 +0000)
committerDouglas Gregor <dgregor@apple.com>
Wed, 13 Oct 2010 20:00:38 +0000 (20:00 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116422 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/TokenKinds.def
lib/Basic/IdentifierTable.cpp
test/CodeGenObjC/ivar-layout-64-bitfields.m

index f222eeaf70815532c3c45bb1be578fb904f7d0f4..14cb0f3a2519938c5530981ed75e658a8ecb67cd 100644 (file)
@@ -183,6 +183,7 @@ PUNCTUATOR(at,                  "@")
 //   KEYC99   - This is a keyword introduced to C in C99
 //   KEYCXX   - This is a C++ keyword, or a C++-specific keyword in the
 //              implementation namespace
+//   KEYNOCXX - This is a keyword in every non-C++ dialect.
 //   KEYCXX0X - This is a C++ keyword introduced to C++ in C++0x
 //   KEYGNU   - This is a keyword if GNU extensions are enabled
 //   KEYMS    - This is a keyword if Microsoft extensions are enabled
@@ -222,7 +223,7 @@ KEYWORD(unsigned                    , KEYALL)
 KEYWORD(void                        , KEYALL)
 KEYWORD(volatile                    , KEYALL)
 KEYWORD(while                       , KEYALL)
-KEYWORD(_Bool                       , KEYNOMS)
+KEYWORD(_Bool                       , KEYNOCXX)
 KEYWORD(_Complex                    , KEYALL)
 KEYWORD(_Imaginary                  , KEYALL)
 KEYWORD(__func__                    , KEYALL)
index 6b673e39d365690b4c76cf35f3fcad2cfaedff88..bd30c68da2b71734cbfebeaca9f8e686f0b31dad 100644 (file)
@@ -73,7 +73,7 @@ namespace {
     KEYMS = 32,
     BOOLSUPPORT = 64,
     KEYALTIVEC = 128,
-    KEYNOMS = 256,
+    KEYNOCXX = 256,
     KEYBORLAND = 512
   };
 }
@@ -99,7 +99,7 @@ static void AddKeyword(llvm::StringRef Keyword,
   else if (LangOpts.Borland && (Flags & KEYBORLAND)) AddResult = 1;
   else if (LangOpts.Bool && (Flags & BOOLSUPPORT)) AddResult = 2;
   else if (LangOpts.AltiVec && (Flags & KEYALTIVEC)) AddResult = 2;
-  else if (!LangOpts.Microsoft && (Flags & KEYNOMS)) AddResult = 2;
+  else if (!LangOpts.CPlusPlus && (Flags & KEYNOCXX)) AddResult = 2;
 
   // Don't add this keyword if disabled in this language.
   if (AddResult == 0) return;
index 9710e16172dfb558b8c1bca1c5ff50632acfa152..700ce18d74cbb713dfb3e50d95c0c9efb2d987df 100644 (file)
@@ -1,5 +1,10 @@
 // RUN: %clang_cc1 -triple x86_64-apple-darwin9 -fobjc-gc -emit-llvm -o %t %s
 // RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin9 -fobjc-gc -emit-llvm -o %t %s
+
+#ifdef __cplusplus
+typedef bool _Bool;
+#endif
+
 @interface I
 {
   struct {