ef8225444452a1486bd721f3285301fe84643b00 |
|
21-Jul-2014 |
Stephen Hines <srhines@google.com> |
Update Clang for rebase to r212749. This also fixes a small issue with arm_neon.h not being generated always. Includes a cherry-pick of: r213450 - fixes mac-specific header issue r213126 - removes a default -Bsymbolic on Android Change-Id: I2a790a0f5d3b2aab11de596fc3a74e7cbc99081d
/external/clang/include/clang/Analysis/CFG.h
|
6bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89 |
|
29-May-2014 |
Stephen Hines <srhines@google.com> |
Update Clang for 3.5 rebase (r209713). Change-Id: I8c9133b0f8f776dc915f270b60f94962e771bc83
/external/clang/include/clang/Analysis/CFG.h
|
651f13cea278ec967336033dd032faef0e9fc2ec |
|
24-Apr-2014 |
Stephen Hines <srhines@google.com> |
Updated to Clang 3.5a. Change-Id: I8127eb568f674c2e72635b639a3295381fe8af82
/external/clang/include/clang/Analysis/CFG.h
|
81557223ba8d7ef8b0468a6e1dc8fc79f2de46f2 |
|
25-Sep-2013 |
Jordan Rose <jordan_rose@apple.com> |
[analyzer] Handle destructors for the argument to C++ 'delete'. Now that the CFG includes nodes for the destructors in a delete-expression, process them in the analyzer using the same common destructor interface currently used for local, member, and base destructors. Also, check for when the value is known to be null, in which case no destructor is actually run. This does not yet handle destructors for deleted /arrays/, which may need more CFG work. It also causes a slight regression in the location of double delete warnings; the double delete is detected at the destructor call, which is implicit, and so is reported on the first access within the destructor instead of at the 'delete' statement. This will be fixed soon. Patch by Karthik Bhat! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191381 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
36d558d85653315edb389677e995ec9ccdbfbf3d |
|
03-Sep-2013 |
Jordan Rose <jordan_rose@apple.com> |
Add an implicit dtor CFG node just before C++ 'delete' expressions. This paves the way for adding support for modeling the destructor of a region before it is deleted. The statement "delete <expr>" now generates this series of CFG elements: 1. <expr> 2. [B1.1]->~Foo() (Implicit destructor) 3. delete [B1.1] Patch by Karthik Bhat! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@189828 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
49a246f4fad959888bb0164c624c3c2b03078e91 |
|
06-Jun-2013 |
Jordan Rose <jordan_rose@apple.com> |
[analyzer; new edges] Simplify edges in a C++11 for-range loop. Previously our edges were completely broken here; now, the final result is a very simple set of edges in most cases: one up to the "for" keyword for context, and one into the body of the loop. This matches the behavior for ObjC for-in loops. In the AST, however, CXXForRangeStmts are handled very differently from ObjCForCollectionStmts. Since they are specified in terms of equivalent statements in the C++ standard, we actually have implicit AST nodes for all of the semantic statements. This makes evaluation very easy, but diagnostic locations a bit trickier. Fortunately, the problem can be generally defined away by marking all of the implicit statements as part of the top-level for-range statement. One of the implicit statements in a for-range statement is the declaration of implicit iterators __begin and __end. The CFG synthesizes two separate DeclStmts to match each of these decls, but until now these synthetic DeclStmts weren't in the function's ParentMap. Now, the CFG keeps track of its synthetic statements, and the AnalysisDeclContext will make sure to add them to the ParentMap. <rdar://problem/14038483> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183449 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
d049b40ef411eee12a735233dbe04fdc42c67e1a |
|
16-May-2013 |
Jordan Rose <jordan_rose@apple.com> |
Remove unused, awkward CFGStmtVisitor and subclasses. This class is a StmtVisitor that distinguishes between block-level and non-block-level statements in a CFG. However, it does so using a hard-coded idea of which statements might be block-level, which probably isn't accurate anymore. The only implementer of the CFGStmtVisitor hierarchy was the analyzer's DeadStoresChecker, and the analyzer creates a linearized CFG anyway (every non-trivial statement is a block-level statement). This also allows us to remove the block-expr map ("BlkExprMap"), which mapped statements to positions in the CFG. Apart from having a helper type that really should have just been Optional<unsigned>, it was only being used to ask /if/ a particular expression was block-level, for traversal purposes in CFGStmtVisitor. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181945 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
7247c88d1e41514a41085f83ebf03dd5220e054a |
|
15-May-2013 |
David Blaikie <dblaikie@gmail.com> |
Use only explicit bool conversion operator The most common (non-buggy) case are where such objects are used as return expressions in bool-returning functions or as boolean function arguments. In those cases I've used (& added if necessary) a named function to provide the equivalent (or sometimes negative, depending on convenient wording) test. DiagnosticBuilder kept its implicit conversion operator owing to the prevalent use of it in return statements. One bug was found in ExprConstant.cpp involving a comparison of two PointerUnions (PointerUnion did not previously have an operator==, so instead both operands were converted to bool & then compared). A test is included in test/SemaCXX/constant-expression-cxx1y.cpp for the fix (adding operator== to PointerUnion in LLVM). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181869 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
fbd4b5dc7febd1d8b4fa64ab00a29d72b44bec7b |
|
28-Mar-2013 |
Ted Kremenek <kremenek@apple.com> |
Add CFG logic to create a conditional branch for modeling static initializers. This is an optional variant of the CFG. This allows analyses to model whether or not a static initializer has run, e.g.: static Foo x = bar(); For basic dataflow analysis in Sema we will just assume that the initializer always runs. For the static analyzer we can use this branch to accurately track whether or not initializers are on. This patch just adds the (opt-in) functionality to the CFG. The static analyzer still needs to be modified to adopt this feature. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178263 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
94cf910ac2d1719c1dfc163bbec3953f12efdf6f |
|
28-Mar-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
These are all simple pointer wrappers. Pass them by value. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178247 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
e81fdb1fdde48d3fa18df56c5797f6b0bc5dfc4a |
|
27-Mar-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Cleanup clang's specializations of simplify_type. Now that the basic implementation in llvm has been fixed, simplify the specializations in clang. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178173 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
b07805485c603be3d8011f72611465324c9e664b |
|
23-Feb-2013 |
David Blaikie <dblaikie@gmail.com> |
Remove the CFGElement "Invalid" state. Use Optional<CFG*> where invalid states were needed previously. In the one case where that's not possible (beginAutomaticObjDtorsInsert) just use a dummy CFGAutomaticObjDtor. Thanks for the help from Jordan Rose & discussion/feedback from Ted Kremenek and Doug Gregor. Post commit code review feedback on r175796 by Ted Kremenek. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175938 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
fdf6a279c9a75c778eba382d9a156697092982a1 |
|
21-Feb-2013 |
David Blaikie <dblaikie@gmail.com> |
Replace CFGElement llvm::cast support to be well-defined. See r175462 for another example/more details. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175796 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
30a2e16f6c27f888dd11eba6bbbae1e980078fcb |
|
04-Dec-2012 |
Chandler Carruth <chandlerc@gmail.com> |
Sort #include lines for all files under include/... This is a simpler sort, entirely automatic with the help of llvm/utils/sort_includes.py -- no manual edits here. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169238 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
683b70c70dc47532af1215e4b1566de9d47a3be5 |
|
30-Nov-2012 |
Chandler Carruth <chandlerc@gmail.com> |
Update to reflect the change of macro name in r168993. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168994 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
dcd42fbb418cf662c136cb035e235a44b58ad91e |
|
30-Nov-2012 |
Jordan Rose <jordan_rose@apple.com> |
Use the new LLVM_LVALUE_FUNCTION to ban two getAs() calls on rvalues. If 'x' is a temporary, x.getAs<Foo>() may not be safe if the result is supposed to persist (if its address is stored somewhere). Since getAs() can return a null value, the result is almost always stored into a variable, which of course is not safe when the original value dies. This has caused several bugs with GCC's "Temporaries May Vanish Sooner Than You Expect" optimization; in C++11 builds, at least, we'll be able to catch these problems now. I would suggest applying these to other getAs() and get*As() methods (castAs is "better" because sometimes the result is used directly, which means the temporary will still be live), but these two have both caused trouble in the analyzer in the past. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168967 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
b43d87b0646aa04951056c7e0d1ab9a58eb09f66 |
|
12-Oct-2012 |
Sean Silva <silvas@purdue.edu> |
Remove pointless classof()'s. Updates to llvm/Support/Casting.h have rendered these classof()'s irrelevant. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165770 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
5a1ffe98b04120846a15f7105905b5f363b08635 |
|
06-Sep-2012 |
Jordan Rose <jordan_rose@apple.com> |
[analyzer] Always include destructors in the analysis CFG. While destructors will continue to not be inlined (unless the analyzer config option 'c++-inlining' is set to 'destructors'), leaving them out of the CFG is an incomplete model of the behavior of an object, and can cause false positive warnings (like PR13751, now working). Destructors for temporaries are still not on by default, since (a) we haven't actually checked this code to be sure it's fully correct (in particular, we probably need to be very careful with regard to lifetime-extension when a temporary is bound to a reference, C++11 [class.temporary]p5), and (b) ExprEngine doesn't actually do anything when it sees a temporary destructor in the CFG -- not even invalidate the object region. To enable temporary destructors, set the 'cfg-temporary-dtors' analyzer config option to '1'. The old -cfg-add-implicit-dtors cc1 option, which controlled all implicit destructors, has been removed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163264 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
681ab8998793899076bae9cd6383a5d78b8ee1ac |
|
09-Jun-2012 |
Benjamin Kramer <benny.kra@googlemail.com> |
Replace constant-sized BitVector with std::bitset. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158270 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
298038352b34c5503db418201f3ddea6e56fd0e1 |
|
30-Apr-2012 |
David Blaikie <dblaikie@gmail.com> |
Correct CFGBlock's front() and back() to return by const ref rather than value. This ought to fix PR11926, a crash when when running Clang built with GCC 4.7 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155805 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
682060c5d95f6e4f79536013781ab0870cdd3850 |
|
23-Dec-2011 |
Ted Kremenek <kremenek@apple.com> |
Colorize and condense CFG pretty-printing. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147203 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
02f34c5003b2c5067675f89ffce0a84c28faf722 |
|
05-Dec-2011 |
Anna Zaks <ganna@apple.com> |
[analyzer] Rely on LLVM Dominators in Clang dominator computation. (Previously, Clang used it's implementation of dominators.) The patch is contributed by Guoping Long! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145858 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
ba243b59a1074e0962f6abfa3bb9aa984eac1245 |
|
09-Nov-2011 |
David Blaikie <dblaikie@gmail.com> |
Fixing 80 col violations (& removing any trailing whitespace on files I was touching anyway) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144171 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
83754162f698a5dafad93fb89be0953651a604d0 |
|
13-Sep-2011 |
Chandler Carruth <chandlerc@gmail.com> |
Add a bit to the CFGBlock to track when it contains a no-return CFGElement. This will allow greatly simplifying the logic in -Wreturn-type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139593 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
c8cfc74bdcc999828bc232294d937fb191940d5b |
|
13-Sep-2011 |
Chandler Carruth <chandlerc@gmail.com> |
Enhance the CFG construction to detect no-return destructors for temporary objects and local variables. When detected, these split the block, marking the new one as having only the exit block as a successor. This prevents a large number of false positives in warnings sensitive to no-return constructs such as -Wreturn-type, and fixes the remainder of PR10063 along with several variations of this bug that had not been reported. The test cases are extended across the board to cover these patterns. This also checks in a stress test for these types of CFGs. The stress test declares some 32k variables, a mixture of no-return and normal destructors. Previously, this resulted in roughly 2500 CFG blocks, but didn't model any of the no-return destructors. With this patch, it results in over 33k blocks, many of them now unreachable. The nice thing about how the analyzer is set up? This causes *no* regression in performance of building the CFG. It actually in some cases makes it faster, as best I can benchmark. The analysis for -Wreturn-type (and any other that cares about no-return code paths) is technically slower now as it has to look at many more candidate blocks, but it computes the correct answer. I have more test cases to follow, I think they all work now. Also I have further work that should dramatically simplify analyses in the presence of no-return. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139586 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
f0e71aede7ccf3e311feac6a414c431f7a0fc3c8 |
|
24-Aug-2011 |
Ted Kremenek <kremenek@apple.com> |
CFG: record set of C++ 'try' dispatch blocks, which could be of interest to various analyses (e.g., reachability). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138409 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
f1d10d939739f1a4544926d807e4f0f9fb64be61 |
|
24-Aug-2011 |
Ted Kremenek <kremenek@apple.com> |
Constify the result of CFGStmt::getStmt(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138408 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
9c378f705405d37f49795d5e915989de774fe11f |
|
13-Aug-2011 |
Ted Kremenek <kremenek@apple.com> |
Cleanup various declarations of 'Stmt*' to be 'Stmt *', etc. in libAnalyzer and libStaticAnalyzer[*]. It was highly inconsistent, and very ugly to look at. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137537 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
882998923889a2fcce9b49696506c499e22cf38f |
|
29-Jul-2011 |
Ted Kremenek <kremenek@apple.com> |
[analyzer] Overhaul how the static analyzer expects CFGs by forcing CFGs to be linearized only when used by the static analyzer. This required a rewrite of LiveVariables, and exposed a ton of subtle bugs. The motivation of this large change is to drastically simplify the logic in ExprEngine going forward. Some fallout is that the output of some BugReporterVisitors is not as accurate as before; those will need to be fixed over time. There is also some possible performance regression as RemoveDeadBindings will be called frequently; this can also be improved over time. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136419 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
bc5cb8a5fe2b88f917d47ceb58b53696a121e57e |
|
21-Jul-2011 |
Ted Kremenek <kremenek@apple.com> |
Simplify passing of CFGBuildOptions around for AnalysisContext. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135666 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
db999aad8a1b9dc265b2e627be334be6580a86a3 |
|
20-Jul-2011 |
Chris Lattner <sabre@nondot.org> |
remove some now-redundant forward declarations. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135578 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
8cc488fefb2fb04bc8d5398da29f0182f97934cf |
|
20-Jul-2011 |
Chris Lattner <sabre@nondot.org> |
add raw_ostream and Twine to LLVM.h, eliminating a ton of llvm:: qualifications. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135577 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
74fb1a493cf5d2dd0fb51a4eadf74e85e10a3457 |
|
19-Jul-2011 |
Ted Kremenek <kremenek@apple.com> |
Add hooks into the CFG builder to force that specific expressions are always CFGElements. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135479 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
3cda937d4c015ff6070f1117024621a452cfaddd |
|
28-Apr-2011 |
Ted Kremenek <kremenek@apple.com> |
Add comment to CFGBlock suggested by Jiri Slaby. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130387 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
26517e4ffe7c2c366496feb02370ba24ab5ae8f5 |
|
28-Apr-2011 |
Ted Kremenek <kremenek@apple.com> |
Remove unused method CFGBlock::hasBinaryBranchTerminator(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130336 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
0d28d360b5559abda755e50b855ba5e59727d9cd |
|
10-Mar-2011 |
Ted Kremenek <kremenek@apple.com> |
When doing reachability analysis for warnings issued under DiagRuntimeBehavior, don't construct a ParentMap or CFGStmtMap. Instead, create a small set of Stmt* -> CFGBlock* mappings during CFG construction for only the statements we care about relating to the diagnostics we want to check for reachability. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127396 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
b8ad5ee345fa1fdd1fa9253f2d01f69becc88a04 |
|
10-Mar-2011 |
Ted Kremenek <kremenek@apple.com> |
Rework interaction between AnalysisContext and CFG::BuildOptions to keep a BuildOptions object around instead of keeping a copy of the flags. Moreover, change AnalysisContext to use an OwningPtr for created analysis objects instead of directly managing them. Finally, add a 'forcedBlkExprs' entry to CFG::BuildOptions that will be used by the CFGBuilder to force specific expressions to be block-level expressions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127385 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
c5aff4497e5bfd7523e00b87560c1a5aa65136cc |
|
03-Mar-2011 |
Ted Kremenek <kremenek@apple.com> |
Teach CFGImplicitDtor::getDestructorDecl() about arrays of objects with destructors. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126910 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
c9f8f5a726bbb562e4b2d4b19d66e6202dcb2657 |
|
02-Mar-2011 |
Ted Kremenek <kremenek@apple.com> |
Introduce CFGImplicitDtor::isNoReturn() to query whether a destructor actually returns. Use this for -Wreturn-type to prune false positives reported in PR 6884. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126875 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
3c0349e87cdbd7316d06d2411d86ee1086e717a5 |
|
01-Mar-2011 |
Ted Kremenek <kremenek@apple.com> |
In preparation for fixing PR 6884, rework CFGElement to have getAs<> return pointers instead of fresh CFGElements. - Also, consoldiate getDtorKind() and getKind() into one "kind". - Add empty getDestructorDecl() method to CFGImplicitDtor. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126738 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
200fbc877d50da9e53b9aa272b70ca3538ce3a66 |
|
15-Jan-2011 |
Ted Kremenek <kremenek@apple.com> |
Add const version if CFG::isBlkExpr(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123511 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
cbb67480094b3bcb5b715acd827cbad55e2a204c |
|
08-Jan-2011 |
Sean Hunt <scshunt@csclub.uwaterloo.ca> |
Renamed CXXBaseOrMemberInitializer to CXXCtorInitializer. This is both shorter, more accurate, and makes it make sense for it to hold a delegating constructor call. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123084 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
403ba3522d1b1c97ae5fad81c1a2c4b3a754e1c1 |
|
19-Dec-2010 |
Nick Lewycky <nicholas@mxc.ca> |
Add missing standard includes. Patch by Joerg Sonnenberger! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122194 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
892697dd2287caf7c29aaaa82909b0e90b8b63fe |
|
16-Dec-2010 |
Ted Kremenek <kremenek@apple.com> |
Start migration of static analyzer to using the implicit lvalue-to-rvalue casts that John McCall recently introduced. This causes a whole bunch of logic in the analyzer for handling lvalues to vanish. It does, however, raise a few issues in the analyzer w.r.t to modeling various constructs (e.g., field accesses to compound literals). The .c/.m analysis test cases that fail are due to a missing lvalue-to-rvalue cast that will get introduced into the AST. The .cpp failures were more than I could investigate in one go, and the patch was already getting huge. I have XFAILED some of these tests, and they should obviously be further investigated. Some highlights of this patch include: - CFG no longer requires an lvalue bit for CFGElements - StackFrameContext doesn't need an 'asLValue' flag - The "VisitLValue" path from GRExprEngine has been eliminated. Besides the test case failures (XFAILed), there are surely other bugs that are fallout from this change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121960 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
9c6cd67ea416bace666d614c84d5531124287653 |
|
15-Nov-2010 |
Zhongxing Xu <xuzhongxing@gmail.com> |
Add skeleton for handling other kinds of CFGElements. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119135 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
8599e7677e067fd01d3b2ee4c0875747d367fd8e |
|
03-Nov-2010 |
Marcin Swiderski <marcin.sfider@gmail.com> |
Added generating destructors for temporary objects. Two cases I know of, that are not handled properly: 1. For statement: const C& c = C(0) ?: C(1) destructors generated for condition will not differ from those generated for case without prolonged lifetime of temporary, 2. There will be no destructor for constant reference member bound to temporary at the exit from constructor. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118158 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
4ba72a0b28135209c435630682febe1f854ccfa6 |
|
29-Oct-2010 |
Marcin Swiderski <marcin.sfider@gmail.com> |
Added CFGTerminator class, that holds information about CFGBlock terminator statement. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117642 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
7c625d8ffc20b92fff9e1690cd2484fcb6498183 |
|
05-Oct-2010 |
Marcin Swiderski <marcin.sfider@gmail.com> |
Added support for base and member destructors in destructor. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115592 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
82bc3fd823d85ee3ef9a641c0975b6ad25f55047 |
|
04-Oct-2010 |
Marcin Swiderski <marcin.sfider@gmail.com> |
Added support for C++ initializers in CFG. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115493 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
53de134e7b4686eed40bc031438d8a4560a2cda4 |
|
01-Oct-2010 |
Marcin Swiderski <marcin.sfider@gmail.com> |
Added methods for inserting CFGAutomaticObjDtors to CFGBlocks, Fixed some misspells in comments. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115236 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
1cff132e48e0ccc253c34e5a2fb12718bd4e7d2e |
|
21-Sep-2010 |
Marcin Swiderski <marcin.sfider@gmail.com> |
Added: - definitions of interfaces for CFGInitializer and CFGAutomaticObjDtor, - support for above classes to print_elem function (renamed print_stmt), - support for VarDecls in StmtPrinterHelper. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114403 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
b36cd3e1757fb4fcd9509f35558c847b04bef35f |
|
16-Sep-2010 |
Zhongxing Xu <xuzhongxing@gmail.com> |
Introduce new CFGElement hierarchy to support C++ CFG, based on Marcin's patch and discussions with Ted and Jordy. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114056 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
2a4cd498ff9b2b126de3e370b768ab307c221ab8 |
|
15-Sep-2010 |
Marcin Swiderski <marcin.sfider@gmail.com> |
Test commit git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113994 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
6c52c7850bccb6991470668429a1e1edf01b0873 |
|
15-Sep-2010 |
Ted Kremenek <kremenek@apple.com> |
Add CFG::BuildOptions class to pass in CFG builder options under on parameter. Patch by Marcin Świderski! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113898 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
fe255bc6dfddade15644aecead970791e96ddedc |
|
14-Sep-2010 |
Ted Kremenek <kremenek@apple.com> |
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! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113798 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
be39a566a914df8561d7a1e9654708297f0908c1 |
|
09-Sep-2010 |
Ted Kremenek <kremenek@apple.com> |
Remove stray ';' and convert tabs to spaces. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113466 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
ee7f84d509c6382491673883598eb9ed2d3a6a8b |
|
09-Sep-2010 |
Ted Kremenek <kremenek@apple.com> |
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113449 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
ba6f816d633e3b88c38c6896c2d78d19489650f2 |
|
15-Aug-2010 |
Argyrios Kyrtzidis <akyrtzi@gmail.com> |
Remove dead code, caught by unused function warnings. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111091 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
ad5a894df1841698c824381b414630799adc26ca |
|
03-Aug-2010 |
Ted Kremenek <kremenek@apple.com> |
Add 'AnalysisContext::getUnoptimizedCFG()' to allow clients to get access to the original CFG without any edges pruned out because of trivially solvable conditions (e.g., 'if (0)'). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110085 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
8efb5812b8f49e6c5cb4635e39e4cacafd1ae73c |
|
15-Mar-2010 |
Ted Kremenek <kremenek@apple.com> |
Add comment to CFG to 'buildCFG()' arguments indicating that scope support is not fully implemented. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98555 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
44b713938266685b1b1dd452a672f9f21b6060f8 |
|
22-Feb-2010 |
Zhongxing Xu <xuzhongxing@gmail.com> |
Remove dead code. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96773 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
4c45aa1b00b91847acfb082acfaced3ffa294d1d |
|
21-Jan-2010 |
Mike Stump <mrs@apple.com> |
Speed up compilation by avoiding generating exceptional edges from CallExprs as those edges help cause a n^2 explosion in the number of destructor calls. Other consumers, such as static analysis, that would like to have more a more complete CFG can select the inclusion of those edges as CFG build time. This also fixes up the two compilation users of CFGs to be tolerant of having or not having those edges. All catch code is assumed be to live if we didn't generate the exceptional edges for CallExprs. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94074 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
b978a441c7d8bf59e7fede938e1f3b672573b443 |
|
21-Jan-2010 |
Mike Stump <mrs@apple.com> |
Add infrastructure to add base initializers and member initializers to the CFG. WIP. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94062 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
079bd72439448b78629a28da6b1f8abe2cdeaf4d |
|
19-Jan-2010 |
Mike Stump <mrs@apple.com> |
Add CFG support for the start and end of scopes and infrastructure for implicit destructor calls. WIP. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93922 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
7177dee8aee4b432911c91f1b788963bec0cac9f |
|
19-Dec-2009 |
Daniel Dunbar <daniel@zuster.org> |
Remove ';' after method definition. Noticed by clang++, which one would think would have a higher respect for its own code. This is getting old, is this warning really adding value? git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91779 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
852274d4257134906995cb252fb3dfd2d71deae8 |
|
16-Dec-2009 |
Ted Kremenek <kremenek@apple.com> |
Add (initial?) static analyzer support for handling C++ references. This change was a lot bigger than I originally anticipated; among other things it requires us storing more information in the CFG to record what block-level expressions need to be evaluated as lvalues. The big change is that CFGBlocks no longer contain Stmt*'s by CFGElements. Currently CFGElements just wrap Stmt*, but they also store a bit indicating whether the block-level expression should be evalauted as an lvalue. DeclStmts involving the initialization of a reference require us treating the initialization expression as an lvalue, even though that information isn't recorded in the AST. Conceptually this change isn't that complicated, but it required bubbling up the data through the CFGBuilder, to GRCoreEngine, and eventually to GRExprEngine. The addition of CFGElement is also useful for when we want to handle more control-flow constructs or other data we want to keep in the CFG that isn't represented well with just a block of statements. In GRExprEngine, this patch introduces logic for evaluating the lvalues of references, which currently retrieves the internal "pointer value" that the reference represents. EvalLoad does a two stage load to catch null dereferences involving an invalid reference (although this could possibly be caught earlier during the initialization of a reference). Symbols are currently symbolicated using the reference type, instead of a pointer type, and special handling is required creating ElementRegions that layer on SymbolicRegions (see the changes to RegionStoreManager). Along the way, the DeadStoresChecker also silences warnings involving dead stores to references. This was the original change I introduced (which I wrote test cases for) that I realized caused GRExprEngine to crash. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91501 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
ee82d9bdc5025b82de8ce2a4ad4685e0a8b79da9 |
|
12-Oct-2009 |
Ted Kremenek <kremenek@apple.com> |
Use a BumpPtrAllocator to allocate all aspects of CFG, including CFGBlocks, successor and predecessor vectors, etc. Speedup: when doing 'clang-cc -analyze -dump-cfg' (without actual printing, just CFG building) on the amalgamated SQLite source (all of SQLite in one source file), runtime reduced by 9%. This fixes: <rdar://problem/7250745> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83899 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
6c2497248bc4f7fd8e5fb0a206d20abbf0e16645 |
|
24-Sep-2009 |
Ted Kremenek <kremenek@apple.com> |
When building CFGs, no longer reverse the statements in the CFGBlock. Instead have the iterators and operator[] handle the traversal of statements, as they are stored in reverse order. Tests show this has no real performance impact, but it does simply the CFG construction logic and will make it slightly easier to change the allocation strategy for CFGBlocks (as we have fewer copies). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82702 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
1eb4433ac451dc16f4133a88af2d002ac26c58ef |
|
09-Sep-2009 |
Mike Stump <mrs@apple.com> |
Remove tabs, and whitespace cleanups. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81346 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
0c8c5365be0176e8399e97d7da3293c79bc9da24 |
|
22-Jul-2009 |
Mike Stump <mrs@apple.com> |
Add some documentation, to make it so the next person doens't select the wrong function. :-) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76752 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
e38158de9236dfcded7da56126134e5e3e49cb01 |
|
21-Jul-2009 |
Ted Kremenek <kremenek@apple.com> |
Update stale comment. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76644 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
e5af3ce53ec58995b09381ba645ab2117a46647b |
|
21-Jul-2009 |
Mike Stump <mrs@apple.com> |
Add yet more analysis for CFGs involving conditionals that are actually constant. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76500 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
02f43e71121d1c9cc4baed7b21770b66fe1f4305 |
|
20-Jul-2009 |
Mike Stump <mrs@apple.com> |
Remove an apparently unused forward class decl. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76476 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|
e41611aa2237d06a0ef61db4528fb2883a8defcd |
|
16-Jul-2009 |
Ted Kremenek <kremenek@apple.com> |
Move the source-level CFG from libAST to libAnalysis. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76092 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Analysis/CFG.h
|