28 Commits

Author SHA1 Message Date
Ted Kremenek
dc891429e4 Rename all 'EvalXXX' methods in libChecker to
'evalXXX'.

llvm-svn: 120609
2010-12-01 21:57:22 +00:00
Zhongxing Xu
032071688b Rename CXXObjectRegion to CXXTempObjectRegion.
llvm-svn: 120176
2010-11-26 08:52:48 +00:00
Zhongxing Xu
8be65a792f 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
2010-11-24 13:48:50 +00:00
Zhongxing Xu
a1a9ba11b7 Let StackFrameContext represent if the call expr is evaluated as lvalue.
This is required for supporting const reference to temporary objects.

llvm-svn: 120093
2010-11-24 13:08:51 +00:00
Zhongxing Xu
cb29802198 Use StackFrameContext directly in CallEnter program point. Then we don't need
to remake the stackframe everytime in GRExprEngine::ProcessCallEnter().

llvm-svn: 120087
2010-11-24 08:53:20 +00:00
Zhongxing Xu
2c966716ff Handle CFGAutomaticObjDtor.
llvm-svn: 119897
2010-11-20 06:53:12 +00:00
Marcin Swiderski
e5a1e8ae12 Added method for handling CXXOperatorCallExpr differently from CallExpr if CXXOperatorCallExpr represents method call.
Also fixed returning ExpolodedNodeSet from VisitCXXMethodCallExpr.

llvm-svn: 119684
2010-11-18 06:29:23 +00:00
Marcin Swiderski
af56739355 In EvalArguments allow for evaluation of first argument always as a lvalue. Will be used for CXXOperatorCallExpr that represents method call.
llvm-svn: 119567
2010-11-17 21:27:36 +00:00
Zhongxing Xu
35d023164c do not do post checks. Because at this point we just enter the call.
llvm-svn: 119480
2010-11-17 07:31:08 +00:00
Zhongxing Xu
366340298e Remove comments. We are already doing actual method call by inlining it.
llvm-svn: 119477
2010-11-17 07:21:49 +00:00
John McCall
6dd263e31b Reverting r119341: doesn't compile, no obvious fix.
llvm-svn: 119342
2010-11-16 09:18:38 +00:00
Marcin Swiderski
76e66c1d60 Refactored GRExprEngine::getCXXThisRegion to use CXXMethodDecl::getThisType instead of calculating it by hand.
llvm-svn: 119341
2010-11-16 08:50:38 +00:00
Zhongxing Xu
1ade3267d7 Handle member initializer in C++ ctor.
- Add a new Kind of ProgramPoint: PostInitializer.
 - Still use GRStmtNodeBuilder. But special handling PostInitializer in 
   GRStmtNodeBuilder::GenerateAutoTransition().
 - Someday we should clean up the interface of GRStmtNodeBuilder.

llvm-svn: 119335
2010-11-16 07:52:17 +00:00
Zhongxing Xu
627a1868d2 Now initializer of C++ record type is visited as block-level expr.
Let the destination of AggExprVisitor be an explicit MemRegion. 
Reenable the test case.

llvm-svn: 117908
2010-11-01 09:09:44 +00:00
Ted Kremenek
b0e7d77729 Include changes to VisitCXXMemberCallExpr (call visitor functions).
llvm-svn: 115120
2010-09-30 01:06:29 +00:00
Ted Kremenek
fd5856adcb Refactor GRExprEngine::VisitCall() to use EvalArguments(), just like VisitCXXMemberCallExpr(). Ideally we should unify these code paths as much as possible, since they only differ by a few details.
llvm-svn: 114628
2010-09-23 05:14:51 +00:00
Zhongxing Xu
5b297da1de Improve comments.
llvm-svn: 111897
2010-08-24 04:26:55 +00:00
Jordy Rose
ddec092641 Makes GRState::makeWithStore private, to encourage clients to make store changes through GRState instead of directly accessing the StoreManager. Also adds cover methods for InvalidateRegion(s) and EnterStackFrame to GRState.
This is in preparation for proposed region change notifications. No functionality change.

llvm-svn: 110137
2010-08-03 20:44:35 +00:00
Zhongxing Xu
edb77fe8b4 Constify all references to Stmt* and CFGBlock* in libChecker.
llvm-svn: 108811
2010-07-20 06:22:24 +00:00
Zhongxing Xu
84f65e0692 Reapply r108617.
llvm-svn: 108668
2010-07-19 01:31:21 +00:00
Benjamin Kramer
e2e031ed6f Revert r108617, it broke the build.
llvm-svn: 108621
2010-07-17 13:51:58 +00:00
Zhongxing Xu
4ca4a999b1 Prepare the analyzer for the callee in another translation unit:
Let AnalysisContext contain a TranslationUnit.
  Let CallEnter refer to an AnalysisContext instead of a FunctionDecl.

llvm-svn: 108617
2010-07-17 11:12:42 +00:00
Zhongxing Xu
9174b2c2f9 Make -analyzer-inline-call not a separate analysis. Instead it's a boolean
flag now, and can be used with other analyses. Only turned it on for C++ 
methods for now.

llvm-svn: 103160
2010-05-06 02:59:29 +00:00
Zhongxing Xu
3affbe6b50 Use the right predecessor.
llvm-svn: 101981
2010-04-21 02:20:10 +00:00
Zhongxing Xu
d80755dac2 Add initial support for C++ delete expr.
llvm-svn: 101980
2010-04-21 02:17:31 +00:00
Zhongxing Xu
23030c9004 Replace code with a method call. No functionality change.
llvm-svn: 101876
2010-04-20 05:40:40 +00:00
Zhongxing Xu
40eb21a827 Improve handling of CXXNewExpr.
llvm-svn: 101862
2010-04-20 03:37:34 +00:00
Zhongxing Xu
6a479bf281 Move all C++ expression evaluation logic into its own file.
llvm-svn: 101772
2010-04-19 12:51:02 +00:00