Optimizer: extract the NamedReturnValueOptimization from CopyForwarding to a separate function pass

This allows to run the NamedReturnValueOptimization only late in the pipeline.
The optimization shouldn't be done before serialization, because it might prevent predictable memory optimizations in the caller after inlining.
This commit is contained in:
Erik Eckstein
2023-04-06 11:14:12 +02:00
parent 08e75f2c50
commit 92a17f8a01
8 changed files with 285 additions and 177 deletions

View File

@@ -758,6 +758,10 @@ static void addLowLevelPassPipeline(SILPassPipelinePlan &P) {
addFunctionPasses(P, OptimizationLevelKind::LowLevel);
// The NamedReturnValueOptimization shouldn't be done before serialization.
// For details see the comment for `namedReturnValueOptimization`.
P.addNamedReturnValueOptimization();
P.addDeadObjectElimination();
P.addObjectOutliner();
P.addDeadStoreElimination();