|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | just like all other members, and remove the special variables in
CXXRecordDecl to store them. This eliminates a lot of special-case
code for constructors and destructors, including
ActOnConstructor/ActOnDeclarator and special lookup rules in
LookupDecl. The result is far more uniform and manageable.
Diagnose the redeclaration of member functions.
llvm-svn: 61048 | 
| | 
| 
| 
| 
| 
| | ivars.
llvm-svn: 61043 | 
| | 
| 
| 
| 
| 
| | using new/delete.  This speeds up -Eonly on Cocoa.h using the regular lexer by 1.8% and the PTHLexer by 3%.
llvm-svn: 61042 | 
| | 
| 
| 
| | llvm-svn: 61039 | 
| | 
| 
| 
| | llvm-svn: 61038 | 
| | 
| 
| 
| 
| 
| 
| | half-solution; the real solution is coming when constructors and
destructors are treated like all other functions by ActOnDeclarator.
llvm-svn: 61037 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | together in the same way that we link RecordDecl/CXXRecordDecl nodes. 
Unify ActOnTag and ActOnTagStruct.
Fixes PR clang/2753.
llvm-svn: 61034 | 
| | 
| 
| 
| | llvm-svn: 61015 | 
| | 
| 
| 
| | llvm-svn: 61008 | 
| | 
| 
| 
| | llvm-svn: 61007 | 
| | 
| 
| 
| 
| 
| | 'pointer to array'.
llvm-svn: 61003 | 
| | 
| 
| 
| 
| 
| | when a break/continue won't cross a try block.
llvm-svn: 60998 | 
| | 
| 
| 
| 
| 
| | matching the storage layout for this ivar
llvm-svn: 60996 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | - Overhauled the notion of "types" for TypedRegions.  We now distinguish between the "lvalue" of a region (via getLValueRegion()) and the "rvalue" of a region (va getRValueRegion()).  Since a region represents a chunk of memory it has both, but we were conflating these concepts in some cases, leading to some insidious bugs.
- Removed AnonPointeeType, partially because it is unused and because it doesn't have a clear notion of lvalue vs rvalue type.  We can add it back once there is a need for it and we can resolve its role with these concepts.
StoreManager:
- Overhauled StoreManager::CastRegion.  It expects an *lvalue* type for a region.  This is actually what motivated the overhaul to the MemRegion type mechanism.  It also no longer returns an SVal; we can just return a MemRegion*.
- BasicStoreManager::CastRegion now overlays an "AnonTypedRegion" for pointer-pointer casts.  This matches with the MemRegion changes.
- Similar changes to RegionStore, except I've added a bunch of FIXMEs where it wasn't 100% clear where we should use TypedRegion::getRValueRegion() or TypedRegion::getLValueRegion().
AuditCFNumberCreate check:
- Now blasts through AnonTypedRegions that may layer the original memory region, thus checking if the actually memory block is of the appropriate type.  This change was needed to work with the changes to StoreManager::CastRegion.
GRExprEngine::VisitCast:
- Conform to the new interface of StoreManager::CastRegion.
Tests:
- None of the analysis tests fail now for using the "basic store".
- Disabled the tests 'array-struct.c' and 'rdar-6442306-1.m' pending further testing and bug fixing.
llvm-svn: 60995 | 
| | 
| 
| 
| | llvm-svn: 60993 | 
| | 
| 
| 
| 
| 
| | use identifierinfo instead.  Patch by Chris Goller!
llvm-svn: 60992 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | GRExprEngine (VisitCast):
- When using StoreManager::CastRegion, always use the state and value it returns to generate the next node.  Failure to do so means that region values returned that don't require the state to be modified will get ignored.
MemRegion:
- Tighten the interface for ElementRegion.  Now ElementRegion can only be created with a super region that is a 'TypedRegion' instead of any MemRegion.  Code in BasicStoreManager/RegionStoreManager already assumed this, but it would result in a dynamic assertion check (and crash) rather than just having the compiler forbid the construction of such regions.
- Added ElementRegion::getArrayRegion() to return the 'typed version' of an ElementRegion's super region.
- Removed bogus assertion in ElementRegion::getType() that assumed that the super region was an AnonTypedRegion.  All that matters is that it is a TypedRegion, which is now true all the time by design.
BasicStore:
- Modified getLValueElement() to check if the 'array' region is a TypedRegion before creating an ElementRegion.  This conforms to the updated interface for ElementRegion.
RegionStore:
- In ArrayToPointer() gracefully handle things we don't reason about, and only create an ElementRegion if the array region is indeed a TypedRegion.
llvm-svn: 60990 | 
| | 
| 
| 
| | llvm-svn: 60989 | 
| | 
| 
| 
| 
| 
| | Convert a few functions.
llvm-svn: 60983 | 
| | 
| 
| 
| 
| 
| | connection.
llvm-svn: 60982 | 
| | 
| 
| 
| 
| 
| | table used for fast preprocessor block skipping.  This has a minor performance improvement when preprocessing Cocoa.h, but can have some wins in pathologic cases.
llvm-svn: 60966 | 
| | 
| 
| 
| | llvm-svn: 60961 | 
| | 
| 
| 
| 
| 
| | skipped preprocessor blocks.  This improves PTH speed by 6%.  The code for this optimization itself is not very optimized, and will get cleaned up.
llvm-svn: 60956 | 
| | 
| 
| 
| 
| 
| 
| | processing: it allows arbitrary foldable constants as the operand of ?: when
builtin_constant_p is the condition.
llvm-svn: 60954 | 
| | 
| 
| 
| | llvm-svn: 60947 | 
| | 
| 
| 
| | llvm-svn: 60943 | 
| | 
| 
| 
| | llvm-svn: 60942 | 
| | 
| 
| 
| | llvm-svn: 60939 | 
| | 
| 
| 
| | llvm-svn: 60937 | 
| | 
| 
| 
| | llvm-svn: 60935 | 
| | 
| 
| 
| 
| 
| | i-c-e.
llvm-svn: 60934 | 
| | 
| 
| 
| | llvm-svn: 60933 | 
| | 
| 
| 
| | llvm-svn: 60932 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | Substantially improve error recovery after broken if conditions by
parsing the full if when we have a semantic error instead of using
parser recovery techniques to recover from a semantic error.
This fixes rdar://6094870 - spurious error after invalid 'if' condition
llvm-svn: 60929 | 
| | 
| 
| 
| | llvm-svn: 60928 | 
| | 
| 
| 
| 
| 
| | (Saving the stack isn't implemented right now :)
llvm-svn: 60925 | 
| | 
| 
| 
| | llvm-svn: 60924 | 
| | 
| 
| 
| 
| 
| | output that GCC does.  rdar://6440297
llvm-svn: 60922 | 
| | 
| 
| 
| 
| 
| 
| 
| | __PRETTY_FUNCTION__ outside func
Yeah, this is "useful".
llvm-svn: 60921 | 
| | 
| 
| 
| | llvm-svn: 60920 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | the type of the enumeration once the enumeration has been defined.
Fix the overloading test-case to properly create enums that promote
the way we want them to.
Implement C++0x promotions from enumeration types to long
long/unsigned long long. We're using these promotions in Carbon.h
(since long long is a common extension).
Fixes PR clang/2954: http://llvm.org/bugs/show_bug.cgi?id=2954
llvm-svn: 60917 | 
| | 
| 
| 
| 
| 
| 
| | - Added a side-table per each token-cached file with the preprocessor conditional stack.  This tracks what #if's are matched with what #endifs and where their respective tokens are in the PTH file.  This will allow for quick skipping of excluded conditional branches in the Preprocessor.
- Performance testing shows the addition of this information (without actually utilizing it) leads to no performance regressions.
llvm-svn: 60911 | 
| | 
| 
| 
| | llvm-svn: 60906 | 
| | 
| 
| 
| 
| 
| | means to jump ahead in the token stream.
llvm-svn: 60905 | 
| | 
| 
| 
| | llvm-svn: 60904 | 
| | 
| 
| 
| | llvm-svn: 60900 | 
| | 
| 
| 
| | llvm-svn: 60897 | 
| | 
| 
| 
| | llvm-svn: 60896 | 
| | 
| 
| 
| | llvm-svn: 60895 | 
| | 
| 
| 
| | llvm-svn: 60892 |