summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/theory/bv/theory_bv_rewriter.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/theory/bv/theory_bv_rewriter.cpp b/src/theory/bv/theory_bv_rewriter.cpp
index 8f9e6614c..0f7629c5f 100644
--- a/src/theory/bv/theory_bv_rewriter.cpp
+++ b/src/theory/bv/theory_bv_rewriter.cpp
@@ -173,12 +173,19 @@ RewriteResponse TheoryBVRewriter::RewriteITEBv(TNode node, bool prerewrite)
RewriteRule<BvIteConstCond>,
RewriteRule<BvIteEqualChildren>,
RewriteRule<BvIteConstChildren>,
- RewriteRule<BvIteEqualCond>,
- RewriteRule<BvIteMergeThenIf>,
+ RewriteRule<BvIteEqualCond>>::apply(node);
+ if (resultNode != node)
+ {
+ return RewriteResponse(REWRITE_AGAIN, resultNode);
+ }
+
+ resultNode =
+ LinearRewriteStrategy<RewriteRule<BvIteMergeThenIf>,
RewriteRule<BvIteMergeElseIf>,
RewriteRule<BvIteMergeThenElse>,
RewriteRule<BvIteMergeElseElse>>::apply(node);
- return RewriteResponse(REWRITE_DONE, resultNode);
+ return RewriteResponse(resultNode == node ? REWRITE_DONE : REWRITE_AGAIN_FULL,
+ resultNode);
}
RewriteResponse TheoryBVRewriter::RewriteNot(TNode node, bool prerewrite){
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback