================
@@ -14924,8 +14924,25 @@ StmtResult
SemaOpenMP::ActOnOpenMPUnrollDirective(ArrayRef<OMPClause *> Clauses,
SourceLocation FactorLoc;
if (Expr *FactorVal = PartialClause->getFactor();
FactorVal && !FactorVal->containsErrors()) {
+ if (!VerifyPositiveIntegerConstantInClause(FactorVal, OMPC_partial,
+ /*StrictlyPositive=*/true,
+ /*SuppressExprDiags=*/false)
+ .isUsable()) {
+ return StmtError();
+ }
+ // Checking if Iterator Variable Type can hold the Factor Width
+ auto FactorValWidth =
FactorVal->getIntegerConstantExpr(Context)->getActiveBits();
+ auto IteratorVWidth = Context.getTypeSize(OrigVar->getType());
+ if ( FactorValWidth > IteratorVWidth ) {
+ Diag(FactorVal->getExprLoc(), diag::err_omp_unroll_factor_width_mismatch)
+ << FactorValWidth << OrigVar->getType()
+ << IteratorVWidth;
+ return StmtError();
+ }
+
Factor = FactorVal->getIntegerConstantExpr(Context)->getZExtValue();
FactorLoc = FactorVal->getExprLoc();
+
----------------
shiltian wrote:
unrelated changes
https://github.com/llvm/llvm-project/pull/139986
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits