diff options
| -rw-r--r-- | clang/lib/Frontend/InitPreprocessor.cpp | 8 | ||||
| -rw-r--r-- | clang/test/Preprocessor/predefined-nullability.c | 12 |
2 files changed, 20 insertions, 0 deletions
diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp index 24171468f1b..025c8b9d43a 100644 --- a/clang/lib/Frontend/InitPreprocessor.cpp +++ b/clang/lib/Frontend/InitPreprocessor.cpp @@ -868,6 +868,14 @@ static void InitializePredefinedMacros(const TargetInfo &TI, "__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: diff --git a/clang/test/Preprocessor/predefined-nullability.c b/clang/test/Preprocessor/predefined-nullability.c new file mode 100644 index 00000000000..d736afa9b08 --- /dev/null +++ b/clang/test/Preprocessor/predefined-nullability.c @@ -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 |

