Implemented casts for ConcreteInt and ConcreteIntLValue.
Implemented '==' and '!=' for ConcreteIntLValue.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46630 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Analysis/RValues.h b/Analysis/RValues.h
index 989c60b..c5ad8a5 100644
--- a/Analysis/RValues.h
+++ b/Analysis/RValues.h
@@ -187,6 +187,8 @@
public:
void print(std::ostream& Out) const;
+ RValue Cast(ValueManager& ValMgr, Expr* CastExpr) const;
+
// Arithmetic operators.
NonLValue Add(ValueManager& ValMgr, const NonLValue& RHS) const;
NonLValue Sub(ValueManager& ValMgr, const NonLValue& RHS) const;
@@ -199,6 +201,7 @@
NonLValue EQ(ValueManager& ValMgr, const NonLValue& RHS) const;
NonLValue NE(ValueManager& ValMgr, const NonLValue& RHS) const;
+
// Utility methods to create NonLValues.
static NonLValue GetValue(ValueManager& ValMgr, uint64_t X, QualType T,
SourceLocation Loc = SourceLocation());
@@ -223,6 +226,8 @@
public:
void print(std::ostream& Out) const;
+ RValue Cast(ValueManager& ValMgr, Expr* CastExpr) const;
+
// Equality operators.
NonLValue EQ(ValueManager& ValMgr, const LValue& RHS) const;
NonLValue NE(ValueManager& ValMgr, const LValue& RHS) const;
@@ -237,8 +242,7 @@
// Subclasses of NonLValue.
//==------------------------------------------------------------------------==//
-enum NonLValueKind { SymbolicNonLValueKind, ConcreteIntKind,
-NumNonLValueKind };
+enum NonLValueKind { SymbolicNonLValueKind, ConcreteIntKind, NumNonLValueKind };
class SymbolicNonLValue : public NonLValue {
public:
@@ -326,9 +330,9 @@
// Subclasses of LValue.
//==------------------------------------------------------------------------==//
-enum LValueKind { SymbolicLValueKind, LValueDeclKind,
-ConcreteIntLValueKind, NumLValueKind };
-
+enum LValueKind { SymbolicLValueKind, LValueDeclKind, ConcreteIntLValueKind,
+ NumLValueKind };
+
class SymbolicLValue : public LValue {
public:
SymbolicLValue(unsigned SymID)