summaryrefslogtreecommitdiffstats
path: root/clang/lib/Checker
Commit message (Collapse)AuthorAgeFilesLines
...
* 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
* Makefiles: Set Clang CPP compiler flags in a single location, instead of ↵Daniel Dunbar2010-06-081-2/+0
| | | | | | scattered throughout the project Makefiles. llvm-svn: 105638
* Makefile: Switch Clang Makefiles to always include the top-level Clang Makefile.Daniel Dunbar2010-06-081-2/+2
| | | | | | - This eliminates most dependencies on how Clang is installed relative to LLVM. llvm-svn: 105637
* Add a checker check if a global variable holds a local variable's address afterZhongxing Xu2010-06-084-0/+97
| | | | | | the function call is left where the local variable is declared. llvm-svn: 105602
* Catch free()s on non-regions and regions known to be not from malloc(), by ↵Jordy Rose2010-06-071-5/+180
| | | | | | checking the symbol type and memory space. llvm-svn: 105547
* Add comments.Zhongxing Xu2010-06-031-1/+2
| | | | llvm-svn: 105382
* Limit the use of BindDefault().Zhongxing Xu2010-06-011-1/+5
| | | | llvm-svn: 105265
* Add support for calloc() in MallocChecker. Patch by Jordy Rose, with my Zhongxing Xu2010-06-012-10/+49
| | | | | | modification. llvm-svn: 105264
* After conversations with Zhongxing Xu and Jordy Rose, refine the logic inTed Kremenek2010-05-311-19/+25
| | | | | | | | | RegionStoreManager::RetrieveElement() that handles indexing into a larger scalar object to only consult the direct binding of a super region if it is a scalar. This isn't perfect yet, and a big FIXME is attached to the code. This causes the test case for PR 7218 now to pass. llvm-svn: 105195
* Refactor the Is{Std,Clang,LLVM}Namespace methods and rename 'isClangAttr' toNick Lewycky2010-05-301-35/+13
| | | | | | 'IsClangAttr' to match prevailing style in this file. Patch by Jon Mulder! llvm-svn: 105170
* Convert DeclNodes to use TableGen.Alexis Hunt2010-05-301-1/+1
| | | | | | | | The macros required for DeclNodes use have changed to match the use of StmtNodes. The FooFirst enumerator constants have been named firstFoo to match usage elsewhere. llvm-svn: 105165
* Revert r105097. Thinking about a better fix.Zhongxing Xu2010-05-291-18/+5
| | | | llvm-svn: 105099
* Fix PR7218. Patch by Jordy Rose.Zhongxing Xu2010-05-291-3/+17
| | | | llvm-svn: 105097
* Discard qualifiers for ElementRegions so that a 'const' doesn't change the ↵Ted Kremenek2010-05-271-1/+1
| | | | | | | | lookup semantics in the symbol store. We may wish to push this down into the StoreManager itself. llvm-svn: 104788
* Small fix.Zhongxing Xu2010-05-261-1/+1
| | | | llvm-svn: 104669
* Remove extents of dead symbolic regions when RemoveDeadBindings.Zhongxing Xu2010-05-264-16/+25
| | | | | | This requires creating new persistent states due to the nature of GDM. llvm-svn: 104668
* CastSizeChecker checks when casting a malloc'ed symbolic region to type T,Zhongxing Xu2010-05-255-8/+98
| | | | | | | whether the size of the symbolic region is a multiple of the size of T. Fixes PR6123 and PR7217. llvm-svn: 104584
* Update retain-release checker to understand changes to how 'super' is ↵Ted Kremenek2010-05-211-7/+51
| | | | | | | | represented in the ASTs. Fixes <rdar://problem/8015556>. llvm-svn: 104389
* Pass around an error SourceRange instead of an Expr* when reporting errorsTed Kremenek2010-05-211-10/+10
| | | | | | in the Objective-C memory checker. llvm-svn: 104388
* Add clang support for IBOutletCollection.Ted Kremenek2010-05-192-2/+4
| | | | llvm-svn: 104135
* Add option '-analyzer-max-loop', which specifies the maximum Zhongxing Xu2010-05-181-2/+1
| | | | | | number of times the analyzer will go through a loop. llvm-svn: 104007
* Clean up some more uses of getAs<ObjCInterfaceType>() that Fariborz pointedJohn McCall2010-05-172-4/+4
| | | | | | out. The remaining ones are okay. llvm-svn: 103973
* Substantially alter the design of the Objective C type AST by introducingJohn McCall2010-05-152-3/+4
| | | | | | | | | | | | | | | | | | | | | ObjCObjectType, which is basically just a pair of one of {primitive-id, primitive-Class, user-defined @class} with a list of protocols. An ObjCObjectPointerType is therefore just a pointer which always points to one of these types (possibly sugared). ObjCInterfaceType is now just a kind of ObjCObjectType which happens to not carry any protocols. Alter a rather large number of use sites to use ObjCObjectType instead of ObjCInterfaceType. Store an ObjCInterfaceType as a pointer on the decl rather than hashing them in a FoldingSet. Remove some number of methods that are no longer used, at least after this patch. By simplifying ObjCObjectPointerType, we are now able to easily remove and apply pointers to Objective-C types, which is crucial for a certain kind of ObjC++ metaprogramming common in WebKit. llvm-svn: 103870
* Relax an assertion. Various cases could lead to non-symbol values.Zhongxing Xu2010-05-131-1/+4
| | | | llvm-svn: 103707
* Merged Elaborated and QualifiedName types.Abramo Bagnara2010-05-111-1/+1
| | | | llvm-svn: 103517
* Fixes for compilation with Microsoft Visual Studio 2010, from Steven Watanabe!Douglas Gregor2010-05-111-1/+1
| | | | llvm-svn: 103458
* Turn -analyzer-inline-call on for C functions. This also fixed a bug thatZhongxing Xu2010-05-061-0/+26
| | | | | | after inlining post-call checking shouldn't be done. llvm-svn: 103161
* Make -analyzer-inline-call not a separate analysis. Instead it's a boolean Zhongxing Xu2010-05-061-2/+2
| | | | | | | flag now, and can be used with other analyses. Only turned it on for C++ methods for now. llvm-svn: 103160
* Unbreak CMake build.Douglas Gregor2010-05-051-0/+2
| | | | llvm-svn: 103077
* Completely reimplement __builtin_offsetof, based on a patch by RobertoDouglas Gregor2010-04-281-9/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Amadini. This change introduces a new expression node type, OffsetOfExpr, that describes __builtin_offsetof. Previously, __builtin_offsetof was implemented using a unary operator whose subexpression involved various synthesized array-subscript and member-reference expressions, which was ugly and made it very hard to instantiate as a template. OffsetOfExpr represents the AST more faithfully, with proper type source information and a more compact representation. OffsetOfExpr also has support for dependent __builtin_offsetof expressions; it can be value-dependent, but will never be type-dependent (like sizeof or alignof). This commit introduces template instantiation for __builtin_offsetof as well. There are two major caveats to this patch: 1) CodeGen cannot handle the case where __builtin_offsetof is not a constant expression, so it produces an error. So, to avoid regressing in C, we retain the old UnaryOperator-based __builtin_offsetof implementation in C while using the shiny new OffsetOfExpr implementation in C++. The old implementation can go away once we have proper CodeGen support for this case, which we expect won't cause much trouble in C++. 2) __builtin_offsetof doesn't work well with non-POD class types, particularly when the designated field is found within a base class. I will address this in a subsequent patch. Fixes PR5880 and a bunch of assertions when building Boost.Python tests. llvm-svn: 102542
* Introduce Type::isStructureOrClassType(), which does the obviousDouglas Gregor2010-04-265-14/+12
| | | | | | | | thing. Audit all uses of Type::isStructure(), changing those calls to isStructureOrClassType() as needed (which is alsmost everywhere). Fixes the remaining failure in Boost.Utility/Swap. llvm-svn: 102386
* CXXNamedCastExpr is actually an abstract expression.Zhongxing Xu2010-04-211-1/+0
| | | | llvm-svn: 101994
* Use the right predecessor.Zhongxing Xu2010-04-211-1/+1
| | | | llvm-svn: 101981
* Add initial support for C++ delete expr.Zhongxing Xu2010-04-212-2/+17
| | | | llvm-svn: 101980
OpenPOWER on IntegriCloud