diff options
| author | Ted Kremenek <kremenek@apple.com> | 2008-02-06 04:31:33 +0000 |
|---|---|---|
| committer | Ted Kremenek <kremenek@apple.com> | 2008-02-06 04:31:33 +0000 |
| commit | d17f05435a27419645b29b22db403fb883e5179f (patch) | |
| tree | 80bdfe6834862fdd008dc112597ef747edc40e7a /clang/Analysis/RValues.cpp | |
| parent | b2652827e6bf82a0c7f48f8f3c836ff385b3f415 (diff) | |
| download | bcm5719-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.cpp | 14 |
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(); |

