]> granicus.if.org Git - clang/commitdiff
Added "assumption" logic for lval::FuncVal and lval::GotoLabel, and simplified
authorTed Kremenek <kremenek@apple.com>
Fri, 22 Feb 2008 00:54:56 +0000 (00:54 +0000)
committerTed Kremenek <kremenek@apple.com>
Fri, 22 Feb 2008 00:54:56 +0000 (00:54 +0000)
assumption logic for lval::DeclVal.

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

Analysis/GRExprEngine.cpp
Analysis/GRSimpleVals.cpp
include/clang/Analysis/PathSensitive/RValues.h

index 6635b0b6a6069ab64f4940d7dad6ebf1fa3ae093..2931d2aa6d84f58be4baf86194fbf0a05097014b 100644 (file)
@@ -1155,6 +1155,8 @@ GRExprEngine::StateTy GRExprEngine::Assume(StateTy St, LVal Cond,
       
       
     case lval::DeclValKind:
+    case lval::FuncValKind:
+    case lval::GotoLabelKind:
       isFeasible = Assumption;
       return St;
 
index 02df7a5b64a61aa5d82923d10bdbeea96826e818..775d099ab79c3c919a74ce02da3e8928acec9db8 100644 (file)
@@ -233,13 +233,9 @@ RVal GRSimpleVals::EvalEQ(ValueManager& ValMgr, LVal L, LVal R) {
     }
       
     case lval::DeclValKind:
-    
-      if (isa<lval::DeclVal>(R)) {        
-        bool b = cast<lval::DeclVal>(L) == cast<lval::DeclVal>(R);
-        return NonLVal::MakeIntTruthVal(ValMgr, b);
-      }
-    
-      break;
+    case lval::FuncValKind:
+    case lval::GotoLabelKind:
+      return NonLVal::MakeIntTruthVal(ValMgr, L == R);
   }
   
   return NonLVal::MakeIntTruthVal(ValMgr, false);
@@ -288,12 +284,9 @@ RVal GRSimpleVals::EvalNE(ValueManager& ValMgr, LVal L, LVal R) {
     }
       
     case lval::DeclValKind:
-      if (isa<lval::DeclVal>(R)) {        
-        bool b = cast<lval::DeclVal>(L) == cast<lval::DeclVal>(R);
-        return NonLVal::MakeIntTruthVal(ValMgr, b);
-      }
-    
-    break;
+    case lval::FuncValKind:
+    case lval::GotoLabelKind:
+      return NonLVal::MakeIntTruthVal(ValMgr, L != R);
   }
   
   return NonLVal::MakeIntTruthVal(ValMgr, true);
index df23431e4b5e5c6a1b06da241cbb2564d9d2576a..f6403949c03181b5dcb3e21ea23885399cf0f3f7 100644 (file)
@@ -60,6 +60,11 @@ public:
     return getRawKind() == R.getRawKind() && Data == R.Data;
   }
   
+  
+  inline bool operator!=(const RVal& R) const {
+    return !(*this == R);
+  }
+  
   static RVal GetSymbolValue(SymbolManager& SymMgr, ParmVarDecl *D);
   
   inline bool isUnknown() const {