Lines Matching +full:name +full:-

1 //===- Parsing and selection of pass pipelines ----------------------------===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
15 //===----------------------------------------------------------------------===//
324 "^(default|thinlto-pre-link|thinlto|lto-pre-link|lto)<(O[0123sz])>$");
328 "print-pipeline-passes",
329 cl::desc("Print a '-passes' compatible string describing the pipeline "
330 "(best-effort only)."));
348 static StringRef name() { return "TriggerCrashModulePass"; } in name() function in __anon792266cc0111::TriggerCrashModulePass
358 static StringRef name() { return "TriggerCrashFunctionPass"; } in name() function in __anon792266cc0111::TriggerCrashFunctionPass
361 // A pass for testing message reporting of -verify-each failures.
370 GlobalAlias::create(PtrTy, PtrTy->getAddressSpace(), in run()
380 new UnreachableInst(F.getContext(), BB.getTerminator()->getIterator()); in run()
392 static StringRef name() { return "TriggerVerifierErrorPass"; } in name() function in __anon792266cc0111::TriggerVerifierErrorPass
420 static StringRef name() { return "RequireAllMachineFunctionPropertiesPass"; } in name() function in __anon792266cc0111::RequireAllMachineFunctionPropertiesPass
430 TM->registerPassBuilderCallbacks(*this); in PassBuilder()
432 PIC->registerClassToPassNameCallback([this, PIC]() { in PassBuilder()
436 #define MODULE_PASS(NAME, CREATE_PASS) \ in PassBuilder() argument
437 PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); in PassBuilder()
438 #define MODULE_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) \ in PassBuilder() argument
439 PIC->addClassToPassName(CLASS, NAME); in PassBuilder()
440 #define MODULE_ANALYSIS(NAME, CREATE_PASS) \ in PassBuilder() argument
441 PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); in PassBuilder()
442 #define FUNCTION_PASS(NAME, CREATE_PASS) \ in PassBuilder() argument
443 PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); in PassBuilder()
444 #define FUNCTION_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) \ in PassBuilder() argument
445 PIC->addClassToPassName(CLASS, NAME); in PassBuilder()
446 #define FUNCTION_ANALYSIS(NAME, CREATE_PASS) \ in PassBuilder() argument
447 PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); in PassBuilder()
448 #define LOOPNEST_PASS(NAME, CREATE_PASS) \ in PassBuilder() argument
449 PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); in PassBuilder()
450 #define LOOP_PASS(NAME, CREATE_PASS) \ in PassBuilder() argument
451 PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); in PassBuilder()
452 #define LOOP_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) \ in PassBuilder() argument
453 PIC->addClassToPassName(CLASS, NAME); in PassBuilder()
454 #define LOOP_ANALYSIS(NAME, CREATE_PASS) \ in PassBuilder() argument
455 PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); in PassBuilder()
456 #define CGSCC_PASS(NAME, CREATE_PASS) \ in PassBuilder() argument
457 PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); in PassBuilder()
458 #define CGSCC_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) \ in PassBuilder() argument
459 PIC->addClassToPassName(CLASS, NAME); in PassBuilder()
460 #define CGSCC_ANALYSIS(NAME, CREATE_PASS) \ in PassBuilder() argument
461 PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); in PassBuilder()
464 #define MACHINE_FUNCTION_ANALYSIS(NAME, CREATE_PASS) \ in PassBuilder() argument
465 PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); in PassBuilder()
466 #define MACHINE_FUNCTION_PASS(NAME, CREATE_PASS) \ in PassBuilder() argument
467 PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); in PassBuilder()
474 #define MODULE_ANALYSIS(NAME, CREATE_PASS) \ in registerModuleAnalyses() argument
483 #define CGSCC_ANALYSIS(NAME, CREATE_PASS) \ in registerCGSCCAnalyses() argument
497 #define FUNCTION_ANALYSIS(NAME, CREATE_PASS) \ in registerFunctionAnalyses() argument
508 #define MACHINE_FUNCTION_ANALYSIS(NAME, CREATE_PASS) \ in registerMachineFunctionAnalyses() argument
517 #define LOOP_ANALYSIS(NAME, CREATE_PASS) \ in registerLoopAnalyses() argument
526 parseFunctionPipelineName(StringRef Name) { in parseFunctionPipelineName() argument
528 if (!Name.consume_front("function")) in parseFunctionPipelineName()
530 if (Name.empty()) in parseFunctionPipelineName()
532 if (!Name.consume_front("<") || !Name.consume_back(">")) in parseFunctionPipelineName()
534 while (!Name.empty()) { in parseFunctionPipelineName()
535 auto [Front, Back] = Name.split(';'); in parseFunctionPipelineName()
536 Name = Back; in parseFunctionPipelineName()
537 if (Front == "eager-inv") in parseFunctionPipelineName()
539 else if (Front == "no-rerun") in parseFunctionPipelineName()
547 static std::optional<int> parseDevirtPassName(StringRef Name) { in parseDevirtPassName() argument
548 if (!Name.consume_front("devirt<") || !Name.consume_back(">")) in parseDevirtPassName()
551 if (Name.getAsInteger(0, Count) || Count < 0) in parseDevirtPassName()
596 if (ParamName.consume_front("hardware-loop-decrement=")) { in parseHardwareLoopOptions()
605 if (ParamName.consume_front("hardware-loop-counter-bitwidth=")) { in parseHardwareLoopOptions()
614 if (ParamName == "force-hardware-loops") { in parseHardwareLoopOptions()
616 } else if (ParamName == "force-hardware-loop-phi") { in parseHardwareLoopOptions()
618 } else if (ParamName == "force-nested-hardware-loop") { in parseHardwareLoopOptions()
620 } else if (ParamName == "force-hardware-loop-guard") { in parseHardwareLoopOptions()
638 // Don't accept -Os/-Oz. in parseLoopUnrollOptions()
639 if (OptLevel && !OptLevel->isOptimizingForSize()) { in parseLoopUnrollOptions()
640 UnrollOpts.setOptLevel(OptLevel->getSpeedupLevel()); in parseLoopUnrollOptions()
643 if (ParamName.consume_front("full-unroll-max=")) { in parseLoopUnrollOptions()
653 bool Enable = !ParamName.consume_front("no-"); in parseLoopUnrollOptions()
658 } else if (ParamName == "profile-peeling") { in parseLoopUnrollOptions()
675 Params, "vfe-linkage-unit-visibility", "GlobalDCE"); in parseGlobalDCEPassOptions()
679 return PassBuilder::parseSinglePassOption(Params, "in-lto-post-link", in parseCGProfilePassOptions()
684 return PassBuilder::parseSinglePassOption(Params, "only-mandatory", in parseInlinerPassOptions()
689 return PassBuilder::parseSinglePassOption(Params, "reuse-storage", in parseCoroSplitPassOptions()
695 Params, "skip-non-recursive-function-attrs", "PostOrderFunctionAttrs"); in parsePostOrderFunctionAttrsPassOptions()
723 return PassBuilder::parseSinglePassOption(Params, "post-inline", in parseEntryExitInstrumenterPassOptions()
782 } else if (ParamName == "emit-summary") { in parseEmbedBitcodePassOptions()
804 } else if (ParamName.consume_front("track-origins=")) { in parseMSanPassOptions()
807 formatv("invalid argument to MemorySanitizer pass track-origins " in parseMSanPassOptions()
812 } else if (ParamName == "eager-checks") { in parseMSanPassOptions()
831 bool Enable = !ParamName.consume_front("no-"); in parseSimplifyCFGOptions()
832 if (ParamName == "speculate-blocks") { in parseSimplifyCFGOptions()
834 } else if (ParamName == "simplify-cond-branch") { in parseSimplifyCFGOptions()
836 } else if (ParamName == "forward-switch-cond") { in parseSimplifyCFGOptions()
838 } else if (ParamName == "switch-range-to-icmp") { in parseSimplifyCFGOptions()
840 } else if (ParamName == "switch-to-lookup") { in parseSimplifyCFGOptions()
842 } else if (ParamName == "keep-loops") { in parseSimplifyCFGOptions()
844 } else if (ParamName == "hoist-common-insts") { in parseSimplifyCFGOptions()
846 } else if (ParamName == "sink-common-insts") { in parseSimplifyCFGOptions()
848 } else if (ParamName == "speculate-unpredictables") { in parseSimplifyCFGOptions()
850 } else if (Enable && ParamName.consume_front("bonus-inst-threshold=")) { in parseSimplifyCFGOptions()
854 formatv("invalid argument to SimplifyCFG pass bonus-threshold " in parseSimplifyCFGOptions()
870 // When specifying "instcombine" in -passes enable fix-point verification by in parseInstCombineOptions()
877 bool Enable = !ParamName.consume_front("no-"); in parseInstCombineOptions()
878 if (ParamName == "use-loop-info") { in parseInstCombineOptions()
880 } else if (ParamName == "verify-fixpoint") { in parseInstCombineOptions()
882 } else if (Enable && ParamName.consume_front("max-iterations=")) { in parseInstCombineOptions()
886 formatv("invalid argument to InstCombine pass max-iterations " in parseInstCombineOptions()
907 bool Enable = !ParamName.consume_front("no-"); in parseLoopVectorizeOptions()
908 if (ParamName == "interleave-forced-only") { in parseLoopVectorizeOptions()
910 } else if (ParamName == "vectorize-forced-only") { in parseLoopVectorizeOptions()
927 bool Enable = !ParamName.consume_front("no-"); in parseLoopUnswitchOptions()
948 bool Enable = !ParamName.consume_front("no-"); in parseLICMOptions()
966 bool Enable = !ParamName.consume_front("no-"); in parseLoopRotateOptions()
967 if (ParamName == "header-duplication") { in parseLoopRotateOptions()
969 } else if (ParamName == "prepare-for-lto") { in parseLoopRotateOptions()
986 bool Enable = !ParamName.consume_front("no-"); in parseMergedLoadStoreMotionOptions()
987 if (ParamName == "split-footer-bb") { in parseMergedLoadStoreMotionOptions()
1006 bool Enable = !ParamName.consume_front("no-"); in parseGVNOptions()
1009 } else if (ParamName == "load-pre") { in parseGVNOptions()
1011 } else if (ParamName == "split-backedge-load-pre") { in parseGVNOptions()
1030 bool Enable = !ParamName.consume_front("no-"); in parseIPSCCPOptions()
1031 if (ParamName == "func-spec") in parseIPSCCPOptions()
1042 if (Params.empty() || Params == "modify-cfg") in parseSROAOptions()
1044 if (Params == "preserve-cfg") in parseSROAOptions()
1047 formatv("invalid SROA pass parameter '{0}' (either preserve-cfg or " in parseSROAOptions()
1048 "modify-cfg can be specified)", in parseSROAOptions()
1075 return PassBuilder::parseSinglePassOption(Params, "normalized-results", in parseDependenceAnalysisPrinterOptions()
1080 return PassBuilder::parseSinglePassOption(Params, "lower-gep", in parseSeparateConstOffsetFromGEPPassOptions()
1089 formatv("invalid function-simplification parameter '{0}' ", Params) in parseFunctionSimplificationPipelineOptions()
1097 return PassBuilder::parseSinglePassOption(Params, "no-ensure-optimized-uses", in parseMemorySSAPrinterPassOptions()
1102 return PassBuilder::parseSinglePassOption(Params, "only-if-divergent-target", in parseSpeculativeExecutionPassOptions()
1112 if (ParamName.consume_front("profile-filename=")) { in parseMemProfUsePassOptions()
1129 return PassBuilder::parseSinglePassOption(Params, "demote-catchswitch-only", in parseWinEHPrepareOptions()
1139 bool Enable = !ParamName.consume_front("no-"); in parseGlobalMergeOptions()
1140 if (ParamName == "group-by-use") in parseGlobalMergeOptions()
1142 else if (ParamName == "ignore-single-use") in parseGlobalMergeOptions()
1144 else if (ParamName == "merge-const") in parseGlobalMergeOptions()
1146 else if (ParamName == "merge-external") in parseGlobalMergeOptions()
1148 else if (ParamName.consume_front("max-offset=")) { in parseGlobalMergeOptions()
1165 if (ParamName.consume_front("preserve-gv=")) { in parseInternalizeGVs()
1198 if (ParamName == "no-clear-vregs") { in parseRegAllocFastPassOptions()
1212 /// Tests whether a pass name starts with a valid prefix for a default pipeline
1214 static bool startsWithDefaultPipelineAliasPrefix(StringRef Name) { in startsWithDefaultPipelineAliasPrefix() argument
1215 return Name.starts_with("default") || Name.starts_with("thinlto") || in startsWithDefaultPipelineAliasPrefix()
1216 Name.starts_with("lto"); in startsWithDefaultPipelineAliasPrefix()
1219 /// Tests whether registered callbacks will accept a given pass name.
1223 /// pass name in the text. This may be a name that is handled through one of the
1228 static bool callbacksAcceptPassName(StringRef Name, CallbacksT &Callbacks) { in callbacksAcceptPassName() argument
1232 if (CB(Name, DummyPM, {})) in callbacksAcceptPassName()
1239 static bool isModulePassName(StringRef Name, CallbacksT &Callbacks) { in isModulePassName() argument
1240 // Manually handle aliases for pre-configured pipeline fragments. in isModulePassName()
1241 if (startsWithDefaultPipelineAliasPrefix(Name)) in isModulePassName()
1242 return DefaultAliasRegex.match(Name); in isModulePassName()
1244 StringRef NameNoBracket = Name.take_until([](char C) { return C == '<'; }); in isModulePassName()
1247 if (Name == "module") in isModulePassName()
1249 if (Name == "cgscc") in isModulePassName()
1253 if (Name == "coro-cond") in isModulePassName()
1256 #define MODULE_PASS(NAME, CREATE_PASS) \ in isModulePassName() argument
1257 if (Name == NAME) \ in isModulePassName()
1259 #define MODULE_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) \ in isModulePassName() argument
1260 if (PassBuilder::checkParametrizedPassName(Name, NAME)) \ in isModulePassName()
1262 #define MODULE_ANALYSIS(NAME, CREATE_PASS) \ in isModulePassName() argument
1263 if (Name == "require<" NAME ">" || Name == "invalidate<" NAME ">") \ in isModulePassName()
1267 return callbacksAcceptPassName<ModulePassManager>(Name, Callbacks); in isModulePassName()
1271 static bool isCGSCCPassName(StringRef Name, CallbacksT &Callbacks) { in isCGSCCPassName() argument
1273 StringRef NameNoBracket = Name.take_until([](char C) { return C == '<'; }); in isCGSCCPassName()
1274 if (Name == "cgscc") in isCGSCCPassName()
1279 // Explicitly handle custom-parsed pass names. in isCGSCCPassName()
1280 if (parseDevirtPassName(Name)) in isCGSCCPassName()
1283 #define CGSCC_PASS(NAME, CREATE_PASS) \ in isCGSCCPassName() argument
1284 if (Name == NAME) \ in isCGSCCPassName()
1286 #define CGSCC_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) \ in isCGSCCPassName() argument
1287 if (PassBuilder::checkParametrizedPassName(Name, NAME)) \ in isCGSCCPassName()
1289 #define CGSCC_ANALYSIS(NAME, CREATE_PASS) \ in isCGSCCPassName() argument
1290 if (Name == "require<" NAME ">" || Name == "invalidate<" NAME ">") \ in isCGSCCPassName()
1294 return callbacksAcceptPassName<CGSCCPassManager>(Name, Callbacks); in isCGSCCPassName()
1298 static bool isFunctionPassName(StringRef Name, CallbacksT &Callbacks) { in isFunctionPassName() argument
1300 StringRef NameNoBracket = Name.take_until([](char C) { return C == '<'; }); in isFunctionPassName()
1303 if (Name == "loop" || Name == "loop-mssa" || Name == "machine-function") in isFunctionPassName()
1306 #define FUNCTION_PASS(NAME, CREATE_PASS) \ in isFunctionPassName() argument
1307 if (Name == NAME) \ in isFunctionPassName()
1309 #define FUNCTION_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) \ in isFunctionPassName() argument
1310 if (PassBuilder::checkParametrizedPassName(Name, NAME)) \ in isFunctionPassName()
1312 #define FUNCTION_ANALYSIS(NAME, CREATE_PASS) \ in isFunctionPassName() argument
1313 if (Name == "require<" NAME ">" || Name == "invalidate<" NAME ">") \ in isFunctionPassName()
1317 return callbacksAcceptPassName<FunctionPassManager>(Name, Callbacks); in isFunctionPassName()
1321 static bool isMachineFunctionPassName(StringRef Name, CallbacksT &Callbacks) { in isMachineFunctionPassName() argument
1323 if (Name == "machine-function") in isMachineFunctionPassName()
1326 #define MACHINE_FUNCTION_PASS(NAME, CREATE_PASS) \ in isMachineFunctionPassName() argument
1327 if (Name == NAME) \ in isMachineFunctionPassName()
1329 #define MACHINE_FUNCTION_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, \ in isMachineFunctionPassName() argument
1331 if (PassBuilder::checkParametrizedPassName(Name, NAME)) \ in isMachineFunctionPassName()
1334 #define MACHINE_FUNCTION_ANALYSIS(NAME, CREATE_PASS) \ in isMachineFunctionPassName() argument
1335 if (Name == "require<" NAME ">" || Name == "invalidate<" NAME ">") \ in isMachineFunctionPassName()
1340 return callbacksAcceptPassName<MachineFunctionPassManager>(Name, Callbacks); in isMachineFunctionPassName()
1344 static bool isLoopNestPassName(StringRef Name, CallbacksT &Callbacks, in isLoopNestPassName() argument
1348 if (PassBuilder::checkParametrizedPassName(Name, "lnicm")) { in isLoopNestPassName()
1353 #define LOOPNEST_PASS(NAME, CREATE_PASS) \ in isLoopNestPassName() argument
1354 if (Name == NAME) \ in isLoopNestPassName()
1358 return callbacksAcceptPassName<LoopPassManager>(Name, Callbacks); in isLoopNestPassName()
1362 static bool isLoopPassName(StringRef Name, CallbacksT &Callbacks, in isLoopPassName() argument
1366 if (PassBuilder::checkParametrizedPassName(Name, "licm")) { in isLoopPassName()
1371 #define LOOP_PASS(NAME, CREATE_PASS) \ in isLoopPassName() argument
1372 if (Name == NAME) \ in isLoopPassName()
1374 #define LOOP_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) \ in isLoopPassName() argument
1375 if (PassBuilder::checkParametrizedPassName(Name, NAME)) \ in isLoopPassName()
1377 #define LOOP_ANALYSIS(NAME, CREATE_PASS) \ in isLoopPassName() argument
1378 if (Name == "require<" NAME ">" || Name == "invalidate<" NAME ">") \ in isLoopPassName()
1382 return callbacksAcceptPassName<LoopPassManager>(Name, Callbacks); in isLoopPassName()
1396 // If we have a single terminating name, we're done. in parsePipelineText()
1403 // Just a name ending in a comma, continue. in parsePipelineText()
1444 auto &Name = E.Name; in parseModulePass() local
1449 if (Name == "module") { in parseModulePass()
1456 if (Name == "coro-cond") { in parseModulePass()
1463 if (Name == "cgscc") { in parseModulePass()
1470 if (auto Params = parseFunctionPipelineName(Name)) { in parseModulePass()
1471 if (Params->second) in parseModulePass()
1473 "cannot have a no-rerun module to function adaptor", in parseModulePass()
1479 createModuleToFunctionPassAdaptor(std::move(FPM), Params->first)); in parseModulePass()
1484 if (C(Name, MPM, InnerPipeline)) in parseModulePass()
1489 formatv("invalid use of '{0}' pass as module pipeline", Name).str(), in parseModulePass()
1494 // Manually handle aliases for pre-configured pipeline fragments. in parseModulePass()
1495 if (startsWithDefaultPipelineAliasPrefix(Name)) { in parseModulePass()
1497 if (!DefaultAliasRegex.match(Name, &Matches)) in parseModulePass()
1499 formatv("unknown default pipeline alias '{0}'", Name).str(), in parseModulePass()
1516 } else if (Matches[1] == "thinlto-pre-link") { in parseModulePass()
1520 } else if (Matches[1] == "lto-pre-link") { in parseModulePass()
1522 // When UnifiedLTO is enabled, use the ThinLTO pre-link pipeline. This in parseModulePass()
1523 // avoids compile-time performance regressions and keeps the pre-link in parseModulePass()
1536 #define MODULE_PASS(NAME, CREATE_PASS) \ in parseModulePass() argument
1537 if (Name == NAME) { \ in parseModulePass()
1541 #define MODULE_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) \ in parseModulePass() argument
1542 if (checkParametrizedPassName(Name, NAME)) { \ in parseModulePass()
1543 auto Params = parsePassParameters(PARSER, Name, NAME); \ in parseModulePass()
1549 #define MODULE_ANALYSIS(NAME, CREATE_PASS) \ in parseModulePass() argument
1550 if (Name == "require<" NAME ">") { \ in parseModulePass()
1556 if (Name == "invalidate<" NAME ">") { \ in parseModulePass()
1561 #define CGSCC_PASS(NAME, CREATE_PASS) \ in parseModulePass() argument
1562 if (Name == NAME) { \ in parseModulePass()
1566 #define CGSCC_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) \ in parseModulePass() argument
1567 if (checkParametrizedPassName(Name, NAME)) { \ in parseModulePass()
1568 auto Params = parsePassParameters(PARSER, Name, NAME); \ in parseModulePass()
1575 #define FUNCTION_PASS(NAME, CREATE_PASS) \ in parseModulePass() argument
1576 if (Name == NAME) { \ in parseModulePass()
1580 #define FUNCTION_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) \ in parseModulePass() argument
1581 if (checkParametrizedPassName(Name, NAME)) { \ in parseModulePass()
1582 auto Params = parsePassParameters(PARSER, Name, NAME); \ in parseModulePass()
1588 #define LOOPNEST_PASS(NAME, CREATE_PASS) \ in parseModulePass() argument
1589 if (Name == NAME) { \ in parseModulePass()
1594 #define LOOP_PASS(NAME, CREATE_PASS) \ in parseModulePass() argument
1595 if (Name == NAME) { \ in parseModulePass()
1600 #define LOOP_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) \ in parseModulePass() argument
1601 if (checkParametrizedPassName(Name, NAME)) { \ in parseModulePass()
1602 auto Params = parsePassParameters(PARSER, Name, NAME); \ in parseModulePass()
1613 if (C(Name, MPM, InnerPipeline)) in parseModulePass()
1616 formatv("unknown module pass '{0}'", Name).str(), in parseModulePass()
1622 auto &Name = E.Name; in parseCGSCCPass() local
1627 if (Name == "cgscc") { in parseCGSCCPass()
1635 if (auto Params = parseFunctionPipelineName(Name)) { in parseCGSCCPass()
1641 std::move(FPM), Params->first, Params->second)); in parseCGSCCPass()
1644 if (auto MaxRepetitions = parseDevirtPassName(Name)) { in parseCGSCCPass()
1654 if (C(Name, CGPM, InnerPipeline)) in parseCGSCCPass()
1659 formatv("invalid use of '{0}' pass as cgscc pipeline", Name).str(), in parseCGSCCPass()
1664 #define CGSCC_PASS(NAME, CREATE_PASS) \ in parseCGSCCPass() argument
1665 if (Name == NAME) { \ in parseCGSCCPass()
1669 #define CGSCC_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) \ in parseCGSCCPass() argument
1670 if (checkParametrizedPassName(Name, NAME)) { \ in parseCGSCCPass()
1671 auto Params = parsePassParameters(PARSER, Name, NAME); \ in parseCGSCCPass()
1677 #define CGSCC_ANALYSIS(NAME, CREATE_PASS) \ in parseCGSCCPass() argument
1678 if (Name == "require<" NAME ">") { \ in parseCGSCCPass()
1685 if (Name == "invalidate<" NAME ">") { \ in parseCGSCCPass()
1690 #define FUNCTION_PASS(NAME, CREATE_PASS) \ in parseCGSCCPass() argument
1691 if (Name == NAME) { \ in parseCGSCCPass()
1695 #define FUNCTION_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) \ in parseCGSCCPass() argument
1696 if (checkParametrizedPassName(Name, NAME)) { \ in parseCGSCCPass()
1697 auto Params = parsePassParameters(PARSER, Name, NAME); \ in parseCGSCCPass()
1703 #define LOOPNEST_PASS(NAME, CREATE_PASS) \ in parseCGSCCPass() argument
1704 if (Name == NAME) { \ in parseCGSCCPass()
1709 #define LOOP_PASS(NAME, CREATE_PASS) \ in parseCGSCCPass() argument
1710 if (Name == NAME) { \ in parseCGSCCPass()
1715 #define LOOP_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) \ in parseCGSCCPass() argument
1716 if (checkParametrizedPassName(Name, NAME)) { \ in parseCGSCCPass()
1717 auto Params = parsePassParameters(PARSER, Name, NAME); \ in parseCGSCCPass()
1728 if (C(Name, CGPM, InnerPipeline)) in parseCGSCCPass()
1731 formatv("unknown cgscc pass '{0}'", Name).str(), in parseCGSCCPass()
1737 auto &Name = E.Name; in parseFunctionPass() local
1742 if (Name == "function") { in parseFunctionPass()
1750 if (Name == "loop" || Name == "loop-mssa") { in parseFunctionPass()
1755 bool UseMemorySSA = (Name == "loop-mssa"); in parseFunctionPass()
1757 return Pipeline.Name.contains("simple-loop-unswitch"); in parseFunctionPass()
1760 return Pipeline.Name == "loop-predication"; in parseFunctionPass()
1766 if (Name == "machine-function") { in parseFunctionPass()
1775 if (C(Name, FPM, InnerPipeline)) in parseFunctionPass()
1780 formatv("invalid use of '{0}' pass as function pipeline", Name).str(), in parseFunctionPass()
1785 #define FUNCTION_PASS(NAME, CREATE_PASS) \ in parseFunctionPass() argument
1786 if (Name == NAME) { \ in parseFunctionPass()
1790 #define FUNCTION_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) \ in parseFunctionPass() argument
1791 if (checkParametrizedPassName(Name, NAME)) { \ in parseFunctionPass()
1792 auto Params = parsePassParameters(PARSER, Name, NAME); \ in parseFunctionPass()
1798 #define FUNCTION_ANALYSIS(NAME, CREATE_PASS) \ in parseFunctionPass() argument
1799 if (Name == "require<" NAME ">") { \ in parseFunctionPass()
1805 if (Name == "invalidate<" NAME ">") { \ in parseFunctionPass()
1811 // bool UseMemorySSA = !("canon-freeze" || "loop-predication" || in parseFunctionPass()
1812 // "guard-widening"); in parseFunctionPass()
1814 #define LOOPNEST_PASS(NAME, CREATE_PASS) \ in parseFunctionPass() argument
1815 if (Name == NAME) { \ in parseFunctionPass()
1819 #define LOOP_PASS(NAME, CREATE_PASS) \ in parseFunctionPass() argument
1820 if (Name == NAME) { \ in parseFunctionPass()
1824 #define LOOP_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) \ in parseFunctionPass() argument
1825 if (checkParametrizedPassName(Name, NAME)) { \ in parseFunctionPass()
1826 auto Params = parsePassParameters(PARSER, Name, NAME); \ in parseFunctionPass()
1836 if (C(Name, FPM, InnerPipeline)) in parseFunctionPass()
1839 formatv("unknown function pass '{0}'", Name).str(), in parseFunctionPass()
1845 StringRef Name = E.Name; in parseLoopPass() local
1850 if (Name == "loop") { in parseLoopPass()
1860 if (C(Name, LPM, InnerPipeline)) in parseLoopPass()
1865 formatv("invalid use of '{0}' pass as loop pipeline", Name).str(), in parseLoopPass()
1870 #define LOOPNEST_PASS(NAME, CREATE_PASS) \ in parseLoopPass() argument
1871 if (Name == NAME) { \ in parseLoopPass()
1875 #define LOOP_PASS(NAME, CREATE_PASS) \ in parseLoopPass() argument
1876 if (Name == NAME) { \ in parseLoopPass()
1880 #define LOOP_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) \ in parseLoopPass() argument
1881 if (checkParametrizedPassName(Name, NAME)) { \ in parseLoopPass()
1882 auto Params = parsePassParameters(PARSER, Name, NAME); \ in parseLoopPass()
1888 #define LOOP_ANALYSIS(NAME, CREATE_PASS) \ in parseLoopPass() argument
1889 if (Name == "require<" NAME ">") { \ in parseLoopPass()
1896 if (Name == "invalidate<" NAME ">") { \ in parseLoopPass()
1904 if (C(Name, LPM, InnerPipeline)) in parseLoopPass()
1906 return make_error<StringError>(formatv("unknown loop pass '{0}'", Name).str(), in parseLoopPass()
1912 StringRef Name = E.Name; in parseMachinePass() local
1917 #define MACHINE_MODULE_PASS(NAME, CREATE_PASS) \ in parseMachinePass() argument
1918 if (Name == NAME) { \ in parseMachinePass()
1922 #define MACHINE_FUNCTION_PASS(NAME, CREATE_PASS) \ in parseMachinePass() argument
1923 if (Name == NAME) { \ in parseMachinePass()
1927 #define MACHINE_FUNCTION_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, \ in parseMachinePass() argument
1929 if (checkParametrizedPassName(Name, NAME)) { \ in parseMachinePass()
1930 auto Params = parsePassParameters(PARSER, Name, NAME); \ in parseMachinePass()
1936 #define MACHINE_FUNCTION_ANALYSIS(NAME, CREATE_PASS) \ in parseMachinePass() argument
1937 if (Name == "require<" NAME ">") { \ in parseMachinePass()
1943 if (Name == "invalidate<" NAME ">") { \ in parseMachinePass()
1951 if (C(Name, MFPM, E.InnerPipeline)) in parseMachinePass()
1954 formatv("unknown machine pass '{0}'", Name).str(), in parseMachinePass()
1958 bool PassBuilder::parseAAPassName(AAManager &AA, StringRef Name) { in parseAAPassName() argument
1959 #define MODULE_ALIAS_ANALYSIS(NAME, CREATE_PASS) \ in parseAAPassName() argument
1960 if (Name == NAME) { \ in parseAAPassName()
1965 #define FUNCTION_ALIAS_ANALYSIS(NAME, CREATE_PASS) \ in parseAAPassName() argument
1966 if (Name == NAME) { \ in parseAAPassName()
1974 if (C(Name, AA)) in parseAAPassName()
2032 MFAM->registerPass( in crossRegisterProxies()
2034 MFAM->registerPass( in crossRegisterProxies()
2050 // pre-populate the analysis managers with target-specific stuff?
2054 if (!Pipeline || Pipeline->empty()) in parsePassPipeline()
2059 // If the first name isn't at the module layer, wrap the pipeline up in parsePassPipeline()
2061 StringRef FirstName = Pipeline->front().Name; in parsePassPipeline()
2072 Pipeline = {{"function", {{UseMemorySSA ? "loop-mssa" : "loop", in parsePassPipeline()
2076 Pipeline = {{"function", {{UseMemorySSA ? "loop-mssa" : "loop", in parsePassPipeline()
2080 Pipeline = {{"function", {{"machine-function", std::move(*Pipeline)}}}}; in parsePassPipeline()
2086 // Unknown pass or pipeline name! in parsePassPipeline()
2087 auto &InnerPipeline = Pipeline->front().InnerPipeline; in parsePassPipeline()
2089 formatv("unknown {0} name '{1}'", in parsePassPipeline()
2105 if (!Pipeline || Pipeline->empty()) in parsePassPipeline()
2110 StringRef FirstName = Pipeline->front().Name; in parsePassPipeline()
2128 if (!Pipeline || Pipeline->empty()) in parsePassPipeline()
2133 StringRef FirstName = Pipeline->front().Name; in parsePassPipeline()
2150 if (!Pipeline || Pipeline->empty()) in parsePassPipeline()
2164 if (!Pipeline || Pipeline->empty()) in parsePassPipeline()
2184 StringRef Name; in parseAAPipeline() local
2185 std::tie(Name, PipelineText) = PipelineText.split(','); in parseAAPipeline()
2186 if (!parseAAPassName(AA, Name)) in parseAAPipeline()
2188 formatv("unknown alias analysis name '{0}'", Name).str(), in parseAAPipeline()
2217 #define MODULE_PASS(NAME, CREATE_PASS) printPassName(NAME, OS); in printPassNames() argument
2221 #define MODULE_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) \ in printPassNames() argument
2222 printPassName(NAME, PARAMS, OS); in printPassNames()
2226 #define MODULE_ANALYSIS(NAME, CREATE_PASS) printPassName(NAME, OS); in printPassNames() argument
2230 #define MODULE_ALIAS_ANALYSIS(NAME, CREATE_PASS) printPassName(NAME, OS); in printPassNames() argument
2234 #define CGSCC_PASS(NAME, CREATE_PASS) printPassName(NAME, OS); in printPassNames() argument
2238 #define CGSCC_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) \ in printPassNames() argument
2239 printPassName(NAME, PARAMS, OS); in printPassNames()
2243 #define CGSCC_ANALYSIS(NAME, CREATE_PASS) printPassName(NAME, OS); in printPassNames() argument
2247 #define FUNCTION_PASS(NAME, CREATE_PASS) printPassName(NAME, OS); in printPassNames() argument
2251 #define FUNCTION_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) \ in printPassNames() argument
2252 printPassName(NAME, PARAMS, OS); in printPassNames()
2256 #define FUNCTION_ANALYSIS(NAME, CREATE_PASS) printPassName(NAME, OS); in printPassNames() argument
2260 #define FUNCTION_ALIAS_ANALYSIS(NAME, CREATE_PASS) printPassName(NAME, OS); in printPassNames() argument
2264 #define LOOPNEST_PASS(NAME, CREATE_PASS) printPassName(NAME, OS); in printPassNames() argument
2268 #define LOOP_PASS(NAME, CREATE_PASS) printPassName(NAME, OS); in printPassNames() argument
2272 #define LOOP_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) \ in printPassNames() argument
2273 printPassName(NAME, PARAMS, OS); in printPassNames()
2277 #define LOOP_ANALYSIS(NAME, CREATE_PASS) printPassName(NAME, OS); in printPassNames() argument
2281 #define MACHINE_MODULE_PASS(NAME, CREATE_PASS) printPassName(NAME, OS); in printPassNames() argument
2285 #define MACHINE_FUNCTION_PASS(NAME, CREATE_PASS) printPassName(NAME, OS); in printPassNames() argument
2289 #define MACHINE_FUNCTION_ANALYSIS(NAME, CREATE_PASS) printPassName(NAME, OS); in printPassNames() argument