@@ -8175,6 +8175,7 @@ OMPClause *Sema::ActOnOpenMPSingleExprClause(OpenMPClauseKind Kind, Expr *Expr,
8175
8175
case OMPC_unified_shared_memory:
8176
8176
case OMPC_reverse_offload:
8177
8177
case OMPC_dynamic_allocators:
8178
+ case OMPC_atomic_default_mem_order:
8178
8179
llvm_unreachable("Clause is not allowed.");
8179
8180
}
8180
8181
return Res;
@@ -8700,6 +8701,7 @@ static OpenMPDirectiveKind getOpenMPCaptureRegionForClause(
8700
8701
case OMPC_unified_shared_memory:
8701
8702
case OMPC_reverse_offload:
8702
8703
case OMPC_dynamic_allocators:
8704
+ case OMPC_atomic_default_mem_order:
8703
8705
llvm_unreachable("Unexpected OpenMP clause.");
8704
8706
}
8705
8707
return CaptureRegion;
@@ -8968,6 +8970,11 @@ OMPClause *Sema::ActOnOpenMPSimpleClause(
8968
8970
static_cast<OpenMPProcBindClauseKind>(Argument), ArgumentLoc, StartLoc,
8969
8971
LParenLoc, EndLoc);
8970
8972
break;
8973
+ case OMPC_atomic_default_mem_order:
8974
+ Res = ActOnOpenMPAtomicDefaultMemOrderClause(
8975
+ static_cast<OpenMPAtomicDefaultMemOrderClauseKind>(Argument),
8976
+ ArgumentLoc, StartLoc, LParenLoc, EndLoc);
8977
+ break;
8971
8978
case OMPC_if:
8972
8979
case OMPC_final:
8973
8980
case OMPC_num_threads:
@@ -9093,6 +9100,21 @@ OMPClause *Sema::ActOnOpenMPProcBindClause(OpenMPProcBindClauseKind Kind,
9093
9100
OMPProcBindClause(Kind, KindKwLoc, StartLoc, LParenLoc, EndLoc);
9094
9101
}
9095
9102
9103
+ OMPClause *Sema::ActOnOpenMPAtomicDefaultMemOrderClause(
9104
+ OpenMPAtomicDefaultMemOrderClauseKind Kind, SourceLocation KindKwLoc,
9105
+ SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc) {
9106
+ if (Kind == OMPC_ATOMIC_DEFAULT_MEM_ORDER_unknown) {
9107
+ Diag(KindKwLoc, diag::err_omp_unexpected_clause_value)
9108
+ << getListOfPossibleValues(
9109
+ OMPC_atomic_default_mem_order, /*First=*/0,
9110
+ /*Last=*/OMPC_ATOMIC_DEFAULT_MEM_ORDER_unknown)
9111
+ << getOpenMPClauseName(OMPC_atomic_default_mem_order);
9112
+ return nullptr;
9113
+ }
9114
+ return new (Context) OMPAtomicDefaultMemOrderClause(Kind, KindKwLoc, StartLoc,
9115
+ LParenLoc, EndLoc);
9116
+ }
9117
+
9096
9118
OMPClause *Sema::ActOnOpenMPSingleExprWithArgClause(
9097
9119
OpenMPClauseKind Kind, ArrayRef<unsigned> Argument, Expr *Expr,
9098
9120
SourceLocation StartLoc, SourceLocation LParenLoc,
@@ -9181,6 +9203,7 @@ OMPClause *Sema::ActOnOpenMPSingleExprWithArgClause(
9181
9203
case OMPC_unified_shared_memory:
9182
9204
case OMPC_reverse_offload:
9183
9205
case OMPC_dynamic_allocators:
9206
+ case OMPC_atomic_default_mem_order:
9184
9207
llvm_unreachable("Clause is not allowed.");
9185
9208
}
9186
9209
return Res;
@@ -9387,6 +9410,7 @@ OMPClause *Sema::ActOnOpenMPClause(OpenMPClauseKind Kind,
9387
9410
case OMPC_from:
9388
9411
case OMPC_use_device_ptr:
9389
9412
case OMPC_is_device_ptr:
9413
+ case OMPC_atomic_default_mem_order:
9390
9414
llvm_unreachable("Clause is not allowed.");
9391
9415
}
9392
9416
return Res;
@@ -9579,6 +9603,7 @@ OMPClause *Sema::ActOnOpenMPVarListClause(
9579
9603
case OMPC_unified_shared_memory:
9580
9604
case OMPC_reverse_offload:
9581
9605
case OMPC_dynamic_allocators:
9606
+ case OMPC_atomic_default_mem_order:
9582
9607
llvm_unreachable("Clause is not allowed.");
9583
9608
}
9584
9609
return Res;
0 commit comments