r240597 - Add __nonnull/__nullable/__null_unspecified predefines for Darwin.

Douglas Gregor dgregor at apple.com
Wed Jun 24 15:02:16 PDT 2015


Author: dgregor
Date: Wed Jun 24 17:02:16 2015
New Revision: 240597

URL: http://llvm.org/viewvc/llvm-project?rev=240597&view=rev
Log:
Add __nonnull/__nullable/__null_unspecified predefines for Darwin.

Addresses the rest of rdar://problem/21530726.

Added:
    cfe/trunk/test/Preprocessor/predefined-nullability.c   (with props)
Modified:
    cfe/trunk/lib/Frontend/InitPreprocessor.cpp

Modified: cfe/trunk/lib/Frontend/InitPreprocessor.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/InitPreprocessor.cpp?rev=240597&r1=240596&r2=240597&view=diff
==============================================================================
--- cfe/trunk/lib/Frontend/InitPreprocessor.cpp (original)
+++ cfe/trunk/lib/Frontend/InitPreprocessor.cpp Wed Jun 24 17:02:16 2015
@@ -868,6 +868,14 @@ static void InitializePredefinedMacros(c
                         "__attribute__((objc_ownership(none)))");
   }
 
+  // On Darwin, there are __double_underscored variants of the type
+  // nullability qualifiers.
+  if (TI.getTriple().isOSDarwin()) {
+    Builder.defineMacro("__nonnull", "_Nonnull");
+    Builder.defineMacro("__null_unspecified", "_Null_unspecified");
+    Builder.defineMacro("__nullable", "_Nullable");
+  }
+
   // OpenMP definition
   if (LangOpts.OpenMP) {
     // OpenMP 2.2:

Added: cfe/trunk/test/Preprocessor/predefined-nullability.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/predefined-nullability.c?rev=240597&view=auto
==============================================================================
--- cfe/trunk/test/Preprocessor/predefined-nullability.c (added)
+++ cfe/trunk/test/Preprocessor/predefined-nullability.c Wed Jun 24 17:02:16 2015
@@ -0,0 +1,12 @@
+// RUN: %clang_cc1 %s -E -dM -triple i386-apple-darwin10 -o - | FileCheck %s --check-prefix=CHECK-DARWIN
+
+// RUN: %clang_cc1 %s -E -dM -triple x86_64-unknown-linux -o - | FileCheck %s --check-prefix=CHECK-NONDARWIN
+
+
+// CHECK-DARWIN: #define __nonnull _Nonnull
+// CHECK-DARWIN: #define __null_unspecified _Null_unspecified
+// CHECK-DARWIN: #define __nullable _Nullable
+
+// CHECK-NONDARWIN-NOT: __nonnull
+// CHECK-NONDARWIN: #define __clang__
+// CHECK-NONDARWIN-NOT: __nonnull

Propchange: cfe/trunk/test/Preprocessor/predefined-nullability.c
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cfe/trunk/test/Preprocessor/predefined-nullability.c
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: cfe/trunk/test/Preprocessor/predefined-nullability.c
------------------------------------------------------------------------------
    svn:mime-type = text/plain





More information about the cfe-commits mailing list