Consumed analysis: non-const methods no longer transfer an object into an

unknown state.  Patch by chris.wailes@gmail.com.

llvm-svn: 189612
This commit is contained in:
DeLesley Hutchins
2013-08-29 21:17:25 +00:00
parent c4dff6feea
commit 7fa60edb47
3 changed files with 9 additions and 22 deletions

View File

@@ -530,8 +530,6 @@ void ConsumedStmtVisitor::VisitCXXMemberCallExpr(
handleTestingFunctionCall(Call, PInfo.getVar());
else if (MethodDecl->hasAttr<ConsumesAttr>())
StateMap->setState(PInfo.getVar(), consumed::CS_Consumed);
else if (!MethodDecl->isConst())
StateMap->setState(PInfo.getVar(), consumed::CS_Unknown);
}
}
}
@@ -626,18 +624,10 @@ void ConsumedStmtVisitor::VisitCXXOperatorCallExpr(
checkCallability(PInfo, FunDecl, Call);
if (PInfo.isVar()) {
if (isTestingFunction(FunDecl)) {
if (isTestingFunction(FunDecl))
handleTestingFunctionCall(Call, PInfo.getVar());
} else if (FunDecl->hasAttr<ConsumesAttr>()) {
else if (FunDecl->hasAttr<ConsumesAttr>())
StateMap->setState(PInfo.getVar(), consumed::CS_Consumed);
} else if (const CXXMethodDecl *MethodDecl =
dyn_cast_or_null<CXXMethodDecl>(FunDecl)) {
if (!MethodDecl->isConst())
StateMap->setState(PInfo.getVar(), consumed::CS_Unknown);
}
}
}
}