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