[analyzer] Fix a c++11 crash: xvalues can be locations (VisitMemberExpr)
llvm-svn: 157082
This commit is contained in:
parent
b343660914
commit
457ace7611
@ -1537,7 +1537,7 @@ void ExprEngine::VisitMemberExpr(const MemberExpr *M, ExplodedNode *Pred,
|
||||
|
||||
// For all other cases, compute an lvalue.
|
||||
SVal L = state->getLValue(field, baseExprVal);
|
||||
if (M->isLValue())
|
||||
if (M->isGLValue())
|
||||
Bldr.generateNode(M, Pred, state->BindExpr(M, LCtx, L), false, 0,
|
||||
ProgramPoint::PostLValueKind);
|
||||
else {
|
||||
|
||||
12
clang/test/Analysis/cxx11-crashes.cpp
Normal file
12
clang/test/Analysis/cxx11-crashes.cpp
Normal file
@ -0,0 +1,12 @@
|
||||
// RUN: %clang_cc1 -analyze -analyzer-checker=core -std=c++11 -verify %s
|
||||
|
||||
// radar://11485149, PR12871
|
||||
class PlotPoint {
|
||||
bool valid;
|
||||
};
|
||||
|
||||
PlotPoint limitedFit () {
|
||||
PlotPoint fit0;
|
||||
fit0 = limitedFit ();
|
||||
return fit0;
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user