- May 27, 2010
-
-
Ted Kremenek authored
in the symbol store. We may wish to push this down into the StoreManager itself. llvm-svn: 104788
-
- May 26, 2010
-
-
Zhongxing Xu authored
llvm-svn: 104669
-
Zhongxing Xu authored
This requires creating new persistent states due to the nature of GDM. llvm-svn: 104668
-
- May 25, 2010
-
-
Zhongxing Xu authored
whether the size of the symbolic region is a multiple of the size of T. Fixes PR6123 and PR7217. llvm-svn: 104584
-
- May 21, 2010
-
-
Ted Kremenek authored
in the ASTs. Fixes <rdar://problem/8015556>. llvm-svn: 104389
-
Ted Kremenek authored
in the Objective-C memory checker. llvm-svn: 104388
-
- May 19, 2010
-
-
Ted Kremenek authored
llvm-svn: 104135
-
- May 18, 2010
-
-
Zhongxing Xu authored
number of times the analyzer will go through a loop. llvm-svn: 104007
-
- May 17, 2010
-
-
John McCall authored
out. The remaining ones are okay. llvm-svn: 103973
-
- May 15, 2010
-
-
John McCall authored
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
-
- May 13, 2010
-
-
Zhongxing Xu authored
llvm-svn: 103707
-
- May 11, 2010
-
-
Abramo Bagnara authored
llvm-svn: 103517
-
Douglas Gregor authored
llvm-svn: 103458
-
- May 06, 2010
-
-
Zhongxing Xu authored
after inlining post-call checking shouldn't be done. llvm-svn: 103161
-
Zhongxing Xu authored
flag now, and can be used with other analyses. Only turned it on for C++ methods for now. llvm-svn: 103160
-
- May 05, 2010
-
-
Douglas Gregor authored
llvm-svn: 103077
-
- Apr 29, 2010
-
-
Douglas Gregor authored
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
-
- Apr 26, 2010
-
-
Douglas Gregor authored
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
-
- Apr 21, 2010
-
-
Zhongxing Xu authored
llvm-svn: 101994
-
Zhongxing Xu authored
llvm-svn: 101981
-
Zhongxing Xu authored
llvm-svn: 101980
-
Douglas Gregor authored
expressions, to improve source-location information, clarify the actual receiver of the message, and pave the way for proper C++ support. The ObjCMessageExpr node represents four different kinds of message sends in a single AST node: 1) Send to a object instance described by an expression (e.g., [x method:5]) 2) Send to a class described by the class name (e.g., [NSString method:5]) 3) Send to a superclass class (e.g, [super method:5] in class method) 4) Send to a superclass instance (e.g., [super method:5] in instance method) Previously these four cases where tangled together. Now, they have more distinct representations. Specific changes: 1) Unchanged; the object instance is represented by an Expr*. 2) Previously stored the ObjCInterfaceDecl* referring to the class receiving the message. Now stores a TypeSourceInfo* so that we know how the class was spelled. This both maintains typedef information and opens the door for more complicated C++ types (e.g., dependent types). There was an alternative, unused representation of these sends by naming the class via an IdentifierInfo *. In practice, we either had an ObjCInterfaceDecl *, from which we would get the IdentifierInfo *, or we fell into the case below... 3) Previously represented by a class message whose IdentifierInfo * referred to "super". Sema and CodeGen would use isStr("super") to determine if they had a send to super. Now represented as a "class super" send, where we have both the location of the "super" keyword and the ObjCInterfaceDecl* of the superclass we're targetting (statically). 4) Previously represented by an instance message whose receiver is a an ObjCSuperExpr, which Sema and CodeGen would check for via isa<ObjCSuperExpr>(). Now represented as an "instance super" send, where we have both the location of the "super" keyword and the ObjCInterfaceDecl* of the superclass we're targetting (statically). Note that ObjCSuperExpr only has one remaining use in the AST, which is for "super.prop" references. The new representation of ObjCMessageExpr is 2 pointers smaller than the old one, since it combines more storage. It also eliminates a leak when we loaded message-send expressions from a precompiled header. The representation also feels much cleaner to me; comments welcome! This patch attempts to maintain the same semantics we previously had with Objective-C message sends. In several places, there are massive changes that boil down to simply replacing a nested-if structure such as: if (message has a receiver expression) { // instance message if (isa<ObjCSuperExpr>(...)) { // send to super } else { // send to an object } } else { // class message if (name->isStr("super")) { // class send to super } else { // send to class } } with a switch switch (E->getReceiverKind()) { case ObjCMessageExpr::SuperInstance: ... case ObjCMessageExpr::Instance: ... case ObjCMessageExpr::SuperClass: ... case ObjCMessageExpr::Class:... } There are quite a few places (particularly in the checkers) where send-to-super is effectively ignored. I've placed FIXMEs in most of them, and attempted to address send-to-super in a reasonable way. This could use some review. llvm-svn: 101972
-
- Apr 20, 2010
-
-
Zhongxing Xu authored
llvm-svn: 101876
-
Zhongxing Xu authored
llvm-svn: 101867
-
Zhongxing Xu authored
llvm-svn: 101862
-
- Apr 19, 2010
-
-
Dan Gohman authored
llvm-svn: 101786
-
Zhongxing Xu authored
llvm-svn: 101772
-
Zhongxing Xu authored
llvm-svn: 101771
-
- Apr 17, 2010
-
-
Benjamin Kramer authored
Add raw_ostream operators to NamedDecl for convenience. Switch over all users of getNameAsString on a stream. The next step is to print the name directly into the stream, avoiding a temporary std::string copy. llvm-svn: 101632
-
- Apr 16, 2010
-
-
Ted Kremenek authored
llvm-svn: 101499
-
- Apr 15, 2010
-
-
Ted Kremenek authored
case in GRExprEngine::Visit (in r101129). Instead, enumerate all Stmt cases and have no 'default' case in the switch statement. When we encounter a Stmt we don't handle, we should explicitly add it to the switch statement. llvm-svn: 101378
-
- Apr 14, 2010
-
-
Zhongxing Xu authored
llvm-svn: 101239
-
Zhongxing Xu authored
llvm-svn: 101238
-
- Apr 13, 2010
-
-
Zhongxing Xu authored
llvm-svn: 101129
-
Zhongxing Xu authored
llvm-svn: 101128
-
- Apr 09, 2010
-
-
Ted Kremenek authored
llvm-svn: 100891
-
Ted Kremenek authored
This is still not an ideal solution, but should disable the check for other targets where the value of O_CREAT is different. llvm-svn: 100818
-
- Apr 08, 2010
-
-
Ted Kremenek authored
looking into an alternate fix right now. llvm-svn: 100816
-
Ted Kremenek authored
automatic storage. This matches the corresponding check for 'dispatch_once()'. llvm-svn: 100803
-
- Apr 07, 2010
-
-
Ted Kremenek authored
llvm-svn: 100594
-