- Aug 07, 2012
-
-
Richard Smith authored
was mistakenly classifying dynamic_casts which might throw as having no side effects. Switch it from a visitor to a switch, so it is kept up-to-date as future Expr nodes are added. Move it from ExprConstant.cpp to Expr.cpp, since it's not really related to constant expression evaluation. Since we use HasSideEffect to determine whether to emit an unused global with internal linkage, this has the effect of suppressing emission of globals in some cases. I've left many of the Objective-C cases conservatively assuming that the expression has side-effects. I'll leave it to someone with better knowledge of Objective-C than mine to improve them. llvm-svn: 161388
-
Jordan Rose authored
This is an additional test for r161349 (ignoring 10.8's annotations for NSMakeCollectable). llvm-svn: 161380
-
Eric Christopher authored
just let the alignment be zero. PR13531 llvm-svn: 161379
-
Eric Christopher authored
llvm-svn: 161372
-
Eric Christopher authored
that we attach the lost qualifiers. Fixes rdar://11882155 llvm-svn: 161368
-
Anna Zaks authored
Dynamic type inference does the right thing in this case. However, as Jordan suggested, it would be nice to add a warning here as well. llvm-svn: 161365
-
Fariborz Jahanian authored
// rdar://6505197 llvm-svn: 161362
-
Anna Zaks authored
I currently have a bit of redundancy with the cast kind switch statement inside the ImplicitCast callback, but I might be adding more casts going forward. llvm-svn: 161358
-
Anna Zaks authored
Instead of sprinkling dynamic type info propagation throughout ExprEngine, the added checker would add the more precise type information on known APIs (Ex: ObjC alloc, new) and propagate the type info in other cases (ex: ObjC init method, casts (the second is not implemented yet)). Add handling of ObjC alloc, new and init to the checker. llvm-svn: 161357
-
- Aug 06, 2012
-
-
Jordan Rose authored
No functionality change, but from now on, any new path notes should be tested both with plain-text output (for ease of human auditing) and with plist output (to ensure control flow and events are being correctly represented in Xcode). llvm-svn: 161351
-
Jordan Rose authored
llvm-svn: 161350
-
Richard Trieu authored
in duplicate -Wuninitialized warnings. Change so that only the check in TryConstructorInitialization() will be used and a single warning be emitted. llvm-svn: 161345
-
Simon Atanasyan authored
The patch reviewed by Akira Hatanaka. llvm-svn: 161333
-
Dmitri Gribenko authored
Doxygen manual claims that multiple \brief or \returns commands will be merged together, but actual behavior is different (second \brief command becomes a part of a discussion, second \returns becomes a "Returns: blah" paragraph on its own). Anyway, it seems to be a bad idea to use multiple \brief or \returns commands in a single command. llvm-svn: 161325
-
Dmitri Gribenko authored
ObjC methods. llvm-svn: 161324
-
Craig Topper authored
llvm-svn: 161319
-
Richard Smith authored
'clang-cpp'. For now, the test uses "REQUIRES: shell" to determine if the host system supports "ln -s", which it uses to create a 'clang-cpp' symlink. This is a bit hacky and should likely be directly supported by lit.cfg. llvm-svn: 161317
-
Richard Smith authored
we know whether the function is virtual. But check it as soon as we do know; in some cases we don't need to wait for an instantiation. llvm-svn: 161316
-
Richard Smith authored
been defined. llvm-svn: 161315
-
Hal Finkel authored
llvm-svn: 161310
-
- Aug 04, 2012
-
-
Anna Zaks authored
We can be in the situation where we did not track the symbol before realloc was called on it. llvm-svn: 161294
-
Fariborz Jahanian authored
resulting in issuance of unused static variable warning now. // rdar://10777111 llvm-svn: 161291
-
Jordan Rose authored
This should fix the failing test on the buildbot as well. llvm-svn: 161290
-
Jordan Rose authored
While there is no such thing as a "null reference" in the C++ standard, many implementations of references (including Clang's) do not actually check that the location bound to them is non-null. Thus unlike a regular null dereference, this will not cause a problem at runtime until the reference is actually used. In order to catch these cases, we need to not prune out paths on which the input pointer is null. llvm-svn: 161288
-
Jordan Rose authored
Like base constructors, delegating constructors require no further processing in the CFGInitializer node. Also, add PrettyStackTraceLoc to the initializer and destructor logic so we can get better stack traces in the future. llvm-svn: 161283
-
Jordan Rose authored
Because of this, we would previously emit NO path notes when a parameter is constrained to null (because there are no stores). Now we show where we made the assumption, which is much more useful. llvm-svn: 161280
-
Jordan Rose authored
llvm-svn: 161279
-
Jordan Rose authored
llvm-svn: 161278
-
Jordan Rose authored
This only applies in the case where ->* is not overloaded, since it specifically looks for BinaryOperator and not CXXOperatorCallExpr. llvm-svn: 161275
-
Jordan Rose authored
llvm-svn: 161274
-
- Aug 03, 2012
-
-
Anna Zaks authored
In the following code, find the type of the symbolic receiver by following it and updating the dynamic type info in the state when we cast the symbol from id to MyClass *. MyClass *a = [[self alloc] init]; return 5/[a testSelf]; llvm-svn: 161264
-
Dmitri Gribenko authored
the function returns void. llvm-svn: 161261
-
Richard Smith authored
Fix crash if a literal operator template's template parameter pack is not a non-type template parameter pack. Patch by Andy Gibbs! llvm-svn: 161260
-
Anna Zaks authored
There is no reason why we should not track the memory which was not allocated in the current function, but was freed there. This would allow to catch more use-after-free and double free with no/limited IPA. Also fix a realloc issue which surfaced as the result of this patch. llvm-svn: 161248
-
Benjamin Kramer authored
llvm-svn: 161243
-
Benjamin Kramer authored
llvm-svn: 161237
-
Benjamin Kramer authored
By C++ standard, the vtable should be generated if the first non-inline virtual function is defined in the TU. Current version of clang doesn't generate vtable if the first virtual function is defaulted, because the key function is regarded as the defaulted function. Patch by Li Kan! llvm-svn: 161236
-
Anna Zaks authored
engine. The code that was supposed to split the tie in a deterministic way is not deterministic. Most likely one of the profile methods uses a pointer. After this change we do finally get the consistent diagnostic output. Testing this requires running the analyzer on large code bases and diffing the results. llvm-svn: 161224
-
- Aug 02, 2012
-
-
Dmitri Gribenko authored
templates. llvm-svn: 161215
-
Jordan Rose authored
There's still more work to be done here; this doesn't catch reference parameters or return values. But it's a step in the right direction. Part of <rdar://problem/11212286>. llvm-svn: 161214
-