@@ -503,15 +503,6 @@ static std::optional<int> parseDevirtPassName(StringRef Name) {
503
503
return Count;
504
504
}
505
505
506
- static bool checkParametrizedPassName (StringRef Name, StringRef PassName) {
507
- if (!Name.consume_front (PassName))
508
- return false ;
509
- // normal pass name w/o parameters == default parameters
510
- if (Name.empty ())
511
- return true ;
512
- return Name.starts_with (" <" ) && Name.ends_with (" >" );
513
- }
514
-
515
506
static std::optional<OptimizationLevel> parseOptLevel (StringRef S) {
516
507
return StringSwitch<std::optional<OptimizationLevel>>(S)
517
508
.Case (" O0" , OptimizationLevel::O0)
@@ -525,42 +516,6 @@ static std::optional<OptimizationLevel> parseOptLevel(StringRef S) {
525
516
526
517
namespace {
527
518
528
- // / This performs customized parsing of pass name with parameters.
529
- // /
530
- // / We do not need parametrization of passes in textual pipeline very often,
531
- // / yet on a rare occasion ability to specify parameters right there can be
532
- // / useful.
533
- // /
534
- // / \p Name - parameterized specification of a pass from a textual pipeline
535
- // / is a string in a form of :
536
- // / PassName '<' parameter-list '>'
537
- // /
538
- // / Parameter list is being parsed by the parser callable argument, \p Parser,
539
- // / It takes a string-ref of parameters and returns either StringError or a
540
- // / parameter list in a form of a custom parameters type, all wrapped into
541
- // / Expected<> template class.
542
- // /
543
- template <typename ParametersParseCallableT>
544
- auto parsePassParameters (ParametersParseCallableT &&Parser, StringRef Name,
545
- StringRef PassName) -> decltype(Parser(StringRef{})) {
546
- using ParametersT = typename decltype (Parser (StringRef{}))::value_type;
547
-
548
- StringRef Params = Name;
549
- if (!Params.consume_front (PassName)) {
550
- assert (false &&
551
- " unable to strip pass name from parametrized pass specification" );
552
- }
553
- if (!Params.empty () &&
554
- (!Params.consume_front (" <" ) || !Params.consume_back (" >" ))) {
555
- assert (false && " invalid format for parametrized pass name" );
556
- }
557
-
558
- Expected<ParametersT> Result = Parser (Params);
559
- assert ((Result || Result.template errorIsA <StringError>()) &&
560
- " Pass parameter parser can only return StringErrors." );
561
- return Result;
562
- }
563
-
564
519
// / Parser of parameters for HardwareLoops pass.
565
520
Expected<HardwareLoopOptions> parseHardwareLoopOptions (StringRef Params) {
566
521
HardwareLoopOptions HardwareLoopOpts;
@@ -1196,7 +1151,7 @@ static bool isModulePassName(StringRef Name, CallbacksT &Callbacks) {
1196
1151
if (Name == NAME) \
1197
1152
return true ;
1198
1153
#define MODULE_PASS_WITH_PARAMS (NAME, CLASS, CREATE_PASS, PARSER, PARAMS ) \
1199
- if (checkParametrizedPassName (Name, NAME)) \
1154
+ if (PassBuilder:: checkParametrizedPassName (Name, NAME)) \
1200
1155
return true ;
1201
1156
#define MODULE_ANALYSIS (NAME, CREATE_PASS ) \
1202
1157
if (Name == " require<" NAME " >" || Name == " invalidate<" NAME " >" ) \
@@ -1225,7 +1180,7 @@ static bool isCGSCCPassName(StringRef Name, CallbacksT &Callbacks) {
1225
1180
if (Name == NAME) \
1226
1181
return true ;
1227
1182
#define CGSCC_PASS_WITH_PARAMS (NAME, CLASS, CREATE_PASS, PARSER, PARAMS ) \
1228
- if (checkParametrizedPassName (Name, NAME)) \
1183
+ if (PassBuilder:: checkParametrizedPassName (Name, NAME)) \
1229
1184
return true ;
1230
1185
#define CGSCC_ANALYSIS (NAME, CREATE_PASS ) \
1231
1186
if (Name == " require<" NAME " >" || Name == " invalidate<" NAME " >" ) \
@@ -1252,7 +1207,7 @@ static bool isFunctionPassName(StringRef Name, CallbacksT &Callbacks) {
1252
1207
if (Name == NAME) \
1253
1208
return true ;
1254
1209
#define FUNCTION_PASS_WITH_PARAMS (NAME, CLASS, CREATE_PASS, PARSER, PARAMS ) \
1255
- if (checkParametrizedPassName (Name, NAME)) \
1210
+ if (PassBuilder:: checkParametrizedPassName (Name, NAME)) \
1256
1211
return true ;
1257
1212
#define FUNCTION_ANALYSIS (NAME, CREATE_PASS ) \
1258
1213
if (Name == " require<" NAME " >" || Name == " invalidate<" NAME " >" ) \
@@ -1293,7 +1248,7 @@ static bool isLoopNestPassName(StringRef Name, CallbacksT &Callbacks,
1293
1248
if (parseRepeatPassName (Name))
1294
1249
return true ;
1295
1250
1296
- if (checkParametrizedPassName (Name, " lnicm" )) {
1251
+ if (PassBuilder:: checkParametrizedPassName (Name, " lnicm" )) {
1297
1252
UseMemorySSA = true ;
1298
1253
return true ;
1299
1254
}
@@ -1315,7 +1270,7 @@ static bool isLoopPassName(StringRef Name, CallbacksT &Callbacks,
1315
1270
if (parseRepeatPassName (Name))
1316
1271
return true ;
1317
1272
1318
- if (checkParametrizedPassName (Name, " licm" )) {
1273
+ if (PassBuilder:: checkParametrizedPassName (Name, " licm" )) {
1319
1274
UseMemorySSA = true ;
1320
1275
return true ;
1321
1276
}
@@ -1324,7 +1279,7 @@ static bool isLoopPassName(StringRef Name, CallbacksT &Callbacks,
1324
1279
if (Name == NAME) \
1325
1280
return true ;
1326
1281
#define LOOP_PASS_WITH_PARAMS (NAME, CLASS, CREATE_PASS, PARSER, PARAMS ) \
1327
- if (checkParametrizedPassName (Name, NAME)) \
1282
+ if (PassBuilder:: checkParametrizedPassName (Name, NAME)) \
1328
1283
return true ;
1329
1284
#define LOOP_ANALYSIS (NAME, CREATE_PASS ) \
1330
1285
if (Name == " require<" NAME " >" || Name == " invalidate<" NAME " >" ) \
0 commit comments