summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/lib/ARCMigrate/ObjCMT.cpp2
-rw-r--r--clang/test/ARCMT/objcmt-ns-macros.m20
-rw-r--r--clang/test/ARCMT/objcmt-ns-macros.m.result20
3 files changed, 41 insertions, 1 deletions
diff --git a/clang/lib/ARCMigrate/ObjCMT.cpp b/clang/lib/ARCMigrate/ObjCMT.cpp
index c15b4107444..5d36fa7b8ab 100644
--- a/clang/lib/ARCMigrate/ObjCMT.cpp
+++ b/clang/lib/ARCMigrate/ObjCMT.cpp
@@ -508,7 +508,7 @@ static bool UseNSOptionsMacro(Preprocessor &PP, ASTContext &Ctx,
PowerOfTwo = false;
continue;
}
- InitExpr = InitExpr->IgnoreImpCasts();
+ InitExpr = InitExpr->IgnoreParenCasts();
if (const BinaryOperator *BO = dyn_cast<BinaryOperator>(InitExpr))
if (BO->isShiftOp() || BO->isBitwiseOp())
return true;
diff --git a/clang/test/ARCMT/objcmt-ns-macros.m b/clang/test/ARCMT/objcmt-ns-macros.m
index ccf666c1e0c..edc3ffd4043 100644
--- a/clang/test/ARCMT/objcmt-ns-macros.m
+++ b/clang/test/ARCMT/objcmt-ns-macros.m
@@ -126,3 +126,23 @@ typedef enum {
D_NSTickMarkAbove = 1
} D_NSTickMarkPosition DEPRECATED;
+
+#define NS_ENUM_AVAILABLE(X,Y)
+
+enum {
+ NSFStrongMemory NS_ENUM_AVAILABLE(10_5, 6_0) = (0UL << 0),
+ NSFOpaqueMemory NS_ENUM_AVAILABLE(10_5, 6_0) = (2UL << 0),
+ NSFMallocMemory NS_ENUM_AVAILABLE(10_5, 6_0) = (3UL << 0),
+ NSFMachVirtualMemory NS_ENUM_AVAILABLE(10_5, 6_0) = (4UL << 0),
+ NSFWeakMemory NS_ENUM_AVAILABLE(10_8, 6_0) = (5UL << 0),
+
+ NSFObjectPersonality NS_ENUM_AVAILABLE(10_5, 6_0) = (0UL << 8),
+ NSFOpaquePersonality NS_ENUM_AVAILABLE(10_5, 6_0) = (1UL << 8),
+ NSFObjectPointerPersonality NS_ENUM_AVAILABLE(10_5, 6_0) = (2UL << 8),
+ NSFCStringPersonality NS_ENUM_AVAILABLE(10_5, 6_0) = (3UL << 8),
+ NSFStructPersonality NS_ENUM_AVAILABLE(10_5, 6_0) = (4UL << 8),
+ NSFIntegerPersonality NS_ENUM_AVAILABLE(10_5, 6_0) = (5UL << 8),
+ NSFCopyIn NS_ENUM_AVAILABLE(10_5, 6_0) = (1UL << 16),
+};
+
+typedef NSUInteger NSFOptions;
diff --git a/clang/test/ARCMT/objcmt-ns-macros.m.result b/clang/test/ARCMT/objcmt-ns-macros.m.result
index b94b31b8820..674de3e9168 100644
--- a/clang/test/ARCMT/objcmt-ns-macros.m.result
+++ b/clang/test/ARCMT/objcmt-ns-macros.m.result
@@ -126,3 +126,23 @@ typedef enum {
D_NSTickMarkAbove = 1
} D_NSTickMarkPosition DEPRECATED;
+
+#define NS_ENUM_AVAILABLE(X,Y)
+
+typedef NS_OPTIONS(NSUInteger, NSFOptions) {
+ NSFStrongMemory NS_ENUM_AVAILABLE(10_5, 6_0) = (0UL << 0),
+ NSFOpaqueMemory NS_ENUM_AVAILABLE(10_5, 6_0) = (2UL << 0),
+ NSFMallocMemory NS_ENUM_AVAILABLE(10_5, 6_0) = (3UL << 0),
+ NSFMachVirtualMemory NS_ENUM_AVAILABLE(10_5, 6_0) = (4UL << 0),
+ NSFWeakMemory NS_ENUM_AVAILABLE(10_8, 6_0) = (5UL << 0),
+
+ NSFObjectPersonality NS_ENUM_AVAILABLE(10_5, 6_0) = (0UL << 8),
+ NSFOpaquePersonality NS_ENUM_AVAILABLE(10_5, 6_0) = (1UL << 8),
+ NSFObjectPointerPersonality NS_ENUM_AVAILABLE(10_5, 6_0) = (2UL << 8),
+ NSFCStringPersonality NS_ENUM_AVAILABLE(10_5, 6_0) = (3UL << 8),
+ NSFStructPersonality NS_ENUM_AVAILABLE(10_5, 6_0) = (4UL << 8),
+ NSFIntegerPersonality NS_ENUM_AVAILABLE(10_5, 6_0) = (5UL << 8),
+ NSFCopyIn NS_ENUM_AVAILABLE(10_5, 6_0) = (1UL << 16),
+};
+
+
OpenPOWER on IntegriCloud