@@ -205,24 +205,23 @@ bool RewriteSystem::simplify(MutableTerm &term, RewritePath *path) const {
205205 auto ruleID = Trie.find (from, end);
206206 if (ruleID) {
207207 const auto &rule = getRule (*ruleID);
208- if (!rule.isSimplified ()) {
209- auto to = from + rule.getLHS ().size ();
210- assert (std::equal (from, to, rule.getLHS ().begin ()));
211208
212- unsigned startOffset = ( unsigned )( from - term. begin () );
213- unsigned endOffset = term. size () - rule.getLHS ().size () - startOffset ;
209+ auto to = from + rule. getLHS (). size ( );
210+ assert ( std::equal (from, to, rule.getLHS ().begin ())) ;
214211
215- term.rewriteSubTerm (from, to, rule.getRHS ());
212+ unsigned startOffset = (unsigned )(from - term.begin ());
213+ unsigned endOffset = term.size () - rule.getLHS ().size () - startOffset;
216214
217- if (path || debug) {
218- subpath.add (RewriteStep::forRewriteRule (startOffset, endOffset, *ruleID,
219- /* inverse=*/ false ));
220- }
215+ term.rewriteSubTerm (from, to, rule.getRHS ());
221216
222- changed = true ;
223- tryAgain = true ;
224- break ;
217+ if (path || debug) {
218+ subpath. add ( RewriteStep::forRewriteRule (startOffset, endOffset, *ruleID,
219+ /* inverse= */ false )) ;
225220 }
221+
222+ changed = true ;
223+ tryAgain = true ;
224+ break ;
226225 }
227226
228227 ++from;
@@ -433,6 +432,7 @@ bool RewriteSystem::addRule(MutableTerm lhs, MutableTerm rhs,
433432 MutableTerm term = lhs;
434433 simplify (lhs);
435434
435+ dump (llvm::errs ());
436436 abort ();
437437 }
438438
0 commit comments