- Sep 06, 2012
-
-
Richard Smith authored
don't trample over the caller's LookupResult in the case where the check fails. llvm-svn: 163281
-
Anna Zaks authored
As per Jordan's suggestion. (Came out of code review for r163261.) llvm-svn: 163269
-
Jordan Rose authored
...and hopefully unbreak buildbots. My apologies! llvm-svn: 163267
-
Jordan Rose authored
These types are defined differently on 32-bit and 64-bit platforms, and trying to offer a fixit for one platform would only mess up the format string for the other. The Apple-recommended solution is to cast to a type that is known to be large enough and always use that to print the value. This should only have an impact on compile time if the format string is incorrect; in cases where the format string matches the definition on the current platform, no warning will be emitted. <rdar://problem/9135072&12164284> llvm-svn: 163266
-
Jordan Rose authored
No functionality change. llvm-svn: 163265
-
Jordan Rose authored
While destructors will continue to not be inlined (unless the analyzer config option 'c++-inlining' is set to 'destructors'), leaving them out of the CFG is an incomplete model of the behavior of an object, and can cause false positive warnings (like PR13751, now working). Destructors for temporaries are still not on by default, since (a) we haven't actually checked this code to be sure it's fully correct (in particular, we probably need to be very careful with regard to lifetime-extension when a temporary is bound to a reference, C++11 [class.temporary]p5), and (b) ExprEngine doesn't actually do anything when it sees a temporary destructor in the CFG -- not even invalidate the object region. To enable temporary destructors, set the 'cfg-temporary-dtors' analyzer config option to '1'. The old -cfg-add-implicit-dtors cc1 option, which controlled all implicit destructors, has been removed. llvm-svn: 163264
-
Anna Zaks authored
llvm-svn: 163262
-
Anna Zaks authored
If a region is binded to a symbolic value, we should track the symbol. (The code I changed was not previously exercised by the regression tests.) llvm-svn: 163261
-
Anna Zaks authored
This region is set as interesting as part of trackNullOrUndefValue call, no need to mark it as interesting twice. llvm-svn: 163260
-
- Sep 05, 2012
-
-
Eric Christopher authored
Patch by Brooks Davis. llvm-svn: 163249
-
DeLesley Hutchins authored
expression involving temporaries. llvm-svn: 163237
-
Fariborz Jahanian authored
type is an unqualified objc pointer in arc. Treat it just as being treated in c++98. This fixes a bogus vararg warning with -std=c++11. //rdar://12229679 llvm-svn: 163236
-
Chad Rosier authored
llvm-svn: 163232
-
Fariborz Jahanian authored
of a c-function for what it is. Otherwise, this func is treated as an overloadable c-function resulting in a crash much later. // rdar://11743706 llvm-svn: 163224
-
Abramo Bagnara authored
llvm-svn: 163221
-
Jordan Rose authored
The problem is that the value of 'this' in a C++ member function call should always be a region (or NULL). However, if the object is an rvalue, it has no associated region (only a conjured symbol or LazyCompoundVal). For now, we handle this in two ways: 1) Actually respect MaterializeTemporaryExpr. Before, it was relying on CXXConstructExpr to create temporary regions for all struct values. Now it just does the right thing: if the value is not in a temporary region, create one. 2) Have CallEvent recognize the case where its 'this' pointer is a non-region, and just return UnknownVal to keep from confusing clients. The long-term problem is being tracked internally in <rdar://problem/12137950>, but this makes many test cases pass. llvm-svn: 163220
-
Jordan Rose authored
No intended functionality change. llvm-svn: 163219
-
Jordan Rose authored
This turned out to have many implications, but what eventually seemed to make it unworkable was the fact that we can get struct values (as LazyCompoundVals) from other places besides return-by-value function calls; that is, we weren't actually able to "treat all struct values as regions" consistently across the entire analyzer core. Hopefully we'll be able to come up with an alternate solution soon. This reverts r163066 / 02df4f0aef142f00d4637cd851e54da2a123ca8e. llvm-svn: 163218
-
Manuel Klimek authored
Due to DynTypedNode the basic dynamically typed matcher interface can now be simplified. Also switches the traversal interfaces to use DynTypedNode; this is in preperation for the hasAncestor implementation, and also allows us to need fewer changes when we want to add new nodes to traverse, thus making the code a little more decoupled. Main design concerns: I went back towards the original design of getNodeAs to return a pointer, and switched DynTypedNode::get to always return a pointer (in case of value types like QualType the pointer points into the storage of DynTypedNode, thus allowing us to treat all the nodes the same from the point of view of a user of the DynTypedNodes. Adding the QualType implementation for DynTypedNode was needed for the recursive traversal interface changes. llvm-svn: 163212
-
Abramo Bagnara authored
llvm-svn: 163208
-
Abramo Bagnara authored
llvm-svn: 163206
-
Jin-Gu Kang authored
- UnionType is checked eariler than RecordType. llvm-svn: 163202
-
Chad Rosier authored
llvm-svn: 163188
-
Chad Rosier authored
llvm-svn: 163178
-
Ted Kremenek authored
llvm-svn: 163176
-
Chad Rosier authored
implementation does not co-exist well with how the sideeffect and alignstack attributes are handled. llvm-svn: 163173
-
- Sep 04, 2012
-
-
Chad Rosier authored
llvm-svn: 163161
-
Jordan Rose authored
SimpleSValBuilder processes a couple trivial identities, including 'x - x' and 'x ^ x' (both 0). However, the former could appear with arguments of floating-point type, and we weren't checking for that. This started triggering an assert with r163069, which checks that a constant value is actually going to be used as an integer or pointer. llvm-svn: 163159
-
Joao Matos authored
llvm-svn: 163149
-
Joao Matos authored
llvm-svn: 163146
-
Joao Matos authored
llvm-svn: 163145
-
Chad Rosier authored
assume that if the 1st operands is an expression and the instruction mayStore, then it is a memory definition. llvm-svn: 163144
-
Chad Rosier authored
llvm-svn: 163143
-
Chad Rosier authored
llvm-svn: 163142
-
- Sep 03, 2012
-
-
Chad Rosier authored
llvm-svn: 163126
-
Timur Iskhodzhanov authored
llvm-svn: 163110
-
Evgeniy Stepanov authored
This change adds detection of C++ headers and libraries paths when building with the standalone toolchain from Android NDK. They are in a slightly unusual place. llvm-svn: 163109
-
Chad Rosier authored
llvm-svn: 163105
-
Chad Rosier authored
llvm-svn: 163102
-
- Sep 02, 2012
-
-
Logan Chien authored
Most of the code guarded with ANDROIDEABI are not ARM-specific, and having no relation with arm-eabi. Thus, it will be more natural to call this environment "Android" instead of "ANDROIDEABI". Note: We are not using ANDROID because several projects are using "-DANDROID" as the conditional compilation flag. llvm-svn: 163088
-