minor isConst()-related fixes to printing; also add some debugging stuff to see how...
authorMorgan Deters <mdeters@gmail.com>
Thu, 9 Aug 2012 13:48:37 +0000 (13:48 +0000)
committerMorgan Deters <mdeters@gmail.com>
Thu, 9 Aug 2012 13:48:37 +0000 (13:48 +0000)
src/expr/node.h
src/printer/dagification_visitor.cpp
src/printer/smt2/smt2_printer.cpp

index b5186f2ed1c1288ccf02a256b9c096a9529b1c33..0ce0426544efb7cf20362cfe22d160bfe70ba16a 100644 (file)
@@ -1271,7 +1271,7 @@ template <bool ref_count>
 inline bool
 NodeTemplate<ref_count>::isConst() const {
   assertTNodeNotExpired();
-  Debug("isConst") << "Node::isConst() for " << getKind() << " with " << getNumChildren() << " children" << std::endl;
+  Debug("isConst") << "Node::isConst() for: " << *this << std::endl;
   if(isNull()) {
     return false;
   }
@@ -1285,11 +1285,11 @@ NodeTemplate<ref_count>::isConst() const {
   default:
     if(getAttribute(IsConstComputedAttr())) {
       bool bval = getAttribute(IsConstAttr());
-      Debug("isConst") << "Node::isConst() returning cached value " << bval << std::endl;
+      Debug("isConst") << "Node::isConst() returning cached value " << (bval ? "true" : "false") << " for: " << *this << std::endl;
       return bval;
     } else {
       bool bval = expr::TypeChecker::computeIsConst(NodeManager::currentNM(), *this);
-      Debug("isConst") << "Node::isConst() computed value " << bval << std::endl;
+      Debug("isConst") << "Node::isConst() computed value " << (bval ? "true" : "false") << " for: " << *this << std::endl;
       const_cast< NodeTemplate<ref_count>* >(this)->setAttribute(IsConstAttr(), bval);
       const_cast< NodeTemplate<ref_count>* >(this)->setAttribute(IsConstComputedAttr(), true);
       return bval;
index 580bec63c4ec796ed5dd4fbde5c214b9e3548d6b..f22b3515259d297915d6bef2f15a7e7528f61317 100644 (file)
@@ -54,11 +54,11 @@ bool DagificationVisitor::alreadyVisited(TNode current, TNode parent) {
   // for all subexpressions, so it isn't useful to traverse and
   // increment again (they'll be dagified anyway).
   return current.isVar() ||
-         current.isConst() ||
+         current.getMetaKind() == kind::metakind::CONSTANT ||
          ( ( current.getKind() == kind::NOT ||
              current.getKind() == kind::UMINUS ) &&
            ( current[0].isVar() ||
-             current[0].isConst() ) ) ||
+             current[0].getMetaKind() == kind::metakind::CONSTANT ) ) ||
          current.getKind() == kind::SORT_TYPE ||
          d_nodeCount[current] > d_threshold;
 }
index dcb37d3d9b75e57cc66e4e1a29e26057143a4e6c..ef8c8fcbc62bc28d8c2f661ba5ab99ec44a2bbf3 100644 (file)
@@ -102,7 +102,7 @@ void Smt2Printer::toStream(std::ostream& out, TNode n,
   }
 
   // constant
-  if(n.isConst()) {
+  if(n.getMetaKind() == kind::metakind::CONSTANT) {
     switch(n.getKind()) {
     case kind::TYPE_CONSTANT:
       switch(n.getConst<TypeConstant>()) {