SILOptimizer: Stop calling getAllConformances() on protocols

This commit is contained in:
Slava Pestov
2022-08-22 19:32:38 -04:00
parent e8dc19a70b
commit 701f782a2b

View File

@@ -37,10 +37,12 @@ public:
bool walkToDeclPre(Decl *D) override {
/// (1) Walk over all NominalTypeDecls to determine conformances.
if (auto *NTD = dyn_cast<NominalTypeDecl>(D)) {
auto Protocols = NTD->getAllProtocols();
for (auto &Protocol : Protocols) {
if (Protocol->getEffectiveAccess() <= AccessLevel::Internal) {
ProtocolConformanceCache[Protocol].push_back(NTD);
if (!isa<ProtocolDecl>(NTD)) {
auto Protocols = NTD->getAllProtocols();
for (auto &Protocol : Protocols) {
if (Protocol->getEffectiveAccess() <= AccessLevel::Internal) {
ProtocolConformanceCache[Protocol].push_back(NTD);
}
}
}
}