RequirementMachine: Generating conformances prefers to delete non-explicit rules

This is a heuristic to ensure that conformance requirements remain in
their original protocol if possible, when the protocol is part of a
connected component consisting of multiple protocols.
This commit is contained in:
Slava Pestov
2021-11-05 16:12:11 -04:00
parent dcefd70d11
commit 2c4cfdcb1f
4 changed files with 194 additions and 9 deletions

View File

@@ -200,6 +200,11 @@ RequirementMachine::computeMinimalRequirements() {
assert(Protos.size() > 0);
System.minimizeRewriteSystem();
if (Dump) {
llvm::dbgs() << "Minimized rewrite system:\n";
dump(llvm::dbgs());
}
auto rules = System.getMinimizedRules(Protos);
// Note that we build 'result' by iterating over 'Protos' rather than