diff options
| author | Alex Lorenz <arphaman@gmail.com> | 2017-05-05 16:15:17 +0000 |
|---|---|---|
| committer | Alex Lorenz <arphaman@gmail.com> | 2017-05-05 16:15:17 +0000 |
| commit | 9282483b118f1ab5a211c2e61692dcfa9edfabaa (patch) | |
| tree | 73053e93bf1bed5d0d582c21fd02c9bd8f6c1426 | |
| parent | e96287f40e29b65244add8767fc08b8905466926 (diff) | |
| download | bcm5719-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.cpp | 4 | ||||
| -rw-r--r-- | clang/test/SemaObjC/x86-method-vector-values.m | 11 |
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 |

