- Feb 16, 2012
-
-
Anna Zaks authored
We are not properly handling the memory regions that escape into struct fields, which led to a bunch of false positives. Be conservative here and give up when a pointer escapes into a struct. llvm-svn: 150658
-
- Feb 15, 2012
-
-
Anna Zaks authored
llvm-svn: 150556
-
John McCall authored
is general goodness because representations of member pointers are not always equivalent across member pointer types on all ABIs (even though this isn't really standard-endorsed). Take advantage of the new information to teach IR-generation how to do these reinterprets in constant initializers. Make sure this works when intermingled with hierarchy conversions (although this is not part of our motivating use case). Doing this in the constant-evaluator would probably have been better, but that would require a *lot* of extra structure in the representation of constant member pointers: you'd really have to track an arbitrary chain of hierarchy conversions and reinterpretations in order to get this right. Ultimately, this seems less complex. I also wasn't quite sure how to extend the constant evaluator to handle foldings that we don't actually want to treat as extended constant expressions. llvm-svn: 150551
-
Anna Zaks authored
the passed in pointer on failure. llvm-svn: 150533
-
Anna Zaks authored
hardening. llvm-svn: 150532
-
- Feb 14, 2012
-
-
Anna Zaks authored
(In response of Ted's review of r150112.) This moves the logic which checked if a symbol escapes through a parameter to invalidateRegionCallback (instead of post CallExpr visit.) To accommodate the change, added a CallOrObjCMessage parameter to checkRegionChanges callback. llvm-svn: 150513
-
Ted Kremenek authored
llvm-svn: 150511
-
Ted Kremenek authored
llvm-svn: 150509
-
Ted Kremenek authored
llvm-svn: 150506
-
Ted Kremenek authored
llvm-svn: 150505
-
Ted Kremenek authored
Further remove some recursive visitiation in ExprEngine that is no longer needed because the CFG is fully linearized. llvm-svn: 150504
-
Anna Zaks authored
in realloc map. If there is no dependency, the reallocated ptr will get garbage collected before we know that realloc failed, which would lead us to missing a memory leak warning. Also added new test cases, which we can handle now. Plus minor cleanups. llvm-svn: 150446
-
- Feb 13, 2012
-
-
Anna Zaks authored
case when size is 0. llvm-svn: 150412
-
Anna Zaks authored
1) Support the case when realloc fails to reduce False Positives. (We essentially need to restore the state of the pointer being reallocated.) 2) Realloc behaves differently under special conditions (from pointer is null, size is 0). When detecting these cases, we should consider under-constrained states (size might or might not be 0). The old version handled this in a very hacky way. The code did not differentiate between definite and possible (no consideration for under-constrained states). Further, after processing each special case, the realloc processing function did not return but chained to the next special case processing. So you could end up in an execution in which you first see the states in which size is 0 and realloc ~ free(), followed by the states corresponding to size is not 0 followed by the evaluation of the regular realloc behavior. llvm-svn: 150402
-
- Feb 12, 2012
-
-
Anna Zaks authored
a pointer cannot escape through calls to system functions. Also, stop after reporting the first use-after-free. llvm-svn: 150315
-
- Feb 11, 2012
-
-
Anna Zaks authored
memory. (As per one test case, the existing checker thought that this could cause a lot of false positives - not sure if that's valid, to be verified.) llvm-svn: 150313
-
Anna Zaks authored
Resolves a common false positive, where we were reporting a leak inside asserts llvm-svn: 150312
-
Anna Zaks authored
We use the same logic here as the RetainRelease checker. llvm-svn: 150311
-
Ryan Govostes authored
llvm-svn: 150306
-
- Feb 10, 2012
-
-
Anna Zaks authored
(use of return instead of continue), wording. llvm-svn: 150215
-
- Feb 09, 2012
-
-
Ted Kremenek authored
llvm-svn: 150207
-
Benjamin Kramer authored
llvm-svn: 150172
-
Anna Zaks authored
llvm-svn: 150158
-
Anna Zaks authored
Very simple so far - we just highlight every allocation and release site. llvm-svn: 150156
-
Anna Zaks authored
llvm-svn: 150155
-
Anna Zaks authored
which allows values to escape through unknown calls. Assumes all calls but the malloc family are unknown. Also, catch a use-after-free when a pointer is passed to a function after a call to free (previously, you had to explicitly dereference the pointer value). llvm-svn: 150112
-
Anna Zaks authored
optimistic. TODO: actually implement the pessimistic version of the checker. Ex: it needs to assume that any function that takes a pointer might free it. The optimistic version relies on annotations to tell us which functions can free the pointer. llvm-svn: 150111
-
- Feb 08, 2012
-
-
Ted Kremenek authored
llvm-svn: 150110
-
Anna Zaks authored
post visit of CallExpr. In general, we should avoid using evalCall as it leads to interference with other checkers. llvm-svn: 150086
-
Ted Kremenek authored
Change PathDiagnosticPieces to be reference counted (simplifying their management), and introduce 'PathPieces' as a common container for PathDiagnosticPieces. llvm-svn: 150054
-
Ted Kremenek authored
llvm-svn: 150053
-
- Feb 07, 2012
-
-
Benjamin Kramer authored
Revert my patches which removed Diagnostic.h includes by moving some operator overloads out of line. This seems to negatively affect compile time onsome ObjC tests (which use a lot of partial diagnostics I assume). I have to come up with a way to keep them inline without including Diagnostic.h everywhere. Now adding a new diagnostic requires a full rebuild of e.g. the static analyzer which doesn't even use those diagnostics. This reverts commit 6496bd10dc3a6d5e3266348f08b6e35f8184bc99. This reverts commit 7af19b817ba964ac560b50c1ed6183235f699789. This reverts commit fdd15602a42bbe26185978ef1e17019f6d969aa7. This reverts commit 00bd44d5677783527d7517c1ffe45e4d75a0f56f. This reverts commit ef9b60ffed980864a8db26ad30344be429e58ff5. llvm-svn: 150006
-
Benjamin Kramer authored
llvm-svn: 149982
-
Benjamin Kramer authored
llvm-svn: 149981
-
Douglas Gregor authored
- Capturing variables by-reference and by-copy within a lambda - The representation of lambda captures - The creation of the non-static data members in the lambda class that store the captured variables - The initialization of the non-static data members from the captured variables - Pretty-printing lambda expressions There are a number of FIXMEs, both explicit and implied, including: - Creating a field for a capture of 'this' - Improved diagnostics for initialization failures when capturing variables by copy - Dealing with temporaries created during said initialization - Template instantiation - AST (de-)serialization - Binding and returning the lambda expression; turning it into a proper temporary - Lots and lots of semantic constraints - Parameter pack captures llvm-svn: 149977
-
Ted Kremenek authored
Create PathDiagnosticCallEnter and PathDiagnosticCallExit, to remark calls in PathDiagnostics from other events. This will have potential uses later. llvm-svn: 149960
-
Ted Kremenek authored
llvm-svn: 149959
-
Ted Kremenek authored
llvm-svn: 149958
-
Anna Zaks authored
separately. llvm-svn: 149947
-
Ted Kremenek authored
llvm-svn: 149939
-