Skip to content

Commit aa90d01

Browse files
authored
Merge branch 'llvm:main' into main
2 parents 78cec6d + 865fb9c commit aa90d01

File tree

218 files changed

+6389
-1492
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

218 files changed

+6389
-1492
lines changed

clang/docs/ReleaseNotes.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -679,6 +679,7 @@ Bug Fixes to C++ Support
679679
whose type depends on itself. (#GH51347), (#GH55872)
680680
- Improved parser recovery of invalid requirement expressions. In turn, this
681681
fixes crashes from follow-on processing of the invalid requirement. (#GH138820)
682+
- Fixed the handling of pack indexing types in the constraints of a member function redeclaration. (#GH138255)
682683

683684
Bug Fixes to AST Handling
684685
^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -728,6 +729,9 @@ X86 Support
728729

729730
Arm and AArch64 Support
730731
^^^^^^^^^^^^^^^^^^^^^^^
732+
733+
- Support has been added for the following processors (command-line identifiers in parentheses):
734+
- Arm Cortex-A320 (``cortex-a320``)
731735
- For ARM targets, cc1as now considers the FPU's features for the selected CPU or Architecture.
732736
- The ``+nosimd`` attribute is now fully supported for ARM. Previously, this had no effect when being used with
733737
ARM targets, however this will now disable NEON instructions being generated. The ``simd`` option is
@@ -901,6 +905,10 @@ OpenMP Support
901905
- Added support 'no_openmp_constructs' assumption clause.
902906
- Added support for 'self_maps' in map and requirement clause.
903907
- Added support for 'omp stripe' directive.
908+
- Fixed a crashing bug with ``omp tile sizes`` if the argument to ``sizes`` was
909+
an invalid expression. (#GH139073)
910+
- Fixed a crashing bug with ``omp distribute dist_schedule`` if the argument to
911+
``dist_schedule`` was not strictly positive. (#GH139266)
904912

905913
Improvements
906914
^^^^^^^^^^^^

clang/include/clang/AST/ASTContext.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,8 @@ class ASTContext : public RefCountedBase<ASTContext> {
221221
mutable llvm::ContextualFoldingSet<DependentDecltypeType, ASTContext &>
222222
DependentDecltypeTypes;
223223

224-
mutable llvm::FoldingSet<PackIndexingType> DependentPackIndexingTypes;
224+
mutable llvm::ContextualFoldingSet<PackIndexingType, ASTContext &>
225+
DependentPackIndexingTypes;
225226

226227
mutable llvm::FoldingSet<TemplateTypeParmType> TemplateTypeParmTypes;
227228
mutable llvm::FoldingSet<ObjCTypeParamType> ObjCTypeParamTypes;

clang/include/clang/AST/ExprCXX.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4547,6 +4547,7 @@ class PackIndexingExpr final
45474547
static PackIndexingExpr *CreateDeserialized(ASTContext &Context,
45484548
unsigned NumTransformedExprs);
45494549

4550+
// The index expression and all elements of the pack have been substituted.
45504551
bool isFullySubstituted() const { return FullySubstituted; }
45514552

45524553
/// Determine if the expression was expanded to empty.

clang/include/clang/AST/OpenMPClause.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9575,15 +9575,17 @@ class ConstOMPClauseVisitor :
95759575
class OMPClausePrinter final : public OMPClauseVisitor<OMPClausePrinter> {
95769576
raw_ostream &OS;
95779577
const PrintingPolicy &Policy;
9578+
unsigned Version;
95789579

95799580
/// Process clauses with list of variables.
95809581
template <typename T> void VisitOMPClauseList(T *Node, char StartSym);
95819582
/// Process motion clauses.
95829583
template <typename T> void VisitOMPMotionClause(T *Node);
95839584

95849585
public:
9585-
OMPClausePrinter(raw_ostream &OS, const PrintingPolicy &Policy)
9586-
: OS(OS), Policy(Policy) {}
9586+
OMPClausePrinter(raw_ostream &OS, const PrintingPolicy &Policy,
9587+
unsigned OpenMPVersion)
9588+
: OS(OS), Policy(Policy), Version(OpenMPVersion) {}
95879589

95889590
#define GEN_CLANG_CLAUSE_CLASS
95899591
#define CLAUSE_CLASS(Enum, Str, Class) void Visit##Class(Class *S);

clang/include/clang/AST/Type.h

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5976,7 +5976,6 @@ class PackIndexingType final
59765976
private llvm::TrailingObjects<PackIndexingType, QualType> {
59775977
friend TrailingObjects;
59785978

5979-
const ASTContext &Context;
59805979
QualType Pattern;
59815980
Expr *IndexExpr;
59825981

@@ -5987,9 +5986,8 @@ class PackIndexingType final
59875986

59885987
protected:
59895988
friend class ASTContext; // ASTContext creates these.
5990-
PackIndexingType(const ASTContext &Context, QualType Canonical,
5991-
QualType Pattern, Expr *IndexExpr, bool FullySubstituted,
5992-
ArrayRef<QualType> Expansions = {});
5989+
PackIndexingType(QualType Canonical, QualType Pattern, Expr *IndexExpr,
5990+
bool FullySubstituted, ArrayRef<QualType> Expansions = {});
59935991

59945992
public:
59955993
Expr *getIndexExpr() const { return IndexExpr; }
@@ -6024,14 +6022,10 @@ class PackIndexingType final
60246022
return T->getTypeClass() == PackIndexing;
60256023
}
60266024

6027-
void Profile(llvm::FoldingSetNodeID &ID) {
6028-
if (hasSelectedType())
6029-
getSelectedType().Profile(ID);
6030-
else
6031-
Profile(ID, Context, getPattern(), getIndexExpr(), isFullySubstituted());
6032-
}
6025+
void Profile(llvm::FoldingSetNodeID &ID, const ASTContext &Context);
60336026
static void Profile(llvm::FoldingSetNodeID &ID, const ASTContext &Context,
6034-
QualType Pattern, Expr *E, bool FullySubstituted);
6027+
QualType Pattern, Expr *E, bool FullySubstituted,
6028+
ArrayRef<QualType> Expansions);
60356029

60366030
private:
60376031
const QualType *getExpansionsPtr() const {

clang/include/clang/CIR/MissingFeatures.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,8 @@ struct MissingFeatures {
104104
static bool opCallExtParameterInfo() { return false; }
105105
static bool opCallCIRGenFuncInfoParamInfo() { return false; }
106106
static bool opCallCIRGenFuncInfoExtParamInfo() { return false; }
107+
static bool opCallLandingPad() { return false; }
108+
static bool opCallContinueBlock() { return false; }
107109

108110
// ScopeOp handling
109111
static bool opScopeCleanupRegion() { return false; }

clang/include/clang/Driver/Options.td

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3269,6 +3269,13 @@ def fmodules_disable_diagnostic_validation : Flag<["-"], "fmodules-disable-diagn
32693269
Group<i_Group>, Visibility<[ClangOption, CC1Option]>,
32703270
HelpText<"Disable validation of the diagnostic options when loading the module">,
32713271
MarshallingInfoNegativeFlag<HeaderSearchOpts<"ModulesValidateDiagnosticOptions">>;
3272+
defm modules_force_validate_user_headers : BoolOption<"f", "modules-force-validate-user-headers",
3273+
HeaderSearchOpts<"ModulesForceValidateUserHeaders">, DefaultTrue,
3274+
PosFlag<SetTrue, [], [], "Force">,
3275+
NegFlag<SetFalse, [], [CC1Option], "Do not force">,
3276+
BothFlags<[], [ClangOption],
3277+
" validation of user headers when repeatedly loading a module file within single build session">>,
3278+
Group<i_Group>;
32723279
defm modules_validate_system_headers : BoolOption<"f", "modules-validate-system-headers",
32733280
HeaderSearchOpts<"ModulesValidateSystemHeaders">, DefaultFalse,
32743281
PosFlag<SetTrue, [], [ClangOption, CC1Option],

clang/include/clang/Lex/HeaderSearchOptions.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,11 @@ class HeaderSearchOptions {
217217
LLVM_PREFERRED_TYPE(bool)
218218
unsigned ModulesValidateSystemHeaders : 1;
219219

220+
/// Whether to force the validation of user input files when a module is
221+
/// loaded (even despite the build session saying that is not necessary).
222+
LLVM_PREFERRED_TYPE(bool)
223+
unsigned ModulesForceValidateUserHeaders : 1;
224+
220225
// Whether the content of input files should be hashed and used to
221226
// validate consistency.
222227
LLVM_PREFERRED_TYPE(bool)
@@ -286,6 +291,7 @@ class HeaderSearchOptions {
286291
UseStandardCXXIncludes(true), UseLibcxx(false), Verbose(false),
287292
ModulesValidateOncePerBuildSession(false),
288293
ModulesValidateSystemHeaders(false),
294+
ModulesForceValidateUserHeaders(true),
289295
ValidateASTInputFilesContent(false),
290296
ForceCheckCXX20ModulesInputFiles(false), UseDebugInfo(false),
291297
ModulesValidateDiagnosticOptions(true),

clang/include/clang/Serialization/ASTReader.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1091,9 +1091,12 @@ class ASTReader
10911091
/// from the current compiler instance.
10921092
bool AllowConfigurationMismatch;
10931093

1094-
/// Whether validate system input files.
1094+
/// Whether to validate system input files.
10951095
bool ValidateSystemInputs;
10961096

1097+
/// Whether to force the validation of user input files.
1098+
bool ForceValidateUserInputs;
1099+
10971100
/// Whether validate headers and module maps using hash based on contents.
10981101
bool ValidateASTInputFilesContent;
10991102

@@ -1767,6 +1770,7 @@ class ASTReader
17671770
bool AllowASTWithCompilerErrors = false,
17681771
bool AllowConfigurationMismatch = false,
17691772
bool ValidateSystemInputs = false,
1773+
bool ForceValidateUserInputs = true,
17701774
bool ValidateASTInputFilesContent = false,
17711775
bool UseGlobalIndex = true,
17721776
std::unique_ptr<llvm::Timer> ReadTimer = {});

clang/lib/AST/ASTContext.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -940,7 +940,7 @@ ASTContext::ASTContext(LangOptions &LOpts, SourceManager &SM,
940940
DependentSizedMatrixTypes(this_()),
941941
FunctionProtoTypes(this_(), FunctionProtoTypesLog2InitSize),
942942
DependentTypeOfExprTypes(this_()), DependentDecltypeTypes(this_()),
943-
TemplateSpecializationTypes(this_()),
943+
DependentPackIndexingTypes(this_()), TemplateSpecializationTypes(this_()),
944944
DependentTemplateSpecializationTypes(this_()),
945945
DependentBitIntTypes(this_()), SubstTemplateTemplateParmPacks(this_()),
946946
DeducedTemplates(this_()), ArrayParameterTypes(this_()),
@@ -6438,17 +6438,17 @@ QualType ASTContext::getPackIndexingType(QualType Pattern, Expr *IndexExpr,
64386438
} else {
64396439
llvm::FoldingSetNodeID ID;
64406440
PackIndexingType::Profile(ID, *this, Pattern.getCanonicalType(), IndexExpr,
6441-
FullySubstituted);
6441+
FullySubstituted, Expansions);
64426442
void *InsertPos = nullptr;
64436443
PackIndexingType *Canon =
64446444
DependentPackIndexingTypes.FindNodeOrInsertPos(ID, InsertPos);
64456445
if (!Canon) {
64466446
void *Mem = Allocate(
64476447
PackIndexingType::totalSizeToAlloc<QualType>(Expansions.size()),
64486448
TypeAlignment);
6449-
Canon = new (Mem)
6450-
PackIndexingType(*this, QualType(), Pattern.getCanonicalType(),
6451-
IndexExpr, FullySubstituted, Expansions);
6449+
Canon =
6450+
new (Mem) PackIndexingType(QualType(), Pattern.getCanonicalType(),
6451+
IndexExpr, FullySubstituted, Expansions);
64526452
DependentPackIndexingTypes.InsertNode(Canon, InsertPos);
64536453
}
64546454
Canonical = QualType(Canon, 0);
@@ -6457,7 +6457,7 @@ QualType ASTContext::getPackIndexingType(QualType Pattern, Expr *IndexExpr,
64576457
void *Mem =
64586458
Allocate(PackIndexingType::totalSizeToAlloc<QualType>(Expansions.size()),
64596459
TypeAlignment);
6460-
auto *T = new (Mem) PackIndexingType(*this, Canonical, Pattern, IndexExpr,
6460+
auto *T = new (Mem) PackIndexingType(Canonical, Pattern, IndexExpr,
64616461
FullySubstituted, Expansions);
64626462
Types.push_back(T);
64636463
return QualType(T, 0);

clang/lib/AST/Decl.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3350,7 +3350,8 @@ bool FunctionDecl::isMSVCRTEntryPoint() const {
33503350
// semantic analysis for these functions remains the same.
33513351

33523352
// MSVCRT entry points only exist on MSVCRT targets.
3353-
if (!TUnit->getASTContext().getTargetInfo().getTriple().isOSMSVCRT())
3353+
if (!TUnit->getASTContext().getTargetInfo().getTriple().isOSMSVCRT() &&
3354+
!TUnit->getASTContext().getTargetInfo().getTriple().isUEFI())
33543355
return false;
33553356

33563357
// Nameless functions like constructors cannot be entry points.

clang/lib/AST/DeclPrinter.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1827,7 +1827,7 @@ void DeclPrinter::VisitOMPAllocateDecl(OMPAllocateDecl *D) {
18271827
Out << ")";
18281828
}
18291829
if (!D->clauselist_empty()) {
1830-
OMPClausePrinter Printer(Out, Policy);
1830+
OMPClausePrinter Printer(Out, Policy, Context.getLangOpts().OpenMP);
18311831
for (OMPClause *C : D->clauselists()) {
18321832
Out << " ";
18331833
Printer.Visit(C);
@@ -1838,7 +1838,7 @@ void DeclPrinter::VisitOMPAllocateDecl(OMPAllocateDecl *D) {
18381838
void DeclPrinter::VisitOMPRequiresDecl(OMPRequiresDecl *D) {
18391839
Out << "#pragma omp requires ";
18401840
if (!D->clauselist_empty()) {
1841-
OMPClausePrinter Printer(Out, Policy);
1841+
OMPClausePrinter Printer(Out, Policy, Context.getLangOpts().OpenMP);
18421842
for (auto I = D->clauselist_begin(), E = D->clauselist_end(); I != E; ++I)
18431843
Printer.Visit(*I);
18441844
}
@@ -1891,7 +1891,7 @@ void DeclPrinter::VisitOMPDeclareMapperDecl(OMPDeclareMapperDecl *D) {
18911891
Out << D->getVarName();
18921892
Out << ")";
18931893
if (!D->clauselist_empty()) {
1894-
OMPClausePrinter Printer(Out, Policy);
1894+
OMPClausePrinter Printer(Out, Policy, Context.getLangOpts().OpenMP);
18951895
for (auto *C : D->clauselists()) {
18961896
Out << " ";
18971897
Printer.Visit(C);

clang/lib/AST/Expr.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2247,6 +2247,16 @@ bool BinaryOperator::isNullPointerArithmeticExtension(ASTContext &Ctx,
22472247
return false;
22482248
}
22492249

2250+
// Workaround for old glibc's __PTR_ALIGN macro
2251+
if (auto *Select =
2252+
dyn_cast<ConditionalOperator>(PExp->IgnoreParenNoopCasts(Ctx))) {
2253+
// If the condition can be constant evaluated, we check the selected arm.
2254+
bool EvalResult;
2255+
if (!Select->getCond()->EvaluateAsBooleanCondition(EvalResult, Ctx))
2256+
return false;
2257+
PExp = EvalResult ? Select->getTrueExpr() : Select->getFalseExpr();
2258+
}
2259+
22502260
// Check that the pointer is a nullptr.
22512261
if (!PExp->IgnoreParenCasts()
22522262
->isNullPointerConstant(Ctx, Expr::NPC_ValueDependentIsNotNull))

clang/lib/AST/OpenMPClause.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1841,7 +1841,7 @@ OMPThreadLimitClause *OMPThreadLimitClause::CreateEmpty(const ASTContext &C,
18411841
void OMPClausePrinter::VisitOMPIfClause(OMPIfClause *Node) {
18421842
OS << "if(";
18431843
if (Node->getNameModifier() != OMPD_unknown)
1844-
OS << getOpenMPDirectiveName(Node->getNameModifier()) << ": ";
1844+
OS << getOpenMPDirectiveName(Node->getNameModifier(), Version) << ": ";
18451845
Node->getCondition()->printPretty(OS, nullptr, Policy, 0);
18461846
OS << ")";
18471847
}
@@ -2084,7 +2084,7 @@ void OMPClausePrinter::VisitOMPAbsentClause(OMPAbsentClause *Node) {
20842084
for (auto &D : Node->getDirectiveKinds()) {
20852085
if (!First)
20862086
OS << ", ";
2087-
OS << getOpenMPDirectiveName(D);
2087+
OS << getOpenMPDirectiveName(D, Version);
20882088
First = false;
20892089
}
20902090
OS << ")";
@@ -2102,7 +2102,7 @@ void OMPClausePrinter::VisitOMPContainsClause(OMPContainsClause *Node) {
21022102
for (auto &D : Node->getDirectiveKinds()) {
21032103
if (!First)
21042104
OS << ", ";
2105-
OS << getOpenMPDirectiveName(D);
2105+
OS << getOpenMPDirectiveName(D, Version);
21062106
First = false;
21072107
}
21082108
OS << ")";

clang/lib/AST/StmtPrinter.cpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -737,7 +737,9 @@ void StmtPrinter::VisitOMPCanonicalLoop(OMPCanonicalLoop *Node) {
737737

738738
void StmtPrinter::PrintOMPExecutableDirective(OMPExecutableDirective *S,
739739
bool ForceNoStmt) {
740-
OMPClausePrinter Printer(OS, Policy);
740+
unsigned OpenMPVersion =
741+
Context ? Context->getLangOpts().OpenMP : llvm::omp::FallbackVersion;
742+
OMPClausePrinter Printer(OS, Policy, OpenMPVersion);
741743
ArrayRef<OMPClause *> Clauses = S->clauses();
742744
for (auto *Clause : Clauses)
743745
if (Clause && !Clause->isImplicit()) {
@@ -969,14 +971,18 @@ void StmtPrinter::VisitOMPTeamsDirective(OMPTeamsDirective *Node) {
969971

970972
void StmtPrinter::VisitOMPCancellationPointDirective(
971973
OMPCancellationPointDirective *Node) {
974+
unsigned OpenMPVersion =
975+
Context ? Context->getLangOpts().OpenMP : llvm::omp::FallbackVersion;
972976
Indent() << "#pragma omp cancellation point "
973-
<< getOpenMPDirectiveName(Node->getCancelRegion());
977+
<< getOpenMPDirectiveName(Node->getCancelRegion(), OpenMPVersion);
974978
PrintOMPExecutableDirective(Node);
975979
}
976980

977981
void StmtPrinter::VisitOMPCancelDirective(OMPCancelDirective *Node) {
982+
unsigned OpenMPVersion =
983+
Context ? Context->getLangOpts().OpenMP : llvm::omp::FallbackVersion;
978984
Indent() << "#pragma omp cancel "
979-
<< getOpenMPDirectiveName(Node->getCancelRegion());
985+
<< getOpenMPDirectiveName(Node->getCancelRegion(), OpenMPVersion);
980986
PrintOMPExecutableDirective(Node);
981987
}
982988

clang/lib/AST/StmtProfile.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2302,9 +2302,15 @@ void StmtProfiler::VisitSizeOfPackExpr(const SizeOfPackExpr *S) {
23022302
}
23032303

23042304
void StmtProfiler::VisitPackIndexingExpr(const PackIndexingExpr *E) {
2305-
VisitExpr(E);
2306-
VisitExpr(E->getPackIdExpression());
23072305
VisitExpr(E->getIndexExpr());
2306+
2307+
if (E->expandsToEmptyPack() || E->getExpressions().size() != 0) {
2308+
ID.AddInteger(E->getExpressions().size());
2309+
for (const Expr *Sub : E->getExpressions())
2310+
Visit(Sub);
2311+
} else {
2312+
VisitExpr(E->getPackIdExpression());
2313+
}
23082314
}
23092315

23102316
void StmtProfiler::VisitSubstNonTypeTemplateParmPackExpr(

clang/lib/AST/Type.cpp

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4125,14 +4125,14 @@ void DependentDecltypeType::Profile(llvm::FoldingSetNodeID &ID,
41254125
E->Profile(ID, Context, true);
41264126
}
41274127

4128-
PackIndexingType::PackIndexingType(const ASTContext &Context,
4129-
QualType Canonical, QualType Pattern,
4128+
PackIndexingType::PackIndexingType(QualType Canonical, QualType Pattern,
41304129
Expr *IndexExpr, bool FullySubstituted,
41314130
ArrayRef<QualType> Expansions)
41324131
: Type(PackIndexing, Canonical,
41334132
computeDependence(Pattern, IndexExpr, Expansions)),
4134-
Context(Context), Pattern(Pattern), IndexExpr(IndexExpr),
4135-
Size(Expansions.size()), FullySubstituted(FullySubstituted) {
4133+
Pattern(Pattern), IndexExpr(IndexExpr), Size(Expansions.size()),
4134+
FullySubstituted(FullySubstituted) {
4135+
41364136
llvm::uninitialized_copy(Expansions, getTrailingObjects<QualType>());
41374137
}
41384138

@@ -4173,12 +4173,26 @@ PackIndexingType::computeDependence(QualType Pattern, Expr *IndexExpr,
41734173
return TD;
41744174
}
41754175

4176+
void PackIndexingType::Profile(llvm::FoldingSetNodeID &ID,
4177+
const ASTContext &Context) {
4178+
Profile(ID, Context, getPattern(), getIndexExpr(), isFullySubstituted(),
4179+
getExpansions());
4180+
}
4181+
41764182
void PackIndexingType::Profile(llvm::FoldingSetNodeID &ID,
41774183
const ASTContext &Context, QualType Pattern,
4178-
Expr *E, bool FullySubstituted) {
4179-
Pattern.Profile(ID);
4184+
Expr *E, bool FullySubstituted,
4185+
ArrayRef<QualType> Expansions) {
4186+
41804187
E->Profile(ID, Context, true);
41814188
ID.AddBoolean(FullySubstituted);
4189+
if (!Expansions.empty()) {
4190+
ID.AddInteger(Expansions.size());
4191+
for (QualType T : Expansions)
4192+
T.getCanonicalType().Profile(ID);
4193+
} else {
4194+
Pattern.Profile(ID);
4195+
}
41824196
}
41834197

41844198
UnaryTransformType::UnaryTransformType(QualType BaseType,

clang/lib/Basic/OpenMPKinds.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -853,7 +853,8 @@ void clang::getOpenMPCaptureRegions(
853853
case OMPD_master:
854854
return false;
855855
default:
856-
llvm::errs() << getOpenMPDirectiveName(LKind) << '\n';
856+
llvm::errs() << getOpenMPDirectiveName(LKind, llvm::omp::FallbackVersion)
857+
<< '\n';
857858
llvm_unreachable("Unexpected directive");
858859
}
859860
return false;

0 commit comments

Comments
 (0)