static void addMandatoryOptPipeline(SILPassPipelinePlan &P, const SILOptions &Options) { P.startPipeline("Guaranteed Passes"); if (Options.EnableMandatorySemanticARCOpts) { P.addSemanticARCOpts(); } P.addDiagnoseStaticExclusivity(); P.addCapturePromotion(); P.addAllocBoxToStack(); P.addNoReturnFolding(); P.addOwnershipModelEliminator(); P.addMarkUninitializedFixup(); P.addDefiniteInitialization(); P.addAccessEnforcementSelection(); P.addAccessMarkerElimination(); P.addMandatoryInlining(); P.addPredictableMemoryOptimizations(); P.addDiagnosticConstantPropagation(); P.addGuaranteedARCOpts(); P.addDiagnoseUnreachable(); P.addEmitDFDiagnostics(); // Canonical swift requires all non cond_br critical edges to be split. P.addSplitNonCondBrCriticalEdges(); }
SILPassPipelinePlan SILPassPipelinePlan::getSILOptPreparePassPipeline(const SILOptions &Options) { SILPassPipelinePlan P; if (Options.DebugSerialization) { addPerfDebugSerializationPipeline(P); return P; } P.startPipeline("SILOpt Prepare Passes"); P.addAccessMarkerElimination(); return P; }