summaryrefslogtreecommitdiffstats
path: root/clang/lib/StaticAnalyzer/Frontend
Commit message (Collapse)AuthorAgeFilesLines
...
* [analyzer] Refactor CallGraph to use Recursive AST visitor whenAnna Zaks2012-03-131-6/+5
| | | | | | collecting function Decls. llvm-svn: 152651
* [analyzer] Use recursive AST visitor to drive simple visitation order inAnna Zaks2012-03-131-106/+95
| | | | | | | | | | | | | AnalysisConsumer. As a result: - We now analyze the C++ methods which are defined within the class body. These were completely skipped before. - Ensure that AST checkers are called on functions in the order they are defined in the Translation unit. llvm-svn: 152650
* [analyzer] Minor: factor out logic for determining if we should skip aAnna Zaks2012-03-131-4/+13
| | | | | | function. llvm-svn: 152649
* [analyzer] Move the check for parser errors out of the loop over Decls.Anna Zaks2012-03-131-5/+5
| | | | llvm-svn: 152648
* Unify naming of LangOptions variable/get function across the Clang stack ↵David Blaikie2012-03-111-3/+3
| | | | | | | | | | (Lex to AST). The member variable is always "LangOpts" and the member function is always "getLangOpts". Reviewed by Chris Lattner llvm-svn: 152536
* [analyzer] Add support for NoRedundancy inlining mode.Anna Zaks2012-03-091-28/+42
| | | | | | | | | | | We do not reanalyze a function, which has already been analyzed as an inlined callee. As per PRELIMINARY testing, this gives over 50% run time reduction on some benchmarks without decreasing of the number of bugs found. Turning the mode on by default. llvm-svn: 152440
* [analyzer] Use call graph to determine order in which functions areAnna Zaks2012-03-081-7/+88
| | | | | | | | | | | | | | analyzed. The CallGraph is used when inlining is on, which is the current default. This alone does not bring any performance improvement. It's a stepping stone for the upcoming optimization in which we do not re-analyze a function that has already been analyzed while inlined in other functions. Using the call graph makes it easier to play with the order of functions to minimize redundant analyzes. llvm-svn: 152352
* [analyzer] Rework inlining related command line options.Anna Zaks2012-03-081-2/+4
| | | | | | | | | - Remove -analyzer-inline-call. - Add -analyzer-ipa=[none|inlining] - Add -analyzer-inlining-mode to allow experimentation for different performance tuning methods. llvm-svn: 152351
* [analyzer] Time the execution (per each TU) with -analyzer-stats.Anna Zaks2012-03-051-2/+18
| | | | llvm-svn: 152059
* [analyzer] Bound the size of the functions being inlined + provideAnna Zaks2012-03-021-1/+3
| | | | | | | | | | | command line options for inlining tuning. This adds the option for stack depth bound as well as function size bound. + minor doxygenification llvm-svn: 151930
* [analyzer] Add -analyzer-stats, which hooks up LLVM stats tracking.Anna Zaks2012-02-271-0/+3
| | | | | | As in http://llvm.org/docs/ProgrammersManual.html#Statistic llvm-svn: 151570
* Revert my patches which removed Diagnostic.h includes by moving some ↵Benjamin Kramer2012-02-071-1/+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
* Basic: import OwningPtr<> into clang namespaceDylan Noblesmith2012-02-052-6/+6
| | | | llvm-svn: 149798
* Remove Diagnostic.h include from Preprocessor.h.Benjamin Kramer2012-02-041-0/+1
| | | | | | | - 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
* Remove unnecessary default cases in switches over enums.David Blaikie2012-01-171-2/+0
| | | | | | This allows -Wswitch-enum to find switches that need updating when these enums are modified. llvm-svn: 148281
* [analyzer] Fix use-after-free in HandleTranslationUnit.Anna Zaks2012-01-071-6/+9
| | | | | | | | | | | | | A patch by Dmitri Gribenko! The attached patch fixes a use-after-free in AnalysisConsumer::HandleTranslationUnit. The problem is that BugReporter's destructor runs after AnalysisManager has been already deleted. The fix introduces a scope to force correct destruction order. A crash happens only when reports have been added in AnalysisConsumer::HandleTranslationUnit's BugReporter. We don't have such checkers in clang so no test. llvm-svn: 147732
* Fix cmake build with -DBUILD_SHARED_LIBS=ON.Rafael Espindola2011-12-291-1/+2
| | | | llvm-svn: 147338
* Rename AnalysisContext to AnalysisDeclContext. Not only is this name more ↵Ted Kremenek2011-10-241-2/+2
| | | | | | accurate, but it frees up the name AnalysisContext for other uses. llvm-svn: 142782
* [analyzer] Remove LocationContext creation methods from AnalysisManager, and ↵Ted Kremenek2011-10-231-1/+2
| | | | | | | | change clients to use AnalysisContext instead. WIP to remove/reduce ExprEngine's usage of AnalysisManager. llvm-svn: 142739
* Change operator<< for raw_ostream and NamedDecl to take a reference instead ↵Benjamin Kramer2011-10-141-1/+1
| | | | | | | | of a pointer. Passing a pointer was a bad idea as it collides with the overload for void*. llvm-svn: 141971
* Remove AnalysisContext::getLiveVariables(), and introduce a templatized ↵Ted Kremenek2011-10-071-3/+2
| | | | | | mechanism to lazily create analyses that are attached to AnalysisContext objects. llvm-svn: 141425
* [analyzer] Add -analyzer-purge option which can take on multiple values, ↵Anna Zaks2011-09-301-1/+1
| | | | | | remove -analyzer-purge=none. (Small refactor as well: move the work of constructing AnalysisManager from the callers to the class itself.) llvm-svn: 140838
* Renaming PathDiagnosticClients.h to PathDiagnosticConsumers.h (issue 5397)David Blaikie2011-09-271-2/+2
| | | | llvm-svn: 140596
* Rename PathDiagnosticClient to PathDiagnosticConsumer as per issue 5397David Blaikie2011-09-261-10/+10
| | | | llvm-svn: 140492
* Rename Diagnostic to DiagnosticsEngine as per issue 5397David Blaikie2011-09-253-7/+8
| | | | llvm-svn: 140478
* Switch assert(0/false) llvm_unreachable.David Blaikie2011-09-231-2/+2
| | | | llvm-svn: 140367
* Switch LangOptions over to a .def file that describes header of theDouglas Gregor2011-09-131-1/+1
| | | | | | | | | | language options. Use that .def file to declare the LangOptions class and initialize all of its members, eliminating a source of annoying initialization bugs. AST serialization changes are next up. llvm-svn: 139605
* [analyzer] -analyze-function for ObjectiveC should check if any of the ↵Anna Zaks2011-09-101-1/+1
| | | | | | methods match the name (not only the first one). llvm-svn: 139439
* [analyzer] Remove TransferFuncs.h, then deal with the fallout.Jordy Rose2011-09-021-1/+0
| | | | | | And with that, TransferFuncs is gone! llvm-svn: 139003
* [analyzer] Move the knowledge of whether or not GC is enabled for the ↵Jordy Rose2011-09-021-39/+25
| | | | | | | | | | current analysis from CFRefCount to ExprEngine. Remove TransferFuncs from ExprEngine and AnalysisConsumer. Demote RetainReleaseChecker to a regular checker, and give it the name osx.cocoa.RetainCount (class name change coming shortly). Update tests accordingly. llvm-svn: 138998
* [analyzer] Pull body of loop in AnalysisConsumer::HandleDeclContext() into ↵Ted Kremenek2011-08-271-45/+52
| | | | | | its own method. No real functionality change. llvm-svn: 138712
* Fix typo.Jordy Rose2011-08-171-1/+1
| | | | llvm-svn: 137814
* [analyzer] Add a warning for an incompatible plugin version.Jordy Rose2011-08-171-6/+28
| | | | llvm-svn: 137813
* Silence compiler warnings by casting object pointers to function pointers ↵Benjamin Kramer2011-08-171-1/+2
| | | | | | | | via intptr_t. This is ugly but ISO C++ doesn't allow direct casts. llvm-svn: 137812
* [analyzer] Add basic support for pluggable checkers.Jordy Rose2011-08-171-11/+49
| | | | llvm-svn: 137802
* [analyzer] Overhaul of checker registration in preparation for basic plugin ↵Jordy Rose2011-08-164-30/+39
| | | | | | support. Removes support for checker groups (we can add them back in later if we decide they are still useful), and -analyzer-checker-help output is a little worse for the time being (no packages). llvm-svn: 137758
* Cleanup various declarations of 'Stmt*' to be 'Stmt *', etc. in libAnalyzer ↵Ted Kremenek2011-08-121-7/+7
| | | | | | and libStaticAnalyzer[*]. It was highly inconsistent, and very ugly to look at. llvm-svn: 137537
* Mechanically rename SourceManager::getInstantiationLoc andChandler Carruth2011-07-251-1/+1
| | | | | | | | FullSourceLoc::getInstantiationLoc to ...::getExpansionLoc. This is part of the API and documentation update from 'instantiation' as the term for macros to 'expansion'. llvm-svn: 135914
* remove unneeded llvm:: namespace qualifiers on some core types now that ↵Chris Lattner2011-07-233-9/+9
| | | | | | | | LLVM.h imports them into the clang namespace. llvm-svn: 135852
* Teach static analyzer to analyze Objective-C methods in category ↵Ted Kremenek2011-05-191-4/+6
| | | | | | implementations. llvm-svn: 131614
* Add Checker callback for running a checker at the end of processing an ↵Ted Kremenek2011-05-051-0/+3
| | | | | | entire TranslationUnit. Patch by Lei Zhang. llvm-svn: 130913
* fix a bunch of comment typos found by codespell. Patch byChris Lattner2011-04-151-1/+1
| | | | | | Luis Felipe Strano Moraes! llvm-svn: 129559
* [analyzer] For -analyzer-checker-help show all the info about groups, ↵Argyrios Kyrtzidis2011-03-291-3/+0
| | | | | | packages, and which packages/checkers are hidden. llvm-svn: 128511
* [analyzer] Remove unused checker stuff from AnalysisConsumer and some unused ↵Argyrios Kyrtzidis2011-02-281-34/+5
| | | | | | headers. llvm-svn: 126690
* [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best ↵Argyrios Kyrtzidis2011-02-281-10/+0
| | | | | | misnomer award. llvm-svn: 126676
* [analyzer] Run the ExprEngine depending on the CheckerManager having ↵Argyrios Kyrtzidis2011-02-281-7/+8
| | | | | | path-sensitive checkers. llvm-svn: 126674
* [analyzer] The current UninitializedValuesChecker will go away, remove ↵Argyrios Kyrtzidis2011-02-281-8/+0
| | | | | | '-warn-uninit-values'. llvm-svn: 126673
* [analyzer] Migrate NSErrorChecker and DereferenceChecker to CheckerV2.Argyrios Kyrtzidis2011-02-281-2/+0
| | | | | | | | They cooperate in that NSErrorChecker listens for ImplicitNullDerefEvent events that DereferenceChecker can dispatch. ImplicitNullDerefEvent is when we dereferenced a location that may be null. llvm-svn: 126659
* [analyzer] Introduce "event" mechanism in CheckerManager.Argyrios Kyrtzidis2011-02-281-0/+2
| | | | | | | | | A checker can register as receiver/listener of "events" (basically it registers a callback with a function getting called with an argument of the event type) and other checkers can register as "dispatchers" and can pass an event object to all the listeners. This allows cooperation amongst checkers but with very loose coupling. llvm-svn: 126658
* [analyzer] Run AST checkers for ObjCMethodDecls.Argyrios Kyrtzidis2011-02-281-0/+2
| | | | llvm-svn: 126657
OpenPOWER on IntegriCloud