"expected loop invariant expression or '<invariant1> * %0 + <invariant2>' kind of expression">;
def err_omp_wrong_dependency_iterator_type : Error<
"expected an integer or a pointer type of the outer loop counter '%0' for non-rectangular nests">;
-def err_device_unsupported_type : Error <
- "%0 requires %1 bit size %2 type support, but device '%3' does not support it">;
+def err_device_unsupported_type
+ : Error<"%0 requires %select{|%2 bit size}1 %3 type support, but device "
+ "'%4' does not support it">;
def err_omp_lambda_capture_in_declare_target_not_to : Error<
"variable captured in declare target region must appear in a to clause">;
def err_omp_device_type_mismatch : Error<
if (Ty->isDependentType())
return;
+ if (Ty->isExtIntType()) {
+ if (!Context.getTargetInfo().hasExtIntType()) {
+ targetDiag(Loc, diag::err_device_unsupported_type)
+ << D << false /*show bit size*/ << 0 /*bitsize*/
+ << Ty << Context.getTargetInfo().getTriple().str();
+ }
+ return;
+ }
+
if ((Ty->isFloat16Type() && !Context.getTargetInfo().hasFloat16Type()) ||
((Ty->isFloat128Type() ||
(Ty->isRealFloatingType() && Context.getTypeSize(Ty) == 128)) &&
(Ty->isIntegerType() && Context.getTypeSize(Ty) == 128 &&
!Context.getTargetInfo().hasInt128Type())) {
targetDiag(Loc, diag::err_device_unsupported_type)
- << D << static_cast<unsigned>(Context.getTypeSize(Ty)) << Ty
+ << D << true /*show bit size*/
+ << static_cast<unsigned>(Context.getTypeSize(Ty)) << Ty
<< Context.getTargetInfo().getTriple().str();
targetDiag(D->getLocation(), diag::note_defined_here) << D;
}