aboutsummaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2009-07-14Introduce redecl_iterator, used for iterating over the redeclarations of a ↵Argyrios Kyrtzidis
FunctionDecl or VarDecl. It iterates over all the redeclarations, regardless of the starting point. For example: 1) int f(); 2) int f(); 3) int f(); if you have the (2) FunctionDecl and call redecls_begin/redecls_end to iterate, you'll get this sequence: (2) (1) (3) The motivation to introduce this was that, previously, if (3) was a function definition, and you called getBody() at (2), it would not return it, since getBody() iterated over the previous declarations only, so it would only check (2) and (1). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75604 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-14Introduce FunctionDecl::getLatestDeclaration() and ↵Argyrios Kyrtzidis
VarDecl::getLatestDeclaration(). For multiple redeclarations they return the last one. Also, add some non const versions of methods. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75603 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-14Introduce FunctionDecl::getFirstDeclaration() and ↵Argyrios Kyrtzidis
VarDecl::getFirstDeclaration(). For multiple redeclarations they return the first one. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75602 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-14For C++ overloaded operator calls, set the source location of the ↵Argyrios Kyrtzidis
DeclRefExpr to the location of the operator. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75600 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-14Read/write a CXXOperatorCallExpr from/to PCH files.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75598 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-14Fixes for a couple of things:Argyrios Kyrtzidis
- Declaration context of ParmVarDecls (that we got from the Declarator) was not their containing function. - C++ out-of-line method definitions didn't get an access specifier. Both were exposed by a crash when emitting a C++ method to a PCH file (assert at Decl::CheckAccessDeclContext()). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75597 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-14In ResolveLocationInAST, handle locations that are inside TagDecl definitions.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75594 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-14In DeclReferenceMap, map FieldDecls to the MemberExprs that reference them.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75593 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-14Read/write TagDecl's RBraceLoc from/to PCH files.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75592 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-14Pass the right brace SourceLocation from the Parser to the TagDecls.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75591 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-14Add the SourceLocation for the right brace in TagDecl.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75590 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-14Use LLVM mangler to get mangled name for debug info entry.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75589 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-14Update debug info generation for ObjCObjectPointer changes.Daniel Dunbar
- Previously this would crash on recursive types, and it was also incorrectly stripping off a level of indirection. - I'm not 100% convinced this is all correct, but it should be a monotonic improvment. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75582 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-14Instead of recovering from a wrong invalidation, this patch aims to Zhongxing Xu
invalidate the region correctly. It uses the cast-to type to invalidate the region when available. To avoid invalid cast-to type like 'void*' or 'id', region store now only records non-generic casts of regions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75580 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-14Add basic checking for passing NULL to CFRetain/CFRelease, since those functionsTed Kremenek
are not explicitly marked as not accepting NULL pointers. This check illustrates how we need more refactoring in the custom-check logic. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75570 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-14Update for API change.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75569 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-13Tidy pretty-printing for SVals, using 'dump()' instead of 'printStdErr()', ↵Ted Kremenek
and implementing operator<< support for llvm::raw_ostream. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75560 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-13When pretty-printing symbolic regions, use '{' ... '}' to indicate the ↵Ted Kremenek
symbol used for the region (makes it easier to read for nested regions). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75550 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-13Fixes a minor bug in pretty printing of ctor defs.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75549 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-13Change pretty-printing API for SymExprs and MemRegions to use a naming ↵Ted Kremenek
convention and style similar to other elements in Clang. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75548 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-13Enhance SimpleSValuator::EvalBinOpNN to recognize the trivial caseTed Kremenek
where we are comparing a symbolic value against itself, regardless of the nature of that symbolic value. This enhancement identified a case where RegionStoreManager is not correctly symbolicating the values of the pointees of parameters. The failing test is now in 'test/Analysis/misc-ps-region-store.m', with that test file now (temporarily) marked XFAIL. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75521 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-13Explicitly initialize the options array, MinGW's gcc 4.3.5 appears to have a bugDaniel Dunbar
in array value-initialization. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75518 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-13There is no need to value initialize this array.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75517 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-13Remove superfluous call to getAsPointerType()...Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75509 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-13Sema::CheckAdditionOperands(): Use Type::getPointeeType() and remove PTy and ↵Steve Naroff
OPT variables. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75505 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-13add netbsd support, patch by Krister Kalfridsson!Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75492 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-13Added pretty-printing support for constructor definition.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75487 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-13- Improve comment for Type::getPointeeType().Steve Naroff
- Remove a couple redundant casts/returns. - Fix 80 column violations for all getAsStringInternal() methods. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75485 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-13Fix 5 issues from Chris's feedback on ↵Steve Naroff
http://llvm.org/viewvc/llvm-project?view=rev&revision=75314. Still more to come...just wanted to get the no-brainers out of the way. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75477 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-13Update debug info type cache after fwd decl is replaced by real decl.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75473 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-13Fix comment.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75471 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-13Update for LLVM API change.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75446 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-13minor cleanups, reduce nesting of if's with early return.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75442 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-12fix file headers.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75437 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-12add push/pop semantics for diagnostics. Patch by Louis Gerbarg!Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75431 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-11Fix type conversion of ObjCObjectPointerType.Daniel Dunbar
- Previous code was based on a misunderstanding (on my part) of the type representation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75385 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-11Generate correct prototype for objc_enumerationMutation.Daniel Dunbar
- This was a latent bug exposed by the recent objc type changes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75383 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-11Fix breakage on Windows, cannot redeclare loop variable i in the immediate ↵Alisdair Meredith
scope of loop. Rename variable to j. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75365 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-11Handle insidious corner case exposed by RegionStoreManager when handling ↵Ted Kremenek
void* values that are bound to symbolic regions and then treated like integers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75356 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-11Restructure RegionStoreManager::EvalBinOp() as a switch dispatch over differentTed Kremenek
MemRegion kinds. This allows the compiler to identify what MemRegions we don't handle for pointer arithmetic. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75326 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-11Fix typo (found by gcc warning).Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75325 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-11Implement more of C++0x 'auto'. A variable with an auto type specifier must ↵Anders Carlsson
have an initializer. Also, move some tests around to match the C++0x draft better. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75322 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-11Fix warning when compiling with optimizations:Ted Kremenek
warning: ‘OPT’ may be used uninitialized in this function Now OPT is initialized to NULL. I'm not certain if this is the correct fix; others please review. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75321 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-10Remove some unused code from an experiment that I didn't like.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75315 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-10This patch includes a conceptually simple, but very intrusive/pervasive change. Steve Naroff
The idea is to segregate Objective-C "object" pointers from general C pointers (utilizing the recently added ObjCObjectPointerType). The fun starts in Sema::GetTypeForDeclarator(), where "SomeInterface *" is now represented by a single AST node (rather than a PointerType whose Pointee is an ObjCInterfaceType). Since a significant amount of code assumed ObjC object pointers where based on C pointers/structs, this patch is very tedious. It should also explain why it is hard to accomplish this in smaller, self-contained patches. This patch does most of the "heavy lifting" related to moving from PointerType->ObjCObjectPointerType. It doesn't include all potential "cleanups". The good news is additional cleanups can be done later (some are noted in the code). This patch is so large that I didn't want to include any changes that are purely aesthetic. By making the ObjC types truly built-in, they are much easier to work with (and require fewer "hacks"). For example, there is no need for ASTContext::isObjCIdStructType() or ASTContext::isObjCClassStructType()! We believe this change (and the follow-up cleanups) will pay dividends over time. Given the amount of code change, I do expect some fallout from this change (though it does pass all of the clang tests). If you notice any problems, please let us know asap! Thanks. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75314 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-10Restructure RegionStoreManager::getSizeInElements() to use a switch statementTed Kremenek
over the types of MemRegions. This allows the compiler to warn us which regions are not handled, and also is a little faster. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75304 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-10Fix type of 'this' and add a decltype test.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75291 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-10Revert r75281 and simply remove the assertion in NewCastRegion thatTed Kremenek
CodeTextRegions can only be casted to FunctionPointer or BlockPointerTypes. This simply isn't true. We can handle bogus operations on CodeTextRegions (e.g, an array access) elsewhere. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75285 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-10Fix crash in StoreManager::NewCastRegion regarding handling casts to void*,Ted Kremenek
void**, void***, etc. Such casts should just pass the region through. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75281 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-10Patch to build list of inherited virtual base classes Fariborz Jahanian
in their order of construction for each class and use it to to check on propery order of base class construction under -Wreorder option. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75270 91177308-0d34-0410-b5e6-96231b3b80d8