@@ -1608,6 +1608,11 @@ static void emitCommonOMPParallelDirective(
1608
1608
const CodeGenBoundParametersTy &CodeGenBoundParameters) {
1609
1609
const CapturedStmt *CS = S.getCapturedStmt (OMPD_parallel);
1610
1610
llvm::Value *NumThreads = nullptr ;
1611
+ OpenMPNumThreadsClauseModifier Modifier = OMPC_NUMTHREADS_unknown;
1612
+ // OpenMP 6.0, 10.4: "If no severity clause is specified then the effect is as
1613
+ // if sev-level is fatal."
1614
+ OpenMPSeverityClauseKind Severity = OMPC_SEVERITY_fatal;
1615
+ clang::Expr *Message = nullptr ;
1611
1616
llvm::Function *OutlinedFn =
1612
1617
CGF.CGM .getOpenMPRuntime ().emitParallelOutlinedFunction (
1613
1618
CGF, S, *CS->getCapturedDecl ()->param_begin (), InnermostKind,
@@ -1616,9 +1621,7 @@ static void emitCommonOMPParallelDirective(
1616
1621
CodeGenFunction::RunCleanupsScope NumThreadsScope (CGF);
1617
1622
NumThreads = CGF.EmitScalarExpr (NumThreadsClause->getNumThreads (),
1618
1623
/* IgnoreResultAssign=*/ true );
1619
- OpenMPNumThreadsClauseModifier Modifier = NumThreadsClause->getModifier ();
1620
- OpenMPSeverityClauseKind Severity = OMPC_SEVERITY_fatal;
1621
- clang::Expr *Message = nullptr ;
1624
+ Modifier = NumThreadsClause->getModifier ();
1622
1625
if (const auto *MessageClause = S.getSingleClause <OMPMessageClause>())
1623
1626
Message = MessageClause->getMessageString ();
1624
1627
if (const auto *SeverityClause = S.getSingleClause <OMPSeverityClause>())
@@ -1650,7 +1653,8 @@ static void emitCommonOMPParallelDirective(
1650
1653
CodeGenBoundParameters (CGF, S, CapturedVars);
1651
1654
CGF.GenerateOpenMPCapturedVars (*CS, CapturedVars);
1652
1655
CGF.CGM .getOpenMPRuntime ().emitParallelCall (CGF, S.getBeginLoc (), OutlinedFn,
1653
- CapturedVars, IfCond, NumThreads);
1656
+ CapturedVars, IfCond, NumThreads,
1657
+ Modifier, Severity, Message);
1654
1658
}
1655
1659
1656
1660
static bool isAllocatableDecl (const VarDecl *VD) {
0 commit comments