Skip to content

Commit 9704168

Browse files
committed
RequirementMachine: Skip imported rules in various places when iterating over all rules
1 parent c08601b commit 9704168

File tree

4 files changed

+13
-9
lines changed

4 files changed

+13
-9
lines changed

lib/AST/RequirementMachine/HomotopyReduction.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -682,7 +682,8 @@ RewriteSystem::getMinimizedProtocolRules() const {
682682
assert(!Protos.empty());
683683

684684
llvm::DenseMap<const ProtocolDecl *, MinimizedProtocolRules> rules;
685-
for (unsigned ruleID : indices(Rules)) {
685+
for (unsigned ruleID = FirstLocalRule, e = Rules.size();
686+
ruleID < e; ++ruleID) {
686687
const auto &rule = getRule(ruleID);
687688

688689
if (rule.isPermanent() ||
@@ -713,7 +714,8 @@ RewriteSystem::getMinimizedGenericSignatureRules() const {
713714
assert(Protos.empty());
714715

715716
std::vector<unsigned> rules;
716-
for (unsigned ruleID : indices(Rules)) {
717+
for (unsigned ruleID = FirstLocalRule, e = Rules.size();
718+
ruleID < e; ++ruleID) {
717719
const auto &rule = getRule(ruleID);
718720

719721
if (rule.isPermanent() ||
@@ -768,7 +770,8 @@ void RewriteSystem::verifyMinimizedRules(
768770
const llvm::DenseSet<unsigned> &redundantConformances) const {
769771
unsigned redundantRuleCount = 0;
770772

771-
for (unsigned ruleID : indices(Rules)) {
773+
for (unsigned ruleID = FirstLocalRule, e = Rules.size();
774+
ruleID < e; ++ruleID) {
772775
const auto &rule = getRule(ruleID);
773776

774777
// Ignore the rewrite rule if it is not part of our minimization domain.

lib/AST/RequirementMachine/KnuthBendix.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ RewriteSystem::computeConfluentCompletion(unsigned maxRuleCount,
301301
ruleCount = Rules.size();
302302

303303
// For every rule, looking for other rules that overlap with this rule.
304-
for (unsigned i = 0, e = Rules.size(); i < e; ++i) {
304+
for (unsigned i = FirstLocalRule, e = Rules.size(); i < e; ++i) {
305305
const auto &lhs = getRule(i);
306306
if (lhs.isLHSSimplified() ||
307307
lhs.isRHSSimplified() ||

lib/AST/RequirementMachine/RewriteSystem.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,7 @@ bool RewriteSystem::addExplicitRule(MutableTerm lhs, MutableTerm rhs,
337337
void RewriteSystem::simplifyLeftHandSides() {
338338
assert(Complete);
339339

340-
for (unsigned ruleID = 0, e = Rules.size(); ruleID < e; ++ruleID) {
340+
for (unsigned ruleID = FirstLocalRule, e = Rules.size(); ruleID < e; ++ruleID) {
341341
auto &rule = getRule(ruleID);
342342
if (rule.isLHSSimplified())
343343
continue;
@@ -380,7 +380,7 @@ void RewriteSystem::simplifyLeftHandSides() {
380380
void RewriteSystem::simplifyRightHandSides() {
381381
assert(Complete);
382382

383-
for (unsigned ruleID = 0, e = Rules.size(); ruleID < e; ++ruleID) {
383+
for (unsigned ruleID = FirstLocalRule, e = Rules.size(); ruleID < e; ++ruleID) {
384384
auto &rule = getRule(ruleID);
385385
if (rule.isRHSSimplified())
386386
continue;
@@ -478,7 +478,7 @@ void RewriteSystem::verifyRewriteRules(ValidityPolicy policy) const {
478478
abort(); \
479479
}
480480

481-
for (const auto &rule : Rules) {
481+
for (const auto &rule : getLocalRules()) {
482482
const auto &lhs = rule.getLHS();
483483
const auto &rhs = rule.getRHS();
484484

@@ -585,7 +585,8 @@ void RewriteSystem::computeRedundantRequirementDiagnostics(
585585
// Collect non-explicit requirements that are not redundant.
586586
llvm::SmallDenseSet<unsigned, 2> impliedRequirements;
587587

588-
for (unsigned ruleID : indices(getRules())) {
588+
for (unsigned ruleID = FirstLocalRule, e = Rules.size();
589+
ruleID < e; ++ruleID) {
589590
auto &rule = getRules()[ruleID];
590591

591592
if (!rule.getRequirementID().hasValue() &&

lib/AST/RequirementMachine/SimplifySubstitutions.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@ RewriteSystem::simplifySubstitutions(Term baseTerm, Symbol symbol,
378378
/// is built, and a final simplification pass is performed with \p map set to
379379
/// the new property map.
380380
void RewriteSystem::simplifyLeftHandSideSubstitutions(const PropertyMap *map) {
381-
for (unsigned ruleID = 0, e = Rules.size(); ruleID < e; ++ruleID) {
381+
for (unsigned ruleID = FirstLocalRule, e = Rules.size(); ruleID < e; ++ruleID) {
382382
auto &rule = getRule(ruleID);
383383
if (rule.isSubstitutionSimplified())
384384
continue;

0 commit comments

Comments
 (0)