When processing "release", "retain", and "autorelease" messages return the

lval passed as an argument.

Fix: Inverted diagnostic messages.
llvm-svn: 50513
This commit is contained in:
Ted Kremenek 2008-05-01 04:02:04 +00:00
parent 4828aa3152
commit 9f696852c4
2 changed files with 11 additions and 5 deletions

View File

@ -396,11 +396,17 @@ protected:
return N == EntryNode ? CleanedState : N->getState();
}
public:
// FIXME: Maybe make these accesible only within the StmtBuilder?
ValueState* SetRVal(ValueState* St, Expr* Ex, RVal V);
ValueState* SetRVal(ValueState* St, const Expr* Ex, RVal V) {
return SetRVal(St, const_cast<Expr*>(Ex), V);
}
protected:
ValueState* SetBlkExprRVal(ValueState* St, Expr* Ex, RVal V) {
return StateMgr.SetRVal(St, Ex, V, true, false);

View File

@ -1050,7 +1050,7 @@ bool CFRefCount::EvalObjCMessageExprAux(ExplodedNodeSet<ValueState>& Dst,
// Create a new state with the updated bindings.
ValueState StVals = *St;
SetRefBindings(StVals, B);
St = StateMgr.getPersistentState(StVals);
St = Eng.SetRVal(StateMgr.getPersistentState(StVals), ME, V);
// Create an error node if it exists.
if (hasErr)
@ -1509,13 +1509,13 @@ std::pair<const char**,const char**> CFRefReport::getExtraDescriptiveText() {
switch (TF.getLangOptions().getGCMode()) {
default:
assert(false);
case LangOptions::GCOnly:
assert (TF.isGCEnabled());
return std::make_pair(&Msgs[0], &Msgs[0]+1);
case LangOptions::NonGC:
assert (!TF.isGCEnabled());
return std::make_pair(&Msgs[0], &Msgs[0]+1);
case LangOptions::GCOnly:
assert (TF.isGCEnabled());
return std::make_pair(&Msgs[1], &Msgs[1]+1);
case LangOptions::HybridGC: