forked from OSchip/llvm-project
When getting CXXThisRegion from CXXMethodDecl, use the qualifiers. This is
to be consistent with the type of 'this' expr in the method. 此行及以下内容将会被忽略-- M test/Analysis/method-call.cpp M include/clang/Checker/PathSensitive/GRExprEngine.h M lib/Checker/GRCXXExprEngine.cpp llvm-svn: 120094
This commit is contained in:
parent
a1a9ba11b7
commit
8be65a792f
|
@ -462,6 +462,9 @@ public:
|
|||
const CXXThisRegion *getCXXThisRegion(const CXXRecordDecl *RD,
|
||||
const StackFrameContext *SFC);
|
||||
|
||||
const CXXThisRegion *getCXXThisRegion(const CXXMethodDecl *decl,
|
||||
const StackFrameContext *frameCtx);
|
||||
|
||||
/// Evaluate arguments with a work list algorithm.
|
||||
void EvalArguments(ConstExprIterator AI, ConstExprIterator AE,
|
||||
const FunctionProtoType *FnType,
|
||||
|
|
|
@ -77,6 +77,12 @@ const CXXThisRegion *GRExprEngine::getCXXThisRegion(const CXXRecordDecl *D,
|
|||
return ValMgr.getRegionManager().getCXXThisRegion(PT, SFC);
|
||||
}
|
||||
|
||||
const CXXThisRegion *GRExprEngine::getCXXThisRegion(const CXXMethodDecl *decl,
|
||||
const StackFrameContext *frameCtx) {
|
||||
return ValMgr.getRegionManager().
|
||||
getCXXThisRegion(decl->getThisType(getContext()), frameCtx);
|
||||
}
|
||||
|
||||
void GRExprEngine::CreateCXXTemporaryObject(const Expr *Ex, ExplodedNode *Pred,
|
||||
ExplodedNodeSet &Dst) {
|
||||
ExplodedNodeSet Tmp;
|
||||
|
@ -242,7 +248,7 @@ void GRExprEngine::EvalMethodCall(const CallExpr *MCE, const CXXMethodDecl *MD,
|
|||
MCE, false,
|
||||
Builder->getBlock(),
|
||||
Builder->getIndex());
|
||||
const CXXThisRegion *ThisR = getCXXThisRegion(MD->getParent(), SFC);
|
||||
const CXXThisRegion *ThisR = getCXXThisRegion(MD, SFC);
|
||||
CallEnter Loc(MCE, SFC, Pred->getLocationContext());
|
||||
for (ExplodedNodeSet::iterator I = PreVisitChecks.begin(),
|
||||
E = PreVisitChecks.end(); I != E; ++I) {
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
struct A {
|
||||
int x;
|
||||
A(int a) { x = a; }
|
||||
int getx() { return x; }
|
||||
int getx() const { return x; }
|
||||
};
|
||||
|
||||
void f1() {
|
||||
|
|
Loading…
Reference in New Issue