summaryrefslogtreecommitdiffstats
path: root/clang/lib/Checker
Commit message (Collapse)AuthorAgeFilesLines
* Add an ivar to SymbolReaper for the current statement, and then stop passing ↵Jordy Rose2010-07-019-27/+24
| | | | | | the current statement around everywhere. Preparation for symbolic extents. llvm-svn: 107422
* ExplodedGraph never uses ASTContext, remove it.Zhongxing Xu2010-07-012-4/+4
| | | | llvm-svn: 107388
* Correctly implement the CheckerVisit optimization introduced in r106884, but ↵Ted Kremenek2010-06-301-1/+1
| | | | | | this time actually used the cached checker list when calling back to Checker visit methods. This reduces the analysis time for sqlite3.c by 8%. llvm-svn: 107259
* Pointers casted as integers still count as locations to SimpleSValuator, so ↵Jordy Rose2010-06-301-1/+6
| | | | | | don't crash if we do a funny thing like ((int)ptr)&1. Fixes PR7527. llvm-svn: 107236
* Tweaker Checker::VisitEndAnalysis to have 'hasWorkRemaining' alsoTed Kremenek2010-06-291-2/+5
| | | | | | | be true if some paths were aborted because they exceeded the maximum loop unrolling count. llvm-svn: 107209
* llvm::errs() is non-buffered, so it doesn't need to be flushed.Dan Gohman2010-06-281-2/+2
| | | | llvm-svn: 107012
* Pointer comparisons (and pointer-pointer subtraction). Basically filling in ↵Jordy Rose2010-06-283-58/+322
| | | | | | SimpleSValuator::EvalBinOpLL(). llvm-svn: 106992
* Implicitly compare symbolic expressions to zero when they're being used as ↵Jordy Rose2010-06-271-3/+7
| | | | | | constraints. Part of PR7491. llvm-svn: 106972
* Allow '__extension__' to be analyzed in a lvalue context.Ted Kremenek2010-06-261-2/+6
| | | | llvm-svn: 106964
* Relax assertion since non-pod C++ classes are not aggregates, but still can ↵Ted Kremenek2010-06-251-4/+9
| | | | | | appear in this context. llvm-svn: 106919
* When a constant size array is casted to another type, its length should be ↵Jordy Rose2010-06-251-4/+9
| | | | | | scaled as well. llvm-svn: 106911
* Add "checker caching" to GRExprEngine::CheckerVisit to progressively buildTed Kremenek2010-06-251-3/+51
| | | | | | | | | | | | a winowed list of checkers that actually do something for a given StmtClass. As the number of checkers grows, this may potentially significantly reduce the number of checkers called at any one time. My own measurements show that for the ~20 registered Checker objects, only ~5 of them respond at any one time to a give statement. While this isn't a net performance win right now (there is a minor slowdown on sqlite.3) this improvement does greatly improve debugging when stepping through the checkers used to evaluate a given statement. llvm-svn: 106884
* Fix -analyze-display-progress (once again), this time with an additional ↵Ted Kremenek2010-06-251-5/+4
| | | | | | regression test. llvm-svn: 106883
* Change RegionStoreManager::Retrieve to infer the type of a symbolic region ↵Tom Care2010-06-251-1/+6
| | | | | | from the context when it is not already available. llvm-svn: 106868
* Return null pointer instead of 'false' (fixes clang warning).Ted Kremenek2010-06-241-1/+1
| | | | llvm-svn: 106755
* Add check for illegal whence argument of fseek.Zhongxing Xu2010-06-241-3/+28
| | | | llvm-svn: 106742
* Should return stateNotNull.Zhongxing Xu2010-06-241-1/+1
| | | | llvm-svn: 106741
* Let StreamChecker::CheckNullStream() return a GRState after successful check.Zhongxing Xu2010-06-241-15/+16
| | | | llvm-svn: 106738
* Add 'VisitEndAnalysis' callback to Checker class. This callback is called ↵Ted Kremenek2010-06-232-0/+8
| | | | | | | | | by GRExprEngine when the worklist algorithm has terminated. This allows some checkers to do a post-analysis phase after all paths have been analyzed. llvm-svn: 106689
* add comments.Zhongxing Xu2010-06-231-1/+5
| | | | llvm-svn: 106617
* add comments.Zhongxing Xu2010-06-231-1/+3
| | | | llvm-svn: 106616
* Correctly construct an ElementRegion for alloca() + pointer arithmetic. ↵Ted Kremenek2010-06-221-2/+1
| | | | | | | | Fixes analyzer crash reported in PR 7450. llvm-svn: 106609
* Type Type::isRealFloatingType() that vectors are not floating-pointDouglas Gregor2010-06-221-2/+2
| | | | | | | | | types, updating callers of both isFloatingType() and isRealFloatingType() accordingly. Caught at least one issue where we allowed one to declare a vector of vectors (!), along with cleaning up the standard-conversion logic for C++. llvm-svn: 106595
* Don't assert on C++ casts that are currently not handled by the static analyzer.Ted Kremenek2010-06-221-6/+24
| | | | | | | Instead, halt the analysis of the current path, which is what we do in GRExprEngine::ProcessStmt for all other C++ constructs not currently handled by the analyzer. llvm-svn: 106561
* Add a bunch of stream APIs to SteamChecker.Zhongxing Xu2010-06-221-22/+111
| | | | llvm-svn: 106530
* When folding additive operations, convert the values to the same type. When ↵Jordy Rose2010-06-212-26/+44
| | | | | | assuming relationships, convert the integers to the same type as the symbol, at least for now. llvm-svn: 106458
* If a nonnull argument evaluates to UnknownVal, don't warn (and don't crash).Jordy Rose2010-06-211-2/+7
| | | | llvm-svn: 106456
* Add braces to avoid an ambiguous else, fixing a GCC warning.Benjamin Kramer2010-06-201-3/+3
| | | | llvm-svn: 106403
* Adds analyzer support for idempotent and tautological binary operations such ↵Jordy Rose2010-06-201-9/+108
| | | | | | as "a*0" and "a+0". This is not very powerful, but does make the analyzer look a little smarter than it actually is. llvm-svn: 106402
* Casting to void* or any other pointer-to-sizeless type (e.g. function ↵Jordy Rose2010-06-201-0/+5
| | | | | | pointers) causes a divide-by-zero error. Simple fix: check if the pointee type size is 0 and bail out early if it is. llvm-svn: 106401
* Fold additive constants, and support comparsions of the form $sym+const1 <> ↵Jordy Rose2010-06-185-271/+462
| | | | | | const2 llvm-svn: 106339
* introduce a new CharSourceRange class, and enhance the diagnostics routinesChris Lattner2010-06-181-1/+1
| | | | | | | | | | | | | | | to use them instead of SourceRange. CharSourceRange is just a SourceRange plus a bool that indicates whether the range has the end character resolved or whether the end location is the start of the end token. While most of the compiler wants to think of ranges that have ends that are the start of the end token, the printf diagnostic stuff wants to highlight ranges within tokens. This is transparent to the diagnostic stuff. To start taking advantage of the new capabilities, you can do something like this: Diag(..) << CharSourceRange::getCharRange(Begin,End) llvm-svn: 106338
* Add null stream check for more APIs.Zhongxing Xu2010-06-181-16/+70
| | | | llvm-svn: 106274
* Tweak stack address checker to report multiple cases where globals may ↵Ted Kremenek2010-06-171-48/+65
| | | | | | | | reference stack memory. Also refactor the diagnostics so that we print out the kind of stack memory returned. llvm-svn: 106210
* Update CMake build for new attribute changes.Alexis Hunt2010-06-171-1/+2
| | | | llvm-svn: 106188
* Rework StackAddrLeakChecker to find stores of stack memory addresses to ↵Ted Kremenek2010-06-171-39/+56
| | | | | | | | | | | | | | | | global variables by inspecting the Store bindings instead of iterating over all the global variables in a translation unit. By looking at the store directly, we avoid cases where we cannot directly load from the global variable, such as an array (which can result in an assertion failure) and it also catches cases where we store stack addresses to non-scalar globals. Also, but not iterating over all the globals in the translation unit, we maintain cache locality, and the complexity of the checker becomes restricted to the complexity of the analyzed function, and doesn't scale with the size of the translation unit. This fixes PR 7383. llvm-svn: 106184
* Implement RegionStoreManager::iterBindings(). This implementation only ↵Ted Kremenek2010-06-171-6/+11
| | | | | | | | | | returns the base region in the binding key instead of the region + offset. It isn't clear if this is the best semantics, but most clients will likely only care about simple bindings, or bindings to a particular variable. We can refine later if necessary. llvm-svn: 106183
* Correctly return early from BasicStoreManager::iterBindings() when the ↵Ted Kremenek2010-06-171-1/+2
| | | | | | BindingsHandler returns false. llvm-svn: 106182
* We return Loc where we know.Zhongxing Xu2010-06-161-2/+2
| | | | llvm-svn: 106087
* Typo.Zhongxing Xu2010-06-161-1/+1
| | | | llvm-svn: 106086
* Although arguments can not be undefined when we get here, they can still beZhongxing Xu2010-06-161-13/+15
| | | | | | unknown. llvm-svn: 106085
* Cast earlier. We know we can get a DefinedSVal.Zhongxing Xu2010-06-161-3/+3
| | | | llvm-svn: 106084
* Register CallAndMessageChecker before AttrNonNullChecker. Then we can assumeZhongxing Xu2010-06-162-7/+5
| | | | | | arguments are not undefined. llvm-svn: 106083
* Add StreamChecker. This checker models and checks stream manipulation functions.Zhongxing Xu2010-06-164-0/+119
| | | | | | This is the start. llvm-svn: 106082
* Introduce Type::isIntegralOrEnumerationType(), to cover those placesDouglas Gregor2010-06-161-1/+1
| | | | | | | | | | in C++ that involve both integral and enumeration types. Convert all of the callers to Type::isIntegralType() that are meant to work with both integral and enumeration types over to Type::isIntegralOrEnumerationType(), to prepare to eliminate enumeration types as integral types. llvm-svn: 106071
* Break Frontend's dependency on Rewrite, Checker and CodeGen in shared ↵Daniel Dunbar2010-06-155-0/+1662
| | | | | | | | | | | | | | | | | | | | | | | | | | | | library configuration Currently, all AST consumers are located in the Frontend library, meaning that in a shared library configuration, Frontend has a dependency on Rewrite, Checker and CodeGen. This is suboptimal for clients which only wish to make use of the frontend. CodeGen in particular introduces a large number of unwanted dependencies. This patch breaks the dependency by moving all AST consumers with dependencies on Rewrite, Checker and/or CodeGen to their respective libraries. The patch therefore introduces dependencies in the other direction (i.e. from Rewrite, Checker and CodeGen to Frontend). After applying this patch, Clang builds correctly using CMake and shared libraries ("cmake -DBUILD_SHARED_LIBS=ON"). N.B. This patch includes file renames which are indicated in the patch body. Changes in this revision of the patch: - Fixed some copy-paste mistakes in the header files - Modified certain aspects of the coding to comply with the LLVM Coding Standards llvm-svn: 106010
* Remove an entry for a now deleted file. Fixes the neglected CMake build. ;]Chandler Carruth2010-06-091-1/+0
| | | | llvm-svn: 105708
* Merge StackAddrLeakChecker and ReturnStackAddressChecker.Zhongxing Xu2010-06-095-133/+90
| | | | llvm-svn: 105687
* Directly compare the StackFrameContext. This greatly simplifies logic andZhongxing Xu2010-06-091-30/+23
| | | | | | improves generality. Thanks Ted. llvm-svn: 105686
* Code cleanup: remove explicit flush() in favor of using the ostream's str()Jordy Rose2010-06-081-2/+1
| | | | llvm-svn: 105657
OpenPOWER on IntegriCloud