summaryrefslogtreecommitdiffstats
path: root/clang/Analysis/RValues.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2008-02-06 04:31:33 +0000
committerTed Kremenek <kremenek@apple.com>2008-02-06 04:31:33 +0000
commitd17f05435a27419645b29b22db403fb883e5179f (patch)
tree80bdfe6834862fdd008dc112597ef747edc40e7a /clang/Analysis/RValues.cpp
parentb2652827e6bf82a0c7f48f8f3c836ff385b3f415 (diff)
downloadbcm5719-llvm-d17f05435a27419645b29b22db403fb883e5179f.tar.gz
bcm5719-llvm-d17f05435a27419645b29b22db403fb883e5179f.zip
Fixed signedness bug in cast transfer function when casting integers to pointers.
Removed lval::SymIntConstraintVal; wrappers for symbolic constraints are not lvalues (only integers that evaluate to !0 or 0). llvm-svn: 46796
Diffstat (limited to 'clang/Analysis/RValues.cpp')
-rw-r--r--clang/Analysis/RValues.cpp14
1 files changed, 2 insertions, 12 deletions
diff --git a/clang/Analysis/RValues.cpp b/clang/Analysis/RValues.cpp
index 33d9d656a70..fba59b42ac4 100644
--- a/clang/Analysis/RValues.cpp
+++ b/clang/Analysis/RValues.cpp
@@ -138,7 +138,7 @@ RValue NonLValue::Cast(ValueManager& ValMgr, Expr* CastExpr) const {
APSInt V = cast<nonlval::ConcreteInt>(this)->getValue();
QualType T = CastExpr->getType();
- V.setIsUnsigned(T->isUnsignedIntegerType());
+ V.setIsUnsigned(T->isUnsignedIntegerType() || T->isPointerType());
V.extOrTrunc(ValMgr.getContext().getTypeSize(T, CastExpr->getLocStart()));
if (CastExpr->getType()->isPointerType())
@@ -425,17 +425,7 @@ void LValue::print(std::ostream& Out) const {
case lval::SymbolValKind:
Out << '$' << cast<lval::SymbolVal>(this)->getSymbol();
break;
-
- case lval::SymIntConstraintValKind: {
- const lval::SymIntConstraintVal& C =
- *cast<lval::SymIntConstraintVal>(this);
-
- Out << '$' << C.getConstraint().getSymbol() << ' ';
- printOpcode(Out, C.getConstraint().getOpcode());
- Out << ' ' << C.getConstraint().getInt().toString();
- break;
- }
-
+
case lval::DeclValKind:
Out << '&'
<< cast<lval::DeclVal>(this)->getDecl()->getIdentifier()->getName();
OpenPOWER on IntegriCloud