Marcin Swiderski
772324971d
- Fixed subexpressions evaluation order for binary operators to match order in code generated with the compiler,
...
- Fixed test cases for unreachable code warnings produced by Sema.
llvm-svn: 117220
2010-10-24 08:21:40 +00:00
Ted Kremenek
12a37de003
Previously, the printf warnings would say your arguments type was 'int' when it was really a 'char'
...
or a 'short'. This fixes that and allows the hints to suggest 'h' modifiers for small ints.
Patch by Justin Bogner!
llvm-svn: 116996
2010-10-21 04:00:58 +00:00
John McCall
1c9c3fd50a
Death to blocks, or at least the word "block" in one particular obnoxiously
...
ambiguous context.
llvm-svn: 116567
2010-10-15 04:57:14 +00:00
Zhongxing Xu
614e17dddf
* Simplify code
...
* Fix dump() to make it consistent with the test case.
llvm-svn: 115609
2010-10-05 08:38:06 +00:00
Marcin Swiderski
20b88739ed
Added support for base and member destructors in destructor.
...
llvm-svn: 115592
2010-10-05 05:37:00 +00:00
Marcin Swiderski
87b1bb6fd2
Added support for C++ initializers in CFG.
...
llvm-svn: 115493
2010-10-04 03:38:22 +00:00
Zhongxing Xu
b06a2cdd2b
Now the whether adding implicit dtors is controlled by cmd option.
...
llvm-svn: 115275
2010-10-01 03:31:06 +00:00
Zhongxing Xu
6d372f7c0f
The return value is never used.
...
llvm-svn: 115272
2010-10-01 03:22:39 +00:00
Zhongxing Xu
307701e1b4
Use default augument.
...
llvm-svn: 115271
2010-10-01 03:09:09 +00:00
Zhongxing Xu
81714f2196
Simplify interface for addLocalScopeForStmt().
...
llvm-svn: 115270
2010-10-01 03:00:16 +00:00
Zhongxing Xu
ea360a3b1a
The old logic would add non-struct and non C++ struct variables to the local
...
scope. Now we only add C++ struct with non-trivial destructor variables to the
local scope.
llvm-svn: 115269
2010-10-01 02:47:11 +00:00
Marcin Swiderski
3546b1aea1
Added generating CFGAutomaticObjDtors for exception variable in catch statement.
...
llvm-svn: 115266
2010-10-01 01:46:52 +00:00
Marcin Swiderski
6d5ee0c7f9
Added generating CFGAutomaticObjDtors for init statement, condition variable and implicit scope in for statement.
...
llvm-svn: 115265
2010-10-01 01:38:14 +00:00
Marcin Swiderski
e407a3ba1e
dded generating CFGAutomaticObjDtors for condition variable and implicit scopes in switch statement.
...
llvm-svn: 115264
2010-10-01 01:24:41 +00:00
Marcin Swiderski
1f4e15c56f
Added generating CFGAutomaticObjDtors for condition variable and implicit scopes in while and do statements.
...
llvm-svn: 115262
2010-10-01 01:14:17 +00:00
Marcin Swiderski
f883ade880
Added generating CFGAutomaticObjDtors for condition variable and implicit scopes in if statement.
...
llvm-svn: 115256
2010-10-01 00:52:17 +00:00
Marcin Swiderski
e84cb97997
Fixed checking for trivial destructor in CFGBuilder::addLocalScopeForVarDecl. Checked type does not have to represent C++ class.
...
llvm-svn: 115254
2010-10-01 00:31:22 +00:00
Marcin Swiderski
667ffecd9e
Added:
...
- Adding LocalScope for CompoundStmt,
- Adding CFGAutomaticObjDtors for end of scope, return, goto, break, continue,
- Regression tests for above cases.
llvm-svn: 115252
2010-10-01 00:23:17 +00:00
Marcin Swiderski
5e41573d26
Added methods for adding LocalScopes and CFGAutomaticObjDtors.
...
llvm-svn: 115237
2010-09-30 23:05:00 +00:00
Marcin Swiderski
321a707c9c
Added methods for inserting CFGAutomaticObjDtors to CFGBlocks,
...
Fixed some misspells in comments.
llvm-svn: 115236
2010-09-30 22:54:37 +00:00
Marcin Swiderski
e9862ce90a
Added:
...
- post-increament, distance and bool conversion methods to LocalScope::const_iterator,
- adding VarDecl to LocalScope.
Fixed some misspells in comments.
llvm-svn: 115227
2010-09-30 22:42:32 +00:00
Marcin Swiderski
99a9040a1f
Added two new command line arguments:
...
-cfg-add-implicit-dtors - sets CFG::BuildOptions::AddImplicitDtors for AnalysisCosumer to true,
-cfg-add-initializers - sets CFG::BuildOptions::AddInitializers for AnalysisCosumer to true.
llvm-svn: 115142
2010-09-30 07:41:24 +00:00
Marcin Swiderski
8b99b8a782
In preparation for adding generation of destructors for objects with automatic storage added:
...
- LocalScope class with iterator used to pointing into it,
- fat doxygen comment for LocalScope indended usage,
- BlockScopePosPair class used for storing jump targets/sources (for: goto, break, continue), that replaces raw CFGBlock pointer used earlier for this purpose.
llvm-svn: 114790
2010-09-25 11:05:21 +00:00
Marcin Swiderski
c0ca7316bc
Added:
...
- definitions of interfaces for CFGInitializer and CFGAutomaticObjDtor,
- support for above classes to print_elem function (renamed print_stmt),
- support for VarDecls in StmtPrinterHelper.
llvm-svn: 114403
2010-09-21 05:58:15 +00:00
Zhongxing Xu
d38fb8466c
Tidy up.
...
llvm-svn: 114062
2010-09-16 03:28:18 +00:00
Zhongxing Xu
2cd7a78c76
Introduce new CFGElement hierarchy to support C++ CFG, based on Marcin's patch
...
and discussions with Ted and Jordy.
llvm-svn: 114056
2010-09-16 01:25:47 +00:00
Ted Kremenek
7b31a61d10
Relax assertion in CFG builder when processing ForStmts. This fixes an assertion failure
...
on code containing GNU statement expressions reported in PR 8141.
llvm-svn: 113953
2010-09-15 07:01:20 +00:00
Ted Kremenek
e97b1ebef1
Add CFG::BuildOptions class to pass in CFG builder options under on parameter. Patch by Marcin Świderski!
...
llvm-svn: 113898
2010-09-14 23:41:16 +00:00
Ted Kremenek
8abff774aa
Fix CFGBuilder crash reported in PR 8141.
...
llvm-svn: 113826
2010-09-14 01:13:32 +00:00
Michael J. Spencer
09476212de
Revert "CMake: Update to use standard CMake dependency tracking facilities instead"
...
This reverts commit r113631
Conflicts:
CMakeLists.txt
lib/CodeGen/CMakeLists.txt
llvm-svn: 113817
2010-09-13 23:54:41 +00:00
Ted Kremenek
35965b972e
Remove from the CFG the half-implemented support for scoping information. We decided that scope information doesn't belong in the CFG at all, since it is a lexical construct.
...
Patch by Marcin Świderski!
llvm-svn: 113798
2010-09-13 22:25:54 +00:00
Michael J. Spencer
0881f4a367
CMake: Update to use standard CMake dependency tracking facilities instead
...
of whatever we were using before...
llvm-svn: 113631
2010-09-10 21:13:16 +00:00
Ted Kremenek
ed12f1b9f9
Add ObjCAtSynchronizedStmt to the CFG and add GRExprEngine support (PreVisit for checkers).
...
llvm-svn: 113572
2010-09-10 03:05:33 +00:00
Douglas Gregor
c9199f522f
Clean up CMake dependencies
...
llvm-svn: 113489
2010-09-09 15:44:58 +00:00
Ted Kremenek
f146cd1fa3
Remove stray ';' and convert tabs to spaces.
...
llvm-svn: 113466
2010-09-09 02:57:48 +00:00
Ted Kremenek
f2b0a1bfa0
Enhance -Wunreachable-code to not consider the 'default:' branch of a switch statement live if a switch on an enum value has
...
explicit 'case:' statements for each enum value.
llvm-svn: 113451
2010-09-09 00:06:10 +00:00
Ted Kremenek
b037185b52
Add 'filtered_pred_iterator' and 'filtered_succ_iterator' to CFGBlock. This allows a client
...
to selectively walk successors/predecessors based on commonly used filters. For starters, add
a filter to ignore 'default:' cases for SwitchStmts when all enum values are covered by CaseStmts.
llvm-svn: 113449
2010-09-09 00:06:04 +00:00
Zhongxing Xu
33dfc07b00
FinishBlock() is essentially doing nothing except returning '!badCFG'.
...
llvm-svn: 113149
2010-09-06 07:32:31 +00:00
Zhongxing Xu
b1e10aa670
Simplify CFG construction: bail out early when we have a bad CFG.
...
llvm-svn: 113148
2010-09-06 07:04:06 +00:00
Ted Kremenek
0f5d8bc5fc
Improve CFG printing support for CXXOperatorCallExpr and CXXBindTemporaryExpr.
...
llvm-svn: 112619
2010-08-31 18:47:37 +00:00
Ted Kremenek
128d04dfe8
Explicitly handle CXXOperatorCallExpr when building CFGs. We should treat it the same as CallExprs.
...
Fixes: <rdar://problem/8375510> [Boost] CFGBuilder crash in Boost.Graph
llvm-svn: 112618
2010-08-31 18:47:34 +00:00
Douglas Gregor
79a2788512
Revert my lame attempt at appeasing the CFGBuilder
...
llvm-svn: 112580
2010-08-31 05:36:56 +00:00
Douglas Gregor
f5d453d067
Teach the CFGBuilder not do die on CXXBindTemporaryExpr, CXXOperatorCallExpr. Fixes a Boost.Graph crasher.
...
llvm-svn: 112578
2010-08-31 05:10:27 +00:00
Ted Kremenek
52ac860d9c
Delete the relaxedLiveness object in the dtor of AnalysisContext.
...
llvm-svn: 112380
2010-08-28 18:59:04 +00:00
Ted Kremenek
82bfc86792
Explicitly handle CXXExprWithTemporaries during CFG construction by just visiting the subexpression. While we don't do anything intelligent right now, this obviates a bogus -Wunreahable-code warning reported in PR 6130.
...
llvm-svn: 112334
2010-08-28 00:19:02 +00:00
Tom Care
e5aa30c722
Add alternate version of LiveVariables analysis that does not kill liveness at assignments. This 'relaxed' liveness is useful in path sensitive analysis for situations where the resulting extended liveness allows us to find some bugs.
...
- Added killAtAssign flag to LiveVariables
- Added relaxed LiveVariables to AnalysisContext with an accessor
llvm-svn: 112306
2010-08-27 22:30:10 +00:00
Tom Care
9a68bccd0c
Add missing null checks in PseudoConstantAnalysis
...
llvm-svn: 112100
2010-08-25 22:46:03 +00:00
Tom Care
82b2a1dada
Improved the handling of blocks and block variables in PseudoConstantAnalysis
...
- Removed the assumption that __block vars are all non-constant
- Simplified some repetitive code in RunAnalysis
- Added block walking support
- Code/comments cleanup
- Separated out test for block pseudoconstants
llvm-svn: 112098
2010-08-25 22:37:26 +00:00
John McCall
e302792b61
GCC didn't care for my attempt at API compatibility, so brute-force everything
...
to the new constants.
llvm-svn: 112047
2010-08-25 11:45:40 +00:00
Ted Kremenek
5f0c066062
Fix printf format string checking for '%lc' (which expects a wint_t or compatible argument). Fixes PR 7981.
...
llvm-svn: 111978
2010-08-24 22:24:51 +00:00