Revert "Revert "Optimizer: improve the load-copy-to-borrow optimization and implement it in swift""

This reverts commit 0666c446ec.
This commit is contained in:
Erik Eckstein
2024-10-21 20:46:50 +02:00
parent 44a9919308
commit b8026d74e6
13 changed files with 740 additions and 627 deletions

View File

@@ -517,6 +517,7 @@ void addFunctionPasses(SILPassPipelinePlan &P,
P.addCopyPropagation();
}
P.addSemanticARCOpts();
P.addLoadCopyToBorrowOptimization();
if (!P.getOptions().EnableOSSAModules) {
if (P.getOptions().StopOptimizationBeforeLoweringOwnership)
@@ -546,6 +547,7 @@ void addFunctionPasses(SILPassPipelinePlan &P,
P.addCopyPropagation();
}
P.addSemanticARCOpts();
P.addLoadCopyToBorrowOptimization();
}
// Promote stack allocations to values and eliminate redundant
@@ -574,6 +576,7 @@ void addFunctionPasses(SILPassPipelinePlan &P,
}
// Optimize copies created during RLE.
P.addSemanticARCOpts();
P.addLoadCopyToBorrowOptimization();
P.addCOWOpts();
P.addPerformanceConstantPropagation();
@@ -611,6 +614,7 @@ void addFunctionPasses(SILPassPipelinePlan &P,
P.addCopyPropagation();
}
P.addSemanticARCOpts();
P.addLoadCopyToBorrowOptimization();
}
}
@@ -648,6 +652,7 @@ static void addPerfEarlyModulePassPipeline(SILPassPipelinePlan &P) {
P.addCopyPropagation();
}
P.addSemanticARCOpts();
P.addLoadCopyToBorrowOptimization();
// Devirtualizes differentiability witnesses into functions that reference them.
// This unblocks many other passes' optimizations (e.g. inlining) and this is
@@ -994,6 +999,7 @@ SILPassPipelinePlan::getPerformancePassPipeline(const SILOptions &Options) {
P.addCopyPropagation();
}
P.addSemanticARCOpts();
P.addLoadCopyToBorrowOptimization();
}
P.addCrossModuleOptimization();