summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Lorenz <arphaman@gmail.com>2017-05-05 16:15:17 +0000
committerAlex Lorenz <arphaman@gmail.com>2017-05-05 16:15:17 +0000
commit9282483b118f1ab5a211c2e61692dcfa9edfabaa (patch)
tree73053e93bf1bed5d0d582c21fd02c9bd8f6c1426
parente96287f40e29b65244add8767fc08b8905466926 (diff)
downloadbcm5719-llvm-9282483b118f1ab5a211c2e61692dcfa9edfabaa.tar.gz
bcm5719-llvm-9282483b118f1ab5a211c2e61692dcfa9edfabaa.zip
[ObjC] Don't disallow vector parameters/return values in methods
whose introduced version is lower than the allowed version. We should just rely on the target version as this introduced version can lead to false positives (e.g. deprecated declarations). rdar://31964333 llvm-svn: 302250
-rw-r--r--clang/lib/Sema/SemaDeclObjC.cpp4
-rw-r--r--clang/test/SemaObjC/x86-method-vector-values.m11
2 files changed, 3 insertions, 12 deletions
diff --git a/clang/lib/Sema/SemaDeclObjC.cpp b/clang/lib/Sema/SemaDeclObjC.cpp
index fe9ba6f1f81..370461c4a24 100644
--- a/clang/lib/Sema/SemaDeclObjC.cpp
+++ b/clang/lib/Sema/SemaDeclObjC.cpp
@@ -4347,10 +4347,8 @@ static void checkObjCMethodX86VectorTypes(Sema &SemaRef,
AcceptedInVersion = VersionTuple(/*Major=*/10, /*Minor=*/11);
else
return;
- VersionTuple MethodVersion = Method->getVersionIntroduced();
if (SemaRef.getASTContext().getTargetInfo().getPlatformMinVersion() >=
- AcceptedInVersion &&
- (MethodVersion.empty() || MethodVersion >= AcceptedInVersion))
+ AcceptedInVersion)
return;
SemaRef.Diag(Loc, diag::err_objc_method_unsupported_param_ret_type)
<< T << (Method->getReturnType()->isVectorType() ? /*return value*/ 1
diff --git a/clang/test/SemaObjC/x86-method-vector-values.m b/clang/test/SemaObjC/x86-method-vector-values.m
index 6c5189d0842..23d07b1b41f 100644
--- a/clang/test/SemaObjC/x86-method-vector-values.m
+++ b/clang/test/SemaObjC/x86-method-vector-values.m
@@ -68,6 +68,8 @@ struct AggregateFloat { float v; };
#else
+// expected-no-diagnostics
+
-(void)takeVector:(float3)v {
}
@@ -84,15 +86,9 @@ struct AggregateFloat { float v; };
}
-(void)takeVector2:(float3)v AVAILABLE_MACOS_10_10 {
-#ifdef MAC
-// expected-error@-2 {{'float3' (vector of 3 'float' values) parameter type is unsupported}}
-#endif
}
- (__m128)retM128_2 AVAILABLE_MACOS_10_10 {
-#ifdef MAC
-// expected-error@-2 {{'__m128' (vector of 4 'float' values) return type is unsupported}}
-#endif
__m128 value;
return value;
}
@@ -101,9 +97,6 @@ struct AggregateFloat { float v; };
}
-(void)takeVector4:(float3)v AVAILABLE_IOS_8 {
-#ifdef IOS
- // expected-error@-2 {{'float3' (vector of 3 'float' values) parameter type is unsupported}}
-#endif
}
-(void)takeVector5:(float3)v AVAILABLE_IOS_9 { // no error
OpenPOWER on IntegriCloud