r302250 - [ObjC] Don't disallow vector parameters/return values in methods
Alex Lorenz via cfe-commits
cfe-commits at lists.llvm.org
Fri May 5 09:15:17 PDT 2017
Author: arphaman
Date: Fri May 5 11:15:17 2017
New Revision: 302250
URL: http://llvm.org/viewvc/llvm-project?rev=302250&view=rev
Log:
[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
Modified:
cfe/trunk/lib/Sema/SemaDeclObjC.cpp
cfe/trunk/test/SemaObjC/x86-method-vector-values.m
Modified: cfe/trunk/lib/Sema/SemaDeclObjC.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclObjC.cpp?rev=302250&r1=302249&r2=302250&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaDeclObjC.cpp (original)
+++ cfe/trunk/lib/Sema/SemaDeclObjC.cpp Fri May 5 11:15:17 2017
@@ -4347,10 +4347,8 @@ static void checkObjCMethodX86VectorType
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
Modified: cfe/trunk/test/SemaObjC/x86-method-vector-values.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/x86-method-vector-values.m?rev=302250&r1=302249&r2=302250&view=diff
==============================================================================
--- cfe/trunk/test/SemaObjC/x86-method-vector-values.m (original)
+++ cfe/trunk/test/SemaObjC/x86-method-vector-values.m Fri May 5 11:15:17 2017
@@ -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 at -2 {{'float3' (vector of 3 'float' values) parameter type is unsupported}}
-#endif
}
- (__m128)retM128_2 AVAILABLE_MACOS_10_10 {
-#ifdef MAC
-// expected-error at -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 at -2 {{'float3' (vector of 3 'float' values) parameter type is unsupported}}
-#endif
}
-(void)takeVector5:(float3)v AVAILABLE_IOS_9 { // no error
More information about the cfe-commits
mailing list