Skip to content

Commit f261b49

Browse files
committed
Merge commit '8cb2d436ca50' from llvm.org/main into next
2 parents a641adc + 8cb2d43 commit f261b49

File tree

2 files changed

+38
-24
lines changed

2 files changed

+38
-24
lines changed

llvm/include/llvm/Passes/PassBuilder.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -677,6 +677,13 @@ class PassBuilder {
677677
return Result;
678678
}
679679

680+
/// Handle passes only accept one bool-valued parameter.
681+
///
682+
/// \return false when Params is empty.
683+
static Expected<bool> parseSinglePassOption(StringRef Params,
684+
StringRef OptionName,
685+
StringRef PassName);
686+
680687
private:
681688
// O1 pass pipeline
682689
FunctionPassManager

llvm/lib/Passes/PassBuilder.cpp

Lines changed: 31 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -601,8 +601,9 @@ Expected<LoopUnrollOptions> parseLoopUnrollOptions(StringRef Params) {
601601
return UnrollOpts;
602602
}
603603

604-
Expected<bool> parseSinglePassOption(StringRef Params, StringRef OptionName,
605-
StringRef PassName) {
604+
Expected<bool> PassBuilder::parseSinglePassOption(StringRef Params,
605+
StringRef OptionName,
606+
StringRef PassName) {
606607
bool Result = false;
607608
while (!Params.empty()) {
608609
StringRef ParamName;
@@ -621,24 +622,28 @@ Expected<bool> parseSinglePassOption(StringRef Params, StringRef OptionName,
621622
}
622623

623624
Expected<bool> parseGlobalDCEPassOptions(StringRef Params) {
624-
return parseSinglePassOption(Params, "vfe-linkage-unit-visibility", "GlobalDCE");
625+
return PassBuilder::parseSinglePassOption(
626+
Params, "vfe-linkage-unit-visibility", "GlobalDCE");
625627
}
626628

627629
Expected<bool> parseCGProfilePassOptions(StringRef Params) {
628-
return parseSinglePassOption(Params, "in-lto-post-link", "CGProfile");
630+
return PassBuilder::parseSinglePassOption(Params, "in-lto-post-link",
631+
"CGProfile");
629632
}
630633

631634
Expected<bool> parseInlinerPassOptions(StringRef Params) {
632-
return parseSinglePassOption(Params, "only-mandatory", "InlinerPass");
635+
return PassBuilder::parseSinglePassOption(Params, "only-mandatory",
636+
"InlinerPass");
633637
}
634638

635639
Expected<bool> parseCoroSplitPassOptions(StringRef Params) {
636-
return parseSinglePassOption(Params, "reuse-storage", "CoroSplitPass");
640+
return PassBuilder::parseSinglePassOption(Params, "reuse-storage",
641+
"CoroSplitPass");
637642
}
638643

639644
Expected<bool> parsePostOrderFunctionAttrsPassOptions(StringRef Params) {
640-
return parseSinglePassOption(Params, "skip-non-recursive-function-attrs",
641-
"PostOrderFunctionAttrs");
645+
return PassBuilder::parseSinglePassOption(
646+
Params, "skip-non-recursive-function-attrs", "PostOrderFunctionAttrs");
642647
}
643648

644649
Expected<CFGuardPass::Mechanism> parseCFGuardPassOptions(StringRef Params) {
@@ -662,19 +667,21 @@ Expected<CFGuardPass::Mechanism> parseCFGuardPassOptions(StringRef Params) {
662667
}
663668

664669
Expected<bool> parseEarlyCSEPassOptions(StringRef Params) {
665-
return parseSinglePassOption(Params, "memssa", "EarlyCSE");
670+
return PassBuilder::parseSinglePassOption(Params, "memssa", "EarlyCSE");
666671
}
667672

668673
Expected<bool> parseEntryExitInstrumenterPassOptions(StringRef Params) {
669-
return parseSinglePassOption(Params, "post-inline", "EntryExitInstrumenter");
674+
return PassBuilder::parseSinglePassOption(Params, "post-inline",
675+
"EntryExitInstrumenter");
670676
}
671677

672678
Expected<bool> parseLoopExtractorPassOptions(StringRef Params) {
673-
return parseSinglePassOption(Params, "single", "LoopExtractor");
679+
return PassBuilder::parseSinglePassOption(Params, "single", "LoopExtractor");
674680
}
675681

676682
Expected<bool> parseLowerMatrixIntrinsicsPassOptions(StringRef Params) {
677-
return parseSinglePassOption(Params, "minimal", "LowerMatrixIntrinsics");
683+
return PassBuilder::parseSinglePassOption(Params, "minimal",
684+
"LowerMatrixIntrinsics");
678685
}
679686

680687
Expected<AddressSanitizerOptions> parseASanPassOptions(StringRef Params) {
@@ -1014,13 +1021,13 @@ parseStackLifetimeOptions(StringRef Params) {
10141021
}
10151022

10161023
Expected<bool> parseDependenceAnalysisPrinterOptions(StringRef Params) {
1017-
return parseSinglePassOption(Params, "normalized-results",
1018-
"DependenceAnalysisPrinter");
1024+
return PassBuilder::parseSinglePassOption(Params, "normalized-results",
1025+
"DependenceAnalysisPrinter");
10191026
}
10201027

10211028
Expected<bool> parseSeparateConstOffsetFromGEPPassOptions(StringRef Params) {
1022-
return parseSinglePassOption(Params, "lower-gep",
1023-
"SeparateConstOffsetFromGEP");
1029+
return PassBuilder::parseSinglePassOption(Params, "lower-gep",
1030+
"SeparateConstOffsetFromGEP");
10241031
}
10251032

10261033
Expected<OptimizationLevel>
@@ -1036,13 +1043,13 @@ parseFunctionSimplificationPipelineOptions(StringRef Params) {
10361043
}
10371044

10381045
Expected<bool> parseMemorySSAPrinterPassOptions(StringRef Params) {
1039-
return parseSinglePassOption(Params, "no-ensure-optimized-uses",
1040-
"MemorySSAPrinterPass");
1046+
return PassBuilder::parseSinglePassOption(Params, "no-ensure-optimized-uses",
1047+
"MemorySSAPrinterPass");
10411048
}
10421049

10431050
Expected<bool> parseSpeculativeExecutionPassOptions(StringRef Params) {
1044-
return parseSinglePassOption(Params, "only-if-divergent-target",
1045-
"SpeculativeExecutionPass");
1051+
return PassBuilder::parseSinglePassOption(Params, "only-if-divergent-target",
1052+
"SpeculativeExecutionPass");
10461053
}
10471054

10481055
Expected<std::string> parseMemProfUsePassOptions(StringRef Params) {
@@ -1063,13 +1070,13 @@ Expected<std::string> parseMemProfUsePassOptions(StringRef Params) {
10631070
}
10641071

10651072
Expected<bool> parseStructuralHashPrinterPassOptions(StringRef Params) {
1066-
return parseSinglePassOption(Params, "detailed",
1067-
"StructuralHashPrinterPass");
1073+
return PassBuilder::parseSinglePassOption(Params, "detailed",
1074+
"StructuralHashPrinterPass");
10681075
}
10691076

10701077
Expected<bool> parseWinEHPrepareOptions(StringRef Params) {
1071-
return parseSinglePassOption(Params, "demote-catchswitch-only",
1072-
"WinEHPreparePass");
1078+
return PassBuilder::parseSinglePassOption(Params, "demote-catchswitch-only",
1079+
"WinEHPreparePass");
10731080
}
10741081

10751082
Expected<GlobalMergeOptions> parseGlobalMergeOptions(StringRef Params) {

0 commit comments

Comments
 (0)