aboutsummaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2008-04-02Various parts of the standard require something to be an "incomplete or Chris Lattner
object type". Add a predicate that checks exactly this, as it is equivalent to checking ot see if the type is *not* a function type, which is faster to check. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49082 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-021) Enforce C99 6.7.3p2: "Types other than pointer types derived fromChris Lattner
object or incomplete types shall not be restrict-qualified." 2) Warn about qualifiers on function types: C99 6.7.3p8: "If the specification of a function type includes any type qualifiers, the behavior is undefined." 3) Implement restrict on C++ references. 4) fix some locations for various C++ reference diagnostics. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49081 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-02Add a citation.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49080 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-02Fix several bugs in array -> pointer decomposition.Chris Lattner
First, we got several CVR propagation cases wrong, which Eli pointed out in PR2039. Second, we didn't propagate address space qualifiers correctly, leading to incorrect lowering of code in CodeGen/address-space.c. Third, we didn't uniformly propagate the specifier in the array to the pointer ("int[restrict 4]" -> "int *restrict"). This adds an ASTContext::getArrayDecayedType member that handles the non-trivial logic for this seemingly simple operation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49078 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-02Added initial hacked support for display path diagnostics withTed Kremenek
GRSimpleVals warnings. Cleaning up, but now we get multiple bubbles (branches are annotated). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49077 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-02remove blank line.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49075 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-02print cvr qualifiers on simplified typedefsChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49074 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-02rename some variables, fix 80 col violation. No Chris Lattner
functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49072 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-02Fix PR2017 and silence some bogus errors.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49068 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-02Fix a comment typo and add a couple suggestions from Chris.Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49066 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-01Fairly large "cleaup" related to changing ObjCCompatibleAliasDecl superclass ↵Steve Naroff
(to inherit from NamedDecl, instead of ScopedDecl). - Added a DenseMap to associate an IdentifierInfo with the ObjCCompatibleAliasDecl. - Renamed LookupScopedDecl->LookupDecl and changed it's return type to Decl. Also added lookup for ObjCCompatibleAliasDecl's. - Removed Sema::LookupInterfaceDecl(). Converted clients to used LookupDecl(). - Some minor indentation changes. Will deal with ObjCInterfaceDecl and getObjCInterfaceDecl() in a separate commit... git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49058 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-01Patch by Argiris Kirtzidis: Fix a dangling pointer error!Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49057 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-01Update to match simplified llvm MemoryBuffer interfaces for files.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49042 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-01prune dead #includesChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49033 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-01MemoryBuffer::getFile got smarter, obviating the need for readfilefast.Chris Lattner
The new MemoryBuffer doesn't "leak" file descriptors and handles the small file case efficiently. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49032 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-31Better handling for tabs with message bubbles.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49001 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-31Do not prepend the keyword "[CHECKER]" to checker messages when usingTed Kremenek
a PathDiagnosticClient. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48996 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-31Hack ReadFileFast() to raise the threshold of memory mapped files (from ↵Steve Naroff
4->12 pages). This is a temporary solution to avoid running out of file descriptors (which defaults to 256). Need to benchmark to understand the speed benefit. If the benefit is small, the simple solution is to avoid memory mapping files. If the benefit is significant, more thought is necessary. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48991 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-31Include ranges in GRSimpleVals diagnostics.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48990 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-31Inlined clang/Analysis/Analyses/GRSimpleVals.h into LocalCheckers.h and removedTed Kremenek
GRSimpleVals.h Added a PathDiagnosticClient option to the driver functions for the CFRefCountChecker and the GRSimpleVals analysis. Both analyses now accept a "-o" argument from the driver that specifies where HTML reports should be dumped. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48989 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-31Added variation of the "Report" method in the class Diagnostic that takesTed Kremenek
an optional DiagnosticClient argument that differs from the client stored internally in the Diagnostic object. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48986 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-31Added path-sensitive check for return statements that return the addressTed Kremenek
of a stack variable. This is the path-sensitive version of a check that is already done during semantic analysis. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48980 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-31rename Decl::CompatibleAlias -> ObjCCompatibleAlias.Chris Lattner
Fix objc ivar lookup. Ivar lookup should occur between lookup of method-local values and lookup of globals. Emulate this with some logic in the handling of Sema::ActOnIdentifierExpr. Two todo's left: 1) sema shouldn't turn a bare reference to an ivar into "self->ivar" in the AST. This is a hack. 2) The new ScopedDecl::isDefinedOutsideFunctionOrMethod method does not correctly handle typedefs and enum constants yet. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48972 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-30some cleanups on top of David's patch. There are still twoChris Lattner
remaining open issues I've communicated to him: 1) self can be assigned to, and his patch didn't handle it correctly. 2) CollectObjCIvarTypes is N^2 (because each subclass reprocesses all parent class ivars) and flattens classes. If A derives from B, and both have an int, I'd expect to get { {i32}, i32}, not { i32, i32}. David, please review. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48970 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-30Add initial support for objc codegen for methods, ivars, and theChris Lattner
etoile runtime, patch by David Chisnall! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48969 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-28Make sure Sema::ActOnClassMessage() correctly diagnoses "super".Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48924 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-28Added skeleton checking for NSString's method initWithFormat: (do not pass ↵Ted Kremenek
nil). This won't be useful in most cases right now because the analyzer isn't tracking expected types for an object, and [NSString alloc] just runs "id". git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48917 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-27Expanded NSString checking to check for nil for a few more methods.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48898 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-27Add line SourceLocation to NSString checks.Ted Kremenek
Added test case to test warning about passing 'nil' to NSString's compare: method. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48896 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-27Hooked up initial NSString interface checking to GRSimpleVals.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48895 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-27Minor CSS tweaking (smaller h1 tags).Ted Kremenek
Bug fix in EscapeText (for std::string) where spaces were not properly emitted. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48889 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-27Add creation of BasicObjCFoundationChecks when running GRSimpleVals from the ↵Ted Kremenek
driver. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48886 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-27Add html::EscapeText for std::string; use this function to escape text in ↵Ted Kremenek
message bubbles. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48884 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-27Added <h3> tag in HTML file output that contains the name of the source file.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48869 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-27Added "GRAuditor" and "GRSimpleAPICheck" interface to allow simple stateless ↵Ted Kremenek
checkers to be injected into the analyzer. Added "AnnotatedPath" class to record an annotated path that will be useful for inspecting paths. Added some boilerplate code for simple checks of Apple's Foundation API. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48867 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-27PathDiagnosticPiece no longer contains a vector of strings; just one string.Ted Kremenek
PathDiagnostic no longer contains a diagnostic ID or diagnostic level. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48864 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-27Added classes "PathDiagnosticPiece", "PathDiagnostic", and ↵Ted Kremenek
"PathDiagnosticClient", which encapsulate diagnostic reporting for paths. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48861 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-26Bug fix: use GetRVal instead of GetLVal (were getting the value of a ↵Ted Kremenek
DeclRefExpr, not it's address). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48846 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-26Bug fix in transfer function for ObjCMessageExpr: Visit the receiver ↵Ted Kremenek
expression as an ordinary expression, not using VisitLVal. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48842 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-26Alloc redeclaration of typedefs within ExternCSystemHeaderDir's AND ↵Steve Naroff
SystemHeaderDir's. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48841 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-25allow the format attribute to be specified in function pointer prototypesNuno Lopes
# this is my first commit here, so please be gentle :) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48807 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-25Extend QualType::getAddressSpace to do the right thing for array types, and inNate Begeman
the future, RecordTypes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48784 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-25GRSimple analysis now outputs additional diagnostic warnings aboutTed Kremenek
passing an uninitialized value to a message expresion. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48776 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-25Tweak to transfer function for ObjCMessageExpr: handle both instance methodsTed Kremenek
and message expressions with a specified receiver. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48773 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-25Added logic to check for uninitialized values as the receivers for message ↵Ted Kremenek
expressions and uninitialized values passed-by-value as arguments to message expressions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48760 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-25Added initial transfer function support for ObjCMessageExpr.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48757 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-24Minor CSS tweaking: use webkit style CSS properties for shadows/rounded edgesTed Kremenek
for message bubbles. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48754 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-24Avoid overflowing buffer, patch by Algeris Kirtzidis!Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48741 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-22Changed merge operation for uninitialized values analysis to "intersect" ↵Ted Kremenek
(previous union). The effect is that if a variable is uninitialized along a branch (but initialized along another), at merge points it is considered uninitialized. Previously we had the opposite behavior. The new behavior is more conservative, and more in line with gcc's behavior. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48689 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-21Rename "Nodify" to "MakeNode"Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48659 91177308-0d34-0410-b5e6-96231b3b80d8