Skip to content

Commit ffd675d

Browse files
committed
RequirementMachine: Only check conformance requirements with -requirement-machine-protocol-signatures=verify for now
1 parent 96bdef9 commit ffd675d

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

lib/AST/GenericSignatureBuilder.cpp

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8876,9 +8876,23 @@ RequirementSignatureRequest::evaluate(Evaluator &evaluator,
88768876
auto rqmResult = buildViaRQM();
88778877
auto gsbResult = buildViaGSB();
88788878

8879-
if (rqmResult.size() != gsbResult.size() ||
8880-
!std::equal(rqmResult.begin(), rqmResult.end(),
8881-
gsbResult.begin())) {
8879+
// For now, only compare conformance requirements, since those are the
8880+
// important ones from the ABI perspective.
8881+
SmallVector<Requirement, 2> rqmConformances;
8882+
for (auto req : rqmResult) {
8883+
if (req.getKind() == RequirementKind::Conformance)
8884+
rqmConformances.push_back(req);
8885+
}
8886+
SmallVector<Requirement, 2> gsbConformances;
8887+
for (auto req : gsbResult) {
8888+
if (req.getKind() == RequirementKind::Conformance)
8889+
gsbConformances.push_back(req);
8890+
}
8891+
8892+
if (rqmConformances.size() != gsbConformances.size() ||
8893+
!std::equal(rqmConformances.begin(),
8894+
rqmConformances.end(),
8895+
gsbConformances.begin())) {
88828896
llvm::errs() << "RequirementMachine protocol signature minimization is broken:\n";
88838897
llvm::errs() << "Protocol: " << proto->getName() << "\n";
88848898

0 commit comments

Comments
 (0)