| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
| |
a warning for uses of an uninitialized variable
when the use is a void cast, e.g. (void) x.
llvm-svn: 124278
|
| |
|
|
|
|
|
|
| |
I'm separately committing this because it incidentally changes some
block orderings and minor IR issues, like using a phi instead of
an unnecessary alloca.
llvm-svn: 124277
|
| |
|
|
| |
llvm-svn: 124276
|
| |
|
|
|
|
| |
converting getBaseClassOffsetInBits() to CharUnits.
llvm-svn: 124274
|
| |
|
|
|
|
|
|
| |
'-analyzer-check-objc-self-init' which by default
is enabled by the driver for '--analyze'.
llvm-svn: 124266
|
| |
|
|
|
|
|
|
| |
about the block.
Clairvoyance by John!
llvm-svn: 124264
|
| |
|
|
| |
llvm-svn: 124263
|
| |
|
|
|
|
| |
in default ivar synthesis. Fixes // rdar://8913053.
llvm-svn: 124258
|
| |
|
|
|
|
| |
Jean-Daniel Dupas!
llvm-svn: 124249
|
| |
|
|
| |
llvm-svn: 124247
|
| |
|
|
| |
llvm-svn: 124244
|
| |
|
|
| |
llvm-svn: 124243
|
| |
|
|
|
|
|
|
| |
array type" when blocks are involved.
Addresses rdar://8876238.
llvm-svn: 124242
|
| |
|
|
|
|
|
|
|
|
| |
handling all CFGElement kinds. While writing
the test case, it turned out that return-noreturn.cpp
wasn't actually testing anything since it has the wrong -W
flag. That uncovered another regression with
the handling of destructors marked noreturn. WIP.
llvm-svn: 124238
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
for reference binding (C++ [over.rank.ics]p3b1sb4), so that we prefer
the binding of an lvalue reference to a function lvalue over the
binding of an rvalue reference. This change resolves the ambiguity
with std::forward and lvalue references to function types in a way
that seems consistent with the original rvalue references proposal.
My proposed wording for this change is shown in
isBetterReferenceBindingKind(); we'll try to get this change adopted
in the C++0x working paper as well.
llvm-svn: 124236
|
| |
|
|
| |
llvm-svn: 124235
|
| |
|
|
|
|
| |
about them yet. Fixes crash reported in PR 9049.
llvm-svn: 124228
|
| |
|
|
| |
llvm-svn: 124227
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
authors to write
class __attribute__((forbid_temporaries)) Name { ... };
when they want to force users to name all variables of the type. This protects
people from doing things like creating a scoped_lock that only lives for a
single statement instead of an entire scope.
The warning produced by this attribute can be disabled by
-Wno-forbid-temporaries.
llvm-svn: 124217
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(C++0x [over.ics.rank]p3) when one binding is an lvalue reference and
the other is an rvalue reference that binds to an rvalue. In
particular, we were using the predict "is an rvalue reference" rather
than "is an rvalue reference that binds to an rvalue", which was
incorrect in the one case where an rvalue reference can bind to an
lvalue: function references.
This particular issue cropped up with std::forward, where Clang was
picking an std::forward overload while forwarding an (lvalue)
reference to a function. However (and unfortunately!), the right
answer for this code is that the call to std::forward is
ambiguous. Clang now gets that right, but we need to revisit the
std::forward implementation in libc++.
llvm-svn: 124216
|
| |
|
|
|
|
|
|
| |
by ExplodedNodes. This leads to about a 4-8%
reduction in memory footprint when analyzing
functions in sqlite3.
llvm-svn: 124214
|
| |
|
|
|
|
| |
about uninitialized variables captured by blocks.
llvm-svn: 124213
|
| |
|
|
|
|
|
| |
for a block capturing the value of an uninitialized
variable.
llvm-svn: 124212
|
| |
|
|
|
|
|
|
|
| |
generate meaningful [*] template argument location information.
[*] Well, as meaningful as possible, given that this entire code path
is a hack for when we've lost type-source information.
llvm-svn: 124211
|
| |
|
|
| |
llvm-svn: 124201
|
| |
|
|
|
|
|
|
| |
during template instantiation. This code needs to eventually die, but
this little tweak fixes PR8629, where bad location information slipped
through to the location of a class template instantiation.
llvm-svn: 124199
|
| |
|
|
|
|
|
|
| |
T) when taking the address of an overloaded function or matching a
specialization to a template (C++0x [temp.deduct.type]p10). Fixes
PR9044.
llvm-svn: 124197
|
| |
|
|
|
|
|
| |
derived-to-base conversion, set the cast kind and base path
appropriately.
llvm-svn: 124189
|
| |
|
|
|
|
| |
attributes for the benefit of the static analyzer.
llvm-svn: 124174
|
| |
|
|
|
|
|
|
| |
and turn on __has_feature(cxx_rvalue_references). The core rvalue
references proposal seems to be fully implemented now, pending lots
more testing.
llvm-svn: 124169
|
| |
|
|
|
|
|
|
|
|
| |
We translate property accesses to obj-c messages by simulating "loads" or "stores" to properties
using a pseudo-location SVal kind (ObjCPropRef).
Checkers can now reason about obj-c messages for both explicit message expressions and implicit
messages due to property accesses.
llvm-svn: 124161
|
| |
|
|
|
|
|
|
| |
ObjCMessages (both message expressions and property access)
and use it in ExprEngine::VisitObjCMessageExpr.
llvm-svn: 124160
|
| |
|
|
|
|
|
|
|
|
| |
expressions and implicit
messages that are sent for handling properties in dot syntax.
Replace all direct uses of ObjCMessageExpr in the checkers and checker interface with ObjCMessage.
llvm-svn: 124159
|
| |
|
|
|
|
| |
ObjCInterfaceType.
llvm-svn: 124158
|
| |
|
|
|
|
| |
BasicObjCFoundationChecks.cpp; no functionality change.
llvm-svn: 124157
|
| |
|
|
| |
llvm-svn: 124153
|
| |
|
|
| |
llvm-svn: 124146
|
| |
|
|
|
|
| |
as useful in a templated context as it is without templates. Fixes PR8755!
llvm-svn: 124136
|
| |
|
|
|
|
| |
Wennborg! Fixes PR8295.
llvm-svn: 124135
|
| |
|
|
| |
llvm-svn: 124123
|
| |
|
|
| |
llvm-svn: 124122
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
implementation used by overload resolution to support rvalue
references. The original commits caused PR9026 and some
hard-to-reproduce self-host breakage.
The only (crucial!) difference between this commit and the previous
commits is that we now properly check the SuppressUserConversions flag
before attempting to perform a second user-defined conversion in
reference binding, breaking the infinite recursion chain of
user-defined conversions.
Rvalue references should be working a bit better now.
llvm-svn: 124121
|
| |
|
|
|
|
| |
accessing it, both for consistency (see StmtPrinter::VisitDeclRefExpr()) and for other use cases of dependent types.
llvm-svn: 124119
|
| |
|
|
|
|
| |
linkonce_odr linkage.
llvm-svn: 124096
|
| |
|
|
| |
llvm-svn: 124095
|
| |
|
|
| |
llvm-svn: 124094
|
| |
|
|
| |
llvm-svn: 124093
|
| |
|
|
|
|
| |
ASTContext::toCharUnitsFromBits().
llvm-svn: 124092
|
| |
|
|
|
|
|
|
| |
exception of explicit template instantiations, which have to be weak_odr.
This fixes PR6996.
llvm-svn: 124089
|
| |
|
|
| |
llvm-svn: 124087
|