@@ -240,8 +240,8 @@ enum class RewriteResult {
240240 NONE,
241241};
242242
243- template <typename T >
244- RewriteResult rewrite (T & rewriter,
243+ template <typename TDerived >
244+ RewriteResult rewrite (OneTimeRewriter<TDerived> & rewriter,
245245 std::shared_ptr<SyntaxTree>& tree,
246246 std::string stageName,
247247 std::string passIdx,
@@ -262,8 +262,8 @@ RewriteResult rewrite(T& rewriter,
262262 }
263263}
264264
265- template <typename T >
266- size_t rewriteBisectFailed (T & rewriter,
265+ template <typename TDerived >
266+ size_t rewriteBisectFailed (OneTimeRewriter<TDerived> & rewriter,
267267 std::shared_ptr<SyntaxTree>& tree,
268268 std::string stageName,
269269 std::string passIdx,
@@ -287,8 +287,8 @@ size_t rewriteBisectFailed(T& rewriter,
287287 }
288288}
289289
290- template <typename T >
291- size_t rewriteBisect (T & rewriter,
290+ template <typename TDerived >
291+ size_t rewriteBisect (OneTimeRewriter<TDerived> & rewriter,
292292 std::shared_ptr<SyntaxTree>& tree,
293293 std::string stageName,
294294 std::string passIdx,
@@ -320,13 +320,13 @@ size_t rewriteBisect(T& rewriter,
320320 }
321321}
322322
323- template <typename T >
323+ template <typename TDerived >
324324bool rewriteLoop (std::shared_ptr<SyntaxTree>& tree,
325325 std::string stageName,
326326 std::string passIdx,
327327 SvBugpoint* svBugpoint) {
328328 using enum RewriteResult;
329- T rewriter;
329+ OneTimeRewriter<TDerived> rewriter;
330330 bool committed = false ;
331331 size_t rewriteLimit = svBugpoint->n_at_once ;
332332 while (!rewriter.traversalDone ) {
0 commit comments