]> granicus.if.org Git - clang/commitdiff
Added some more opcode pretty-printing.
authorTed Kremenek <kremenek@apple.com>
Thu, 7 Feb 2008 15:20:13 +0000 (15:20 +0000)
committerTed Kremenek <kremenek@apple.com>
Thu, 7 Feb 2008 15:20:13 +0000 (15:20 +0000)
Minor cleanups with generating nodes for NULL-pointer dereferences.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46851 91177308-0d34-0410-b5e6-96231b3b80d8

Analysis/GRConstants.cpp
Analysis/RValues.cpp

index 84b0debb61fc089ef95594f3dc4a9a60e3daf66e..858ed9360a50f0e74b21dbb0613e370ec4634360 100644 (file)
@@ -260,8 +260,7 @@ public:
   StateTy AssumeSymInt(StateTy St, bool Assumption, const SymIntConstraint& C,
                        bool& isFeasible);
   
-  NodeTy* Nodify(NodeSet& Dst, Stmt* S, NodeTy* Pred, StateTy St,
-                 bool AlwaysMakeNode = false);
+  NodeTy* Nodify(NodeSet& Dst, Stmt* S, NodeTy* Pred, StateTy St);
   
   /// Nodify - This version of Nodify is used to batch process a set of states.
   ///  The states are not guaranteed to be unique.
@@ -582,11 +581,10 @@ GRConstants::StateTy GRConstants::RemoveDeadBindings(Stmt* Loc, StateTy M) {
 }
 
 GRConstants::NodeTy*
-GRConstants::Nodify(NodeSet& Dst, Stmt* S, NodeTy* Pred, StateTy St,
-                    bool AlwaysMakeNode) {
+GRConstants::Nodify(NodeSet& Dst, Stmt* S, NodeTy* Pred, StateTy St) {
  
   // If the state hasn't changed, don't generate a new node.
-  if (!AlwaysMakeNode && St == Pred->getState())
+  if (St == Pred->getState())
     return NULL;
   
   NodeTy* N = Builder->generateNode(S, St, Pred);
@@ -807,7 +805,10 @@ void GRConstants::VisitUnaryOperator(UnaryOperator* U,
         StateTy StNull = Assume(St, L1, false, isFeasibleNull);
         
         if (isFeasibleNull) {
-          NodeTy* NullNode = Nodify(Dst, U, N1, StNull, true);
+          // We don't use "Nodify" here because the node will be a sink
+          // and we have no intention of processing it later.
+          NodeTy* NullNode = Builder->generateNode(U, StNull, N1);
+
           if (NullNode) {
             NullNode->markAsSink();
             
index d0f60fbe63879bab27635ff3e325eca1f29e9999..387a30cf63f921048b8deda55540bb607ca6960e 100644 (file)
@@ -525,7 +525,9 @@ void RValue::print(std::ostream& Out) const {
 }
 
 static void printOpcode(std::ostream& Out, BinaryOperator::Opcode Op) {
-  switch (Op) {
+  switch (Op) {      
+    case BinaryOperator::Add: Out << "+" ; break;
+    case BinaryOperator::Sub: Out << "-" ; break;
     case BinaryOperator::EQ: Out << "=="; break;
     case BinaryOperator::NE: Out << "!="; break;
     default: assert(false && "Not yet implemented.");