aboutsummaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2010-07-07Introduce Decl::hasBody() and FunctionDecl::hasBody() and use them instead ↵Argyrios Kyrtzidis
of getBody() when we are just checking the existence of a body, to avoid de-serialization of the body from PCH. Makes de-serialization of the function body even more "lazier". git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107768 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-07Add memcmp() and bcmp() to CStringChecker. These check for valid access to ↵Jordy Rose
the buffer arguments and have a special-case for when the buffer arguments are known to be the same address, or when the size is zero. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107761 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-07Cleanup on CStringChecker and its associated tests. Also check for null ↵Jordy Rose
arguments...which are allowed if the access length is 0! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107759 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-07Teach function-try-blocks on constructors and destructors to implicitlyJohn McCall
rethrow. Fixes rdar://problem/7696603 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107757 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-07implement PR7569, warning about assignment to null, which Chris Lattner
people seem to write when they want a deterministic trap. Suggest instead that they use a volatile pointer or __builtin_trap. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107756 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-07Don't consider casted non-global pointers to be evaluatable.John McCall
Fixes rdar://problem/8154689 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107755 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-07Change explicit handling of impossible condition to call llvm_unreachable in ↵Tom Care
IdempotentOperationChecker::PreVisitBinaryOperator. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107748 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-07Silence an annoying GCC warning about use of an uninitialized variable. EvenChandler Carruth
making the other switch case unreachable, or sinking the 'continue' into it doesn't silence this. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107745 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-07Use 'llvm_unreachable' to mark impossible code paths so that GCC doesn'tChandler Carruth
consider them for warnings. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107741 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06Provide a hook for the benefit of clients using clang IR gen as a subroutine:John McCall
emit metadata associating allocas and global values with a Decl*. This feature is controlled by an option that (intentionally) cannot be enabled on the command line. To use this feature, simply set CodeGenOptions.EmitDeclMetadata = true; and then interpret the completely underspecified metadata. :) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107739 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06Fix casts in RegionStore to not always assume that bindings are only to ↵Ted Kremenek
SubRegions. Fixes assertion failure reported in PR 7572. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107738 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06Implement dumpToStream() for NonStaticGlobalSpaceRegion and ↵Ted Kremenek
StaticGlobalSpaceRegion. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107731 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06Add comment noting VLASizeChecker's duty in defining a VLA's extent.Jordy Rose
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107728 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06Add a new path-sensitive checker for functions in <string.h>, for both ↵Jordy Rose
null-terminated strings and memory blocks. Currently only checks memcpy(), memmove(), and bcopy(), but this is intended to be expanded soon. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107722 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06Sort CMake file.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107709 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06Added a path-sensitive idempotent operation checker ↵Tom Care
(-analyzer-idempotent-operation). Finds idempotent and/or tautological operations in a path sensitive context, flagging operations that have no effect or a predictable effect. Example: { int a = 1; int b = 5; int c = b / a; // a is 1 on all paths } - New IdempotentOperationChecker class - Moved recursive Stmt functions in r107675 to IdempotentOperationChecker - Minor refactoring of SVal to allow checking for any integer - Added command line option for check - Added basic test cases git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107706 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06Fix multiple emission of the this-> fixit for each instantiation by fixing theNick Lewycky
AST during the instantiation. Fixes PR7417! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107690 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06Make CGBuilderTy a typedef again; its functionality has been rolled backJohn McCall
into IRBuilder. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107687 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06Improve the accuracy of getSourceRange() for DeclaratorDecl andDouglas Gregor
TagDecl subclasses when out-of-line template declaration information is available, from Peter Collingbourne! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107686 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06Correctly set the location of the "template" keyword for a classDouglas Gregor
template specialization, from Peter Collingbourne. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107682 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06Remove my egregious hack that forced deserialization of visibleDouglas Gregor
declarations when implicitly declaring the default constructor, copy constructor, destructor, and copy-assignment operators of a class. Argiris fixed the underlying problem in r107596. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107681 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06Pacify versions of gcc that think these variables may be usedDuncan Sands
uninitialized (which doesn't seem to be the case), by giving them arbitrary initial values. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107679 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06When destroying a cleanup, kill any references to instructions in the entryJohn McCall
block before deleting it. Fixes PR7575. This really just a short-term fix before implementing lazy cleanups. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107676 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06Added several helper functions to Stmt to recursively check for different ↵Tom Care
elements (macros, enum constants, etc). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107675 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06Read/write function template specializations for PCH, properly this time.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107665 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06Add to PCH missing Sema information about VTable uses and dynamic classes.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107664 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06Allow a CXXRecordDecl to get a DefinitionData pointer even when its owner is ↵Argyrios Kyrtzidis
still initializing. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107663 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06Read/write instantiated-from-member of EnumDecl for PCH.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107662 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06Add an assertion.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107645 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06Collect function definitions in the Indexer when indexing through the ASTs.Zhongxing Xu
Add an API to get an Entity associated with a name in the global namespace. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107642 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06When creating functions to run global initializers and destructors, mark themJohn McCall
as nounwind in -fno-exceptions. Fixes rdar://problem/8090834. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107639 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06Remove the now-unused GRState::isEqual method. Instead of asking if an ↵Jordy Rose
expression equals a certain value, use SValuator::EvalEQ and GRState::Assume to see if it can, must, or must not equal that value. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107638 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06Improve NULL-checking for CFRetain/CFRelease. We now remember that the ↵Jordy Rose
argument was non-NULL, and we report where the null assumption came from (like AttrNonNullChecker already did). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107633 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06Validated by nightly-test runs on x86 and x86-64 darwin, including afterJohn McCall
self-host. Hopefully these results hold up on different platforms. I tried to keep the GNU ObjC runtime happy, but it's hard for me to test. Reimplement how clang generates IR for exceptions. Instead of creating new invoke destinations which sequentially chain to the previous destination, push a more semantic representation of *why* we need the cleanup/catch/filter behavior, then collect that information into a single landing pad upon request. Also reorganizes how normal cleanups (i.e. cleanups triggered by non-exceptional control flow) are generated, since it's actually fairly closely tied in with the former. Remove the need to track which cleanup scope a block is associated with. Document a lot of previously poorly-understood (by me, at least) behavior. The new framework implements the Horrible Hack (tm), which requires every landing pad to have a catch-all so that inlining will work. Clang no longer requires the Horrible Hack just to make exceptions flow correctly within a function, however. The HH is an unfortunate requirement of LLVM's EH IR. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107631 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06Local variables have no linkage, make invalid Entities.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107630 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-05Generate fewer first class aggregate values for otherChris Lattner
coerce cases (e.g. {double,int}) which avoids fastisel bailing out at -O0. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107628 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-05in the "coerce" case, the ABI handling code ends up making theChris Lattner
alloca for an argument. Make sure the argument gets the proper decl alignment, which may be different than the type alignment. This fixes PR7567 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107627 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-05fix a bug I introduced in r107624Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107626 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-05rearrange some logic, no functionality change.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107624 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-05fix PR7564 a cast where the bitfield struct init codeChris Lattner
wasn't handling array padding elements right. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107621 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-05AppendBitField really can never fail, so return its return value. Chris Lattner
Everyone knows that no bugs are ever possible with bitfields. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107620 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-05Read/write the identifier namespace in PCH for decls that may modify it.Argyrios Kyrtzidis
We can now use a PCH'ed <map>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107617 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-05Read/write some source location for PCH.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107616 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-05Support sizeof for VLA expressions (sizeof(someVLA)). sizeof(int[n]) still ↵Jordy Rose
unimplemented. A VLA region's sizeof value matches its extent. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107611 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-05Refrase comments.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107607 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-05Although in C++ class name has external linkage, usually the definition of the Zhongxing Xu
class is available in the same translation unit when it's needed. So we make all of them invalid Entity. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107606 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-05Make FieldDecl an invalid Entity since it has no linkage.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107605 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-05Indexer: make FieldDecl an internal Entity.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107604 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-05Track extents for VLAs.Jordy Rose
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107603 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-04Fix a regression of a previous commit of mine (rdar://8158953).Argyrios Kyrtzidis
Some of the invariant checks for creating Record/Enum types don't hold true during PCH reading. Introduce more suitable ASTContext::getRecordType() and getEnumType(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107598 91177308-0d34-0410-b5e6-96231b3b80d8