Revision tags: llvmorg-3.0.0-rc3 |
|
#
fe96e0b6 |
| 06-Nov-2011 |
John McCall <rjmccall@apple.com> |
Change the AST representation of operations on Objective-C property references to use a new PseudoObjectExpr expression which pairs a syntactic form of the expression with a set of semantic expressio
Change the AST representation of operations on Objective-C property references to use a new PseudoObjectExpr expression which pairs a syntactic form of the expression with a set of semantic expressions implementing it. This should significantly reduce the complexity required elsewhere in the compiler to deal with these kinds of expressions (e.g. IR generation's special l-value kind, the static analyzer's Message abstraction), at the lower cost of specifically dealing with the odd AST structure of these expressions. It should also greatly simplify efforts to implement similar language features in the future, most notably Managed C++'s properties and indexed properties.
Most of the effort here is in dealing with the various clients of the AST. I've gone ahead and simplified the ObjC rewriter's use of properties; other clients, like IR-gen and the static analyzer, have all the old complexity *and* all the new complexity, at least temporarily. Many thanks to Ted for writing and advising on the necessary changes to the static analyzer.
I've xfailed a small diagnostics regression in the static analyzer at Ted's request.
llvm-svn: 143867
show more ...
|
#
977e30d1 |
| 05-Nov-2011 |
Ted Kremenek <kremenek@apple.com> |
Tweak LookThroughStmt() in LiveVariables to properly look through alternativing ParenExprs and OpaqueValueExprs. Thanks to Anna and Argiris for iterating on this function. My original patch embarss
Tweak LookThroughStmt() in LiveVariables to properly look through alternativing ParenExprs and OpaqueValueExprs. Thanks to Anna and Argiris for iterating on this function. My original patch embarssingly didn't even pass the Clang tests.
llvm-svn: 143797
show more ...
|
#
c843fd2a |
| 05-Nov-2011 |
Argyrios Kyrtzidis <akyrtzi@gmail.com> |
LookThroughStmt GM release.
llvm-svn: 143796
|
#
e2cbe86d |
| 05-Nov-2011 |
Argyrios Kyrtzidis <akyrtzi@gmail.com> |
LookThroughStmt v4.6.3
llvm-svn: 143795
|
#
6b4fa1b4 |
| 05-Nov-2011 |
Argyrios Kyrtzidis <akyrtzi@gmail.com> |
Simplify LookThroughStmt in LiveVariables.cpp
llvm-svn: 143794
|
#
04994959 |
| 05-Nov-2011 |
Anna Zaks <ganna@apple.com> |
Another correction to the LiveVariables commit (r143767, r143780). Make test/Analysis/misc-ps.c test pass.
llvm-svn: 143790
|
#
3c89fdae |
| 05-Nov-2011 |
Argyrios Kyrtzidis <akyrtzi@gmail.com> |
Fix infinite loop in LiveVariables due to a misplaced 'break' (it would break out of switch statement, not the while loop).
llvm-svn: 143780
|
#
5717049d |
| 05-Nov-2011 |
Ted Kremenek <kremenek@apple.com> |
Teach LiveVariables to look through OpaqueValueExprs for extending Stmt liveness.
llvm-svn: 143767
|
Revision tags: llvmorg-3.0.0-rc2 |
|
#
81ce1c8a |
| 24-Oct-2011 |
Ted Kremenek <kremenek@apple.com> |
Rename AnalysisContext to AnalysisDeclContext. Not only is this name more accurate, but it frees up the name AnalysisContext for other uses.
llvm-svn: 142782
|
#
5abde7cd |
| 22-Oct-2011 |
Ted Kremenek <kremenek@apple.com> |
Pull TopologicallySortedCFG out of LiveVariables into its own analysis: PostOrderCFGView.
llvm-svn: 142713
|
Revision tags: llvmorg-3.0.0-rc1 |
|
#
dccc2b22 |
| 07-Oct-2011 |
Ted Kremenek <kremenek@apple.com> |
Remove AnalysisContext::getLiveVariables(), and introduce a templatized mechanism to lazily create analyses that are attached to AnalysisContext objects.
llvm-svn: 141425
|
#
b7531d62 |
| 06-Oct-2011 |
Ted Kremenek <kremenek@apple.com> |
[static analyzer] Fix crash in LiveVariables and Environment::getSVal() when analyzing C++ pointer-to-member calls. Fixes <rdar://problem/10243398>.
llvm-svn: 141312
|
#
c8f008ac |
| 02-Oct-2011 |
Ted Kremenek <kremenek@apple.com> |
Fix another major performance regression in LiveVariables by not canonicalizing the underlying ImmutableSets on every analyzed statement (just at merges). Fixes <rdar://problem/10087538>.
llvm-svn:
Fix another major performance regression in LiveVariables by not canonicalizing the underlying ImmutableSets on every analyzed statement (just at merges). Fixes <rdar://problem/10087538>.
llvm-svn: 140958
show more ...
|
#
2a14c695 |
| 02-Oct-2011 |
Ted Kremenek <kremenek@apple.com> |
Fix LiveVariables analysis bug with MaterializeTemporaryExpr and fix handling in ExprEngine. Fixes <rdar://problem/10201666>.
llvm-svn: 140956
|
#
459597a6 |
| 16-Sep-2011 |
Ted Kremenek <kremenek@apple.com> |
Fix massive LiveVariables regression (due to LiveVariables rewrite) by addressing two performance problems:
- Speed of "merge()", which merged data flow facts. This was doing a set canonicalization
Fix massive LiveVariables regression (due to LiveVariables rewrite) by addressing two performance problems:
- Speed of "merge()", which merged data flow facts. This was doing a set canonicalization on every insertion, which was super slow. To fix this, we use ImmutableSetRef.
- Visit CFGBlocks in reverse postorder. This is a huge speedup, as on some test cases the algorithm would take many iterations to converge.
This contains a bunch of copy-paste from UninitializedValues.cpp and ThreadSafety.cpp. The idea was to get something working first, and then refactor the common logic for all three files into a separate analysis/library entry point.
llvm-svn: 139968
show more ...
|
#
adfb4454 |
| 23-Aug-2011 |
Ted Kremenek <kremenek@apple.com> |
Constify the result of CFGStmt::getStmt().
llvm-svn: 138408
|
#
5ef32dbf |
| 12-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.
llvm-svn: 137537
|
#
84a1ca52 |
| 06-Aug-2011 |
Ted Kremenek <kremenek@apple.com> |
[analyzer] Simplify logic for ExprEngine::VisitUnaryExprOrTypeTraitExpr to avoid recursion to subexpression.
This exposed bugs in the live variables analysis, and a latent analyzer bug in the Symbol
[analyzer] Simplify logic for ExprEngine::VisitUnaryExprOrTypeTraitExpr to avoid recursion to subexpression.
This exposed bugs in the live variables analysis, and a latent analyzer bug in the SymbolReaper.
llvm-svn: 137006
show more ...
|
#
3c05b7c1 |
| 02-Aug-2011 |
Benjamin Kramer <benny.kra@googlemail.com> |
Make helper functions static.
llvm-svn: 136679
|
#
e9fda1e4 |
| 28-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
[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.
llvm-svn: 136419
show more ...
|
#
0e62c1cc |
| 23-Jul-2011 |
Chris Lattner <sabre@nondot.org> |
remove unneeded llvm:: namespace qualifiers on some core types now that LLVM.h imports them into the clang namespace.
llvm-svn: 135852
|
#
1734737d |
| 10-Jun-2011 |
Jordy Rose <jediknil@belkadan.com> |
[analyzer] PR8962 again. Ban ParenExprs (and friends) from block-level expressions (by calling IgnoreParens before adding expressions to blocks). Undo 132769 (LiveVariables' local IgnoreParens), sinc
[analyzer] PR8962 again. Ban ParenExprs (and friends) from block-level expressions (by calling IgnoreParens before adding expressions to blocks). Undo 132769 (LiveVariables' local IgnoreParens), since it's no longer necessary.
Also, have Environment stop looking through NoOp casts; it didn't match the behavior of LiveVariables. And once that's gone, the whole cast block of that switch is unnecessary.
llvm-svn: 132840
show more ...
|
#
891d6132 |
| 09-Jun-2011 |
Jordy Rose <jediknil@belkadan.com> |
[analyzer] Ignore parentheses around block-level expressions when computing liveness. Fixes the other half of PR8962.
llvm-svn: 132769
|
Revision tags: llvmorg-2.9.0, llvmorg-2.9.0-rc3, llvmorg-2.9.0-rc2, llvmorg-2.9.0-rc1 |
|
#
9865d7f0 |
| 11-Feb-2011 |
Ted Kremenek <kremenek@apple.com> |
Don't report dead stores on unreachable code paths. Fixes <rdar://problem/8405222>.
llvm-svn: 125415
|
Revision tags: llvmorg-2.8.0, llvmorg-2.8.0-rc3, llvmorg-2.8.0-rc2, llvmorg-2.8.0-rc1, llvmorg-2.8.0-rc0 |
|
#
e5aa30c7 |
| 27-Aug-2010 |
Tom Care <tom.care@uqconnect.edu.au> |
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 li
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
show more ...
|