| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 124083
|
| |
|
|
| |
llvm-svn: 124076
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
error: no super class declared in @interface for 'XXX'
to be:
error: 'X' cannot use 'super' because it is a root class
The latter explains what the user actually did wrong.
Fixes: <rdar://problem/8904409>
llvm-svn: 124074
|
| |
|
|
|
|
|
|
|
|
| |
clang's -Wuninitialized-experimental warning.
While these don't look like real bugs, clang's
-Wuninitialized-experimental analysis is stricter
than GCC's, and these fixes have the benefit
of being general nice cleanups.
llvm-svn: 124072
|
| |
|
|
|
|
| |
OK since the new syntax is unambiguous and can't be confused with C++98 syntax. If anyone disagrees, please shout!
llvm-svn: 124048
|
| |
|
|
| |
llvm-svn: 124047
|
| |
|
|
| |
llvm-svn: 124041
|
| |
|
|
| |
llvm-svn: 124040
|
| |
|
|
|
|
| |
used as a base.
llvm-svn: 124039
|
| |
|
|
| |
llvm-svn: 124037
|
| |
|
|
| |
llvm-svn: 124036
|
| |
|
|
| |
llvm-svn: 124035
|
| |
|
|
| |
llvm-svn: 124033
|
| |
|
|
| |
llvm-svn: 124032
|
| |
|
|
| |
llvm-svn: 124031
|
| |
|
|
| |
llvm-svn: 124029
|
| |
|
|
| |
llvm-svn: 124025
|
| |
|
|
| |
llvm-svn: 124023
|
| |
|
|
| |
llvm-svn: 124020
|
| |
|
|
|
|
| |
reinterpret_cast and const_cast using rvalue references.
llvm-svn: 124007
|
| |
|
|
| |
llvm-svn: 124006
|
| |
|
|
|
|
|
| |
for floats, and also check if 'nil' is declared
when suggesting it for initializing ObjC pointers.
llvm-svn: 124004
|
| |
|
|
|
|
|
| |
as an rvalue per C++0x [class.copy]p33. If that fails, try again with
the original subexpression.
llvm-svn: 124002
|
| |
|
|
|
|
| |
functionality change
llvm-svn: 123996
|
| |
|
|
|
|
|
| |
to suggest initializations for pointer and
ObjC pointer types.
llvm-svn: 123995
|
| |
|
|
|
|
|
|
| |
to issue the warning at an uninitialized variable's
declaration, but to issue notes at possible
uninitialized uses (which could be multiple).
llvm-svn: 123994
|
| |
|
|
|
|
|
|
|
|
|
|
| |
when returning an NRVO candidate expression. For example, this
properly picks the move constructor when dealing with code such as
MoveOnlyType f() { MoveOnlyType mot; return mot; }
The previously-XFAIL'd rvalue-references test case now works, and has
been moved into the appropriate paragraph-specific test case.
llvm-svn: 123992
|
| |
|
|
| |
llvm-svn: 123983
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
NRVO candidate for a return statement, to
Sema::getCopyElisionCandidate(), and teach it enough to also determine
the NRVO candidate for a throw expression. We still don't use the
latter information, however.
Along the way, implement core issue 1148, which eliminates copy
elision from catch parameters and clarifies that copy elision cannot
occur from function parameters (which we already implemented).
llvm-svn: 123982
|
| |
|
|
|
|
| |
f(T&) and f(T&&).
llvm-svn: 123981
|
| |
|
|
|
|
|
| |
reference to an rvalue rather than binding a const-qualified lvalue
reference to that rvalue.
llvm-svn: 123979
|
| |
|
|
| |
llvm-svn: 123978
|
| |
|
|
|
|
|
|
| |
resolution to match the latest C++0x working paper's semantics. The
implementation now matching up with the reference-binding
implementation used for initialization.
llvm-svn: 123977
|
| |
|
|
|
|
|
|
|
|
|
| |
call (C++0x [temp.deduct.call]p3).
As part of this, start improving the reference-binding implementation
used in the computation of implicit conversion sequences (for overload
resolution) to reflect C++0x semantics. It still needs more work and
testing, of course.
llvm-svn: 123966
|
| |
|
|
|
|
|
| |
This allows us to simplify the handling for the overloadable attribute,
removing a number of FIXMEs.
llvm-svn: 123961
|
| |
|
|
| |
llvm-svn: 123960
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Inheritable attributes on declarations may be inherited by any later
redeclaration at merge time. By contrast, a non-inheritable attribute
will not be inherited by later redeclarations. Non-inheritable
attributes may be semantically analysed early, allowing them to
influence the redeclaration/overloading process.
Before this change, the "overloadable" attribute received special
handling to be treated as non-inheritable, while all other attributes
were treated as inheritable. This patch generalises the concept,
while removing a FIXME. Some CUDA location attributes are also marked
as non-inheritable in order to support special overloading semantics
(to be introduced in a later patch).
The patch introduces a new Attr subclass, InheritableAttr, from
which all inheritable attributes derive. Non-inheritable attributes
simply derive from Attr.
N.B. I did not review every attribute to determine whether it should
be marked non-inheritable. This can be done later on an incremental
basis, as this change does not affect default functionality.
llvm-svn: 123959
|
| |
|
|
|
|
| |
Improve on test case. Per Doug's comment. wip.
llvm-svn: 123954
|
| |
|
|
|
|
| |
reference to an lvalue.
llvm-svn: 123953
|
| |
|
|
|
|
|
|
|
|
| |
specification. In particular, an rvalue reference can bind to an
initializer expression that is an lvalue if the referent type and the
initializer expression type are not reference-related. This is a newer
formulation to the previous "rvalue references can never bind to
lvalues" rule.
llvm-svn: 123952
|
| |
|
|
|
|
|
| |
type checking based on the actual reference type we're trying to bind
the result to, rather than stripping the reference.
llvm-svn: 123950
|
| |
|
|
| |
llvm-svn: 123948
|
| |
|
|
| |
llvm-svn: 123947
|
| |
|
|
| |
llvm-svn: 123944
|
| |
|
|
|
|
|
|
|
|
|
| |
handling pseudo-path sensitivity, and instead
use those assertion conditions as dynamic checks.
These assertions would be violated when analyzing
a CFG where some branches where optimized away
during CFG construction because their branch
conditions could be trivially determined.
llvm-svn: 123943
|
| |
|
|
|
|
|
|
|
|
|
|
| |
analysis for short-circuited operations. For branch written like "if (x && y)",
we maintain two sets of dataflow values for the outgoing
branches. This suppresses some common false positives
for -Wuninitialized-experimental.
This change introduces some assertion failures
when running on the LLVM codebase. WIP.
llvm-svn: 123923
|
| |
|
|
|
|
| |
vf calls, be made indirect. This patch is towards that goal.
llvm-svn: 123922
|
| |
|
|
|
|
| |
and methods defined within 'namespace X { ... }'.
llvm-svn: 123921
|
| |
|
|
|
|
|
| |
working paper's structure. The only functional change here is that we
now handling binding to array rvalues, which we would previously reject.
llvm-svn: 123918
|
| |
|
|
| |
llvm-svn: 123916
|