mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
[sil-opt] Only notify the pass manager of newly added functions in SILOptFunctionBuilder.
To do so this commit does a few different things: 1. I changed SILOptFunctionBuilder to notify the pass manager's logging functionality when new functions are added to the module and to notify analyses as well. NOTE: This on purpose does not put the new function on the pass manager worklist since we do not want to by mistake introduce a large amount of re-optimizations. Such a thing should be explicit. 2. I eliminated SILModuleTransform::notifyAddFunction. This just performed the operations from 1. Now that SILOptFunctionBuilder performs this operation for us, it is not needed. 3. I changed SILFunctionTransform::notifyAddFunction to just add the function to the passmanager worklist. It does not need to notify the pass manager's logging or analyses that a new function was added to the module since SILOptFunctionBuilder now performs that operation. Given its reduced functionality, I changed the name to addFunctionToPassManagerWorklist(...). The name is a little long/verbose, but this is a feature since one should think before getting the pass manager to rerun transforms on a function. Also, giving it a longer name calls out the operation in the code visually, giving this operation more prominance when reading code. NOTE: I did the rename using Xcode's refactoring functionality! rdar://42301529
This commit is contained in:
@@ -766,7 +766,7 @@ specializePartialApply(SILOptFunctionBuilder &FuncBuilder,
|
||||
ClonedName);
|
||||
Cloner.populateCloned();
|
||||
ClonedFn = Cloner.getCloned();
|
||||
pass.T->notifyAddFunction(ClonedFn, F);
|
||||
pass.T->addFunctionToPassManagerWorklist(ClonedFn, F);
|
||||
}
|
||||
|
||||
// Now create the new partial_apply using the cloned function.
|
||||
@@ -843,7 +843,7 @@ static void rewritePartialApplies(AllocBoxToStackState &pass) {
|
||||
// Clone the referenced function of each partial_apply, removing the
|
||||
// operands that we will not need, and remove the existing
|
||||
// partial_apply.
|
||||
SILOptFunctionBuilder FuncBuilder(*pass.T->getPassManager());
|
||||
SILOptFunctionBuilder FuncBuilder(*pass.T);
|
||||
for (auto &It : IndexMap) {
|
||||
auto *PartialApply = It.first;
|
||||
auto &Indices = It.second;
|
||||
|
||||
Reference in New Issue
Block a user