summaryrefslogtreecommitdiffstats
path: root/clang/lib/StaticAnalyzer
Commit message (Collapse)AuthorAgeFilesLines
* [analyzer] MallocChecker: convert from using evalCall toAnna Zaks2012-02-081-36/+33
| | | | | | | | | post visit of CallExpr. In general, we should avoid using evalCall as it leads to interference with other checkers. llvm-svn: 150086
* Change PathDiagnosticPieces to be reference counted (simplifying their ↵Ted Kremenek2012-02-085-101/+83
| | | | | | management), and introduce 'PathPieces' as a common container for PathDiagnosticPieces. llvm-svn: 150054
* Refactor pieces of PathDiagnostic into its own data structure. No ↵Ted Kremenek2012-02-081-2/+4
| | | | | | functionality change. llvm-svn: 150053
* Revert my patches which removed Diagnostic.h includes by moving some ↵Benjamin Kramer2012-02-0710-10/+0
| | | | | | | | | | | | | | | | | | 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
* Print NamedDecls directly to a raw_ostream where possible.Benjamin Kramer2012-02-073-6/+6
| | | | llvm-svn: 149982
* Switch the ObjC*Decl raw_stream overloads to take a reference, for ↵Benjamin Kramer2012-02-071-2/+2
| | | | | | consistency with NamedDecls. llvm-svn: 149981
* Introduce basic ASTs for lambda expressions. This covers:Douglas Gregor2012-02-071-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | - 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
* Create PathDiagnosticCallEnter and PathDiagnosticCallExit, to remark calls ↵Ted Kremenek2012-02-074-10/+14
| | | | | | | | in PathDiagnostics from other events. This will have potential uses later. llvm-svn: 149960
* Tweak BugReporter extensive diagnostics to not add edges between function calls.Ted Kremenek2012-02-071-1/+28
| | | | llvm-svn: 149959
* Quote name of function in path diagnostics.Ted Kremenek2012-02-071-1/+1
| | | | llvm-svn: 149958
* [analyzer] Allow each CString check to be enabled/disabledAnna Zaks2012-02-072-12/+77
| | | | | | separately. llvm-svn: 149947
* Add basic BugReporter support for CallEnter/CallExit. WIP.Ted Kremenek2012-02-073-0/+63
| | | | llvm-svn: 149939
* Basic: import SmallString<> into clang namespaceDylan Noblesmith2012-02-0525-49/+49
| | | | | | | (I was going to fix the TODO about DenseMap too, but that would break self-host right now. See PR11922.) llvm-svn: 149799
* Basic: import OwningPtr<> into clang namespaceDylan Noblesmith2012-02-0542-81/+81
| | | | llvm-svn: 149798
* Move a method from IdentifierTable.h out of line and remove the SmallString ↵Benjamin Kramer2012-02-0423-2/+23
| | | | | | | | include. Fix all the transitive include users. llvm-svn: 149783
* Remove Diagnostic.h include from Preprocessor.h.Benjamin Kramer2012-02-042-0/+2
| | | | | | | - Move the offending methods out of line and fix transitive includers. - This required changing an enum in the PPCallback API into an unsigned. llvm-svn: 149782
* Move various diagnostic operator<< overloads out of line and remove includes ↵Benjamin Kramer2012-02-0413-0/+13
| | | | | | | | | of Diagnostic.h. Fix all the files that depended on transitive includes of Diagnostic.h. With this patch in place changing a diagnostic no longer requires a full rebuild of the StaticAnalyzer. llvm-svn: 149781
* [analyzer] Make sure Containers OutOfBounds checker does not crash on ↵Anna Zaks2012-02-041-20/+14
| | | | | | undefined arguments, when CF functions are called with wrong number of arguments. llvm-svn: 149771
* [analyzer] Turn on by default two checkers:Anna Zaks2012-02-041-11/+12
| | | | | | | - osx.coreFoundation.containers.IndexOutOfBounds - osx.cocoa.SelfInit llvm-svn: 149747
* [analyzer] Minor cleanups to the ObjCSelfInitChecker.Anna Zaks2012-02-043-17/+7
| | | | | | (Also renames in other ObjC checkers to create one category of checks.) llvm-svn: 149745
* [analyzer] Fix a false positive in the CFArrayCreate check that surfacesAnna Zaks2012-02-021-1/+10
| | | | | | | | | | the the code like this (due to x and &x being the same value but different size): void* x[] = { ptr1, ptr2, ptr3 }; CFArrayCreate(NULL, (const void **) &x, count, NULL); llvm-svn: 149579
* [analyzer] Fix a crash in CheckerContext::isCLibraryFunction for C++Anna Zaks2012-02-011-1/+7
| | | | | | | | declarations with special names. A patch by Dmitri Gribenko. llvm-svn: 149525
* Fix an assertion failure in isMacOSXVersionLT for IOS targets.Bob Wilson2012-01-311-4/+3
| | | | | | | Check if the triple OS is IOS instead of checking for arm/thumb architectures and check that before calling isMacOSXVersionLT. llvm-svn: 149454
* [analyzer] Add checks for common anti-patterns in strncat.Anna Zaks2012-01-314-8/+215
| | | | | | | (Since this is syntax only, might be a good candidate for turning into a compiler warning.) llvm-svn: 149407
* [analyzer] Change the warning to suggest 'strlcat/strlcpy' asAnna Zaks2012-01-311-2/+2
| | | | | | replacements for 'starcat/strcpy' instead of 'strncat/strncpy'. llvm-svn: 149406
* Reapply r149311 which I reverted by mistake.Argyrios Kyrtzidis2012-01-313-22/+24
| | | | | | | | | | Original log: Convert ProgramStateRef to a smart pointer for managing the reference counts of ProgramStates. This leads to a slight memory improvement, and a simplification of the logic for managing ProgramState objects. # Please enter the commit message for your changes. Lines starting llvm-svn: 149339
* Revert r149311 which failed to compile.Argyrios Kyrtzidis2012-01-313-24/+22
| | | | | | | | | Original log: Convert ProgramStateRef to a smart pointer for managing the reference counts of ProgramStates. This leads to a slight memory improvement, and a simplification of the logic for managing ProgramState objects. llvm-svn: 149336
* Minor refactor within ExplodedGraph::reclaimRecentlyAllocatedNodes(). No ↵Ted Kremenek2012-01-311-64/+76
| | | | | | functionality change. llvm-svn: 149320
* Convert checker over to using ProgramStateRef.Ted Kremenek2012-01-311-4/+4
| | | | llvm-svn: 149319
* Convert ProgramStateRef to a smart pointer for managing the reference counts ↵Ted Kremenek2012-01-313-22/+24
| | | | | | | | of ProgramStates. This leads to a slight memory improvement, and a simplification of the logic for managing ProgramState objects. llvm-svn: 149311
* [analyzer] Rename the checker as per Ted's comment. Remove the referenceAnna Zaks2012-01-301-4/+6
| | | | | | from the driver. llvm-svn: 149276
* [analyzer] Make osx.cocos.CFContainersSyntax a default checker.Anna Zaks2012-01-301-4/+4
| | | | llvm-svn: 149258
* [analyzer] Add index out of bounds check for CFArrayGetArrayAtIndex.Anna Zaks2012-01-304-2/+170
| | | | llvm-svn: 149228
* StaticAnalyzer: Move ObjC- and CXX-specific methods out of line so checkers ↵Benjamin Kramer2012-01-2811-1/+41
| | | | | | that don't care about the language don't have to pull in all the headers. llvm-svn: 149178
* Change references to 'const ProgramState *' to typedef 'ProgramStateRef'.Ted Kremenek2012-01-2660-558/+558
| | | | | | | | At this point this is largely cosmetic, but it opens the door to replace ProgramStateRef with a smart pointer that more eagerly acts in the role of reclaiming unused ProgramState objects. llvm-svn: 149081
* StaticAnalyzer/Checkers: Fix CMake build.NAKAMURA Takumi2012-01-261-1/+1
| | | | llvm-svn: 149009
* [analyzer] Add an AST checker that checks for a common pitfall whenAnna Zaks2012-01-263-0/+168
| | | | | | | | | | | using CFArrayCreate & family. Specifically, CFArrayCreate's input should be: 'A C array of the pointer-sized values to be in the new array.' (radar://10717339) llvm-svn: 149008
* Rework flushing of diagnostics to PathDiagnosticConsumer. Now all the ↵Ted Kremenek2012-01-254-130/+159
| | | | | | | | | reports are batched up before being flushed to the underlying consumer implementation. This allows us to unique reports across analyses to multiple functions (which shows up with inlining). llvm-svn: 148997
* Post open source analyzer build checker-259.Ted Kremenek2012-01-251-1/+4
| | | | llvm-svn: 148988
* Reduce peak memory usage of the static analyzer on sqlite3 (when using ↵Ted Kremenek2012-01-251-3/+23
| | | | | | | | | | | inlining) by 30%. This is accomplished by periodically reclaiming nodes in the graph. This was an optimization done before the CFG was linearized, but the CFG linearization destroyed that optimization since each freshly created node couldn't be reclaimed and we only looked at a window of nodes created between each ProcessStmt. This optimization can be reclaimed my merely expanding the window to N number of nodes. llvm-svn: 148888
* [analyzer] Add more C taint sources/sinks.Anna Zaks2012-01-241-22/+45
| | | | llvm-svn: 148844
* [analyzer] It's possible to have a non PointerType expression evaluate to a ↵Anna Zaks2012-01-211-2/+2
| | | | | | Loc value. When this happens, use the default type. llvm-svn: 148631
* [analyzer] Make VLA checker taint aware. Anna Zaks2012-01-213-34/+65
| | | | | | Also, slightly modify the diagnostic message in ArrayBound and DivZero (still use 'taint', which might not mean much to the user, but plan on changing it later). llvm-svn: 148626
* More dead code removal (using -Wunreachable-code)David Blaikie2012-01-206-18/+3
| | | | llvm-svn: 148577
* [analyzer] Add taint awareness to DivZeroChecker.Anna Zaks2012-01-201-11/+26
| | | | llvm-svn: 148566
* Reenable DeadStoresChecker under --analyze, and move the ↵Ted Kremenek2012-01-201-4/+3
| | | | | | IdempotentOperationsChecker to the 'experimental' category. Fixes <rdar://problem/10146347>. llvm-svn: 148533
* Implement checker that looks for calls to mktemps and friends that have ↵Ted Kremenek2012-01-202-3/+107
| | | | | | fewer than 6 Xs. Implements <rdar://problem/6336672>. llvm-svn: 148531
* Turn 'SecuritySyntaxChecker' into a "meta" security checker for insecure ↵Ted Kremenek2012-01-202-10/+86
| | | | | | | | | APIs. Now multiple checks are exposed as separate checkers, but CheckerManager only creates one Checker object. llvm-svn: 148525
* [analyzer] Add socket API as a source of taint.Anna Zaks2012-01-201-0/+27
| | | | llvm-svn: 148518
* [analyzer] Skip casts when determining taint dependencies + prettyAnna Zaks2012-01-201-0/+25
| | | | | | printing. llvm-svn: 148517
OpenPOWER on IntegriCloud