| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
for CodeGen's RValue type.
llvm-svn: 124483
|
| |
|
|
|
|
|
|
|
| |
fixing a crash which probably nobody was ever going to see. In doing so,
fix a horrendous number of problems with the conditional-cleanups code.
Also, make conditional cleanups re-use the cleanup's activation variable,
which avoids some unfortunate repetitiveness.
llvm-svn: 124481
|
| |
|
|
| |
llvm-svn: 124477
|
| |
|
|
|
|
|
|
| |
might be queried in places where we absolutely require a valid
location (e.g., for template instantiation). Fixes some major
brokenness in the use of __is_convertible_to.
llvm-svn: 124465
|
| |
|
|
| |
llvm-svn: 124455
|
| |
|
|
|
|
|
|
|
| |
non-class prvalues actually require the realization of a
temporary. For everything else, we already have an lvalue (or class
prvalue) in the subexpression.
Note: we're missing some move elision in this case. I'll tackle that next.
llvm-svn: 124453
|
| |
|
|
|
|
|
| |
variable declaration of a struct declared type.
// rdar://8918702
llvm-svn: 124451
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
access control errors into SFINAE errors, so that the trait provides
enough support to implement the C++0x std::is_convertible type trait.
To get there, the SFINAETrap now knows how to set up a SFINAE context
independent of any template instantiations or template argument
deduction steps, and (separately) can set a Sema flag to translate
access control errors into SFINAE errors. The latter can also be
useful if we decide that access control errors during template argument
deduction should cause substitution failure (rather than a hard error)
as has been proposed for C++0x.
llvm-svn: 124446
|
| |
|
|
|
|
| |
have SFINAE behavior.
llvm-svn: 124441
|
| |
|
|
|
|
| |
to be sure we have complete types in many cases
llvm-svn: 124428
|
| |
|
|
|
|
|
|
|
|
| |
semantics after the C++0x is_convertible type trait. This
implementation is not 100% complete, because it allows access errors
to be hard errors (rather than just evaluating false).
Original patch by Steven Watanabe!
llvm-svn: 124425
|
| |
|
|
| |
llvm-svn: 124408
|
| |
|
|
|
|
|
|
|
|
| |
catch:
lock_guard(my_mutex);
declares a variable instead of creating a temporary.
llvm-svn: 124398
|
| |
|
|
| |
llvm-svn: 124394
|
| |
|
|
|
|
| |
ObjC retain/release checker.
llvm-svn: 124386
|
| |
|
|
|
|
| |
rdar://8793832.
llvm-svn: 124383
|
| |
|
|
|
|
|
| |
TargetInfo::CreateTargetInfo() mangles the target options in a way
that is not idempotent. Fixes <rdar://problem/8807535>.
llvm-svn: 124382
|
| |
|
|
| |
llvm-svn: 124376
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
invalid PresomedLoc, instead of just silencing it.
FileManager.cpp: Allow virtual files in nonexistent directories.
FileManager.cpp: Close FileDescriptor for virtual files that correspond to actual files.
FileManager.cpp: Enable virtual files to be created even for files that were flagged as NON_EXISTENT_FILE, e.g. by a prior (unsuccessful) addFile().
ASTReader.cpp: Read a PCH even if the original source files cannot be found.
Add a test for reading a PCH of a file that has been removed and diagnostics referencing that file.
llvm-svn: 124374
|
| |
|
|
|
|
|
|
|
| |
deallocation function has a two-argument form. Store the result of this
check in new[] and delete[] nodes.
Fixes rdar://problem/8913519
llvm-svn: 124373
|
| |
|
|
| |
llvm-svn: 124364
|
| |
|
|
| |
llvm-svn: 124363
|
| |
|
|
|
|
| |
static analyzer.
llvm-svn: 124360
|
| |
|
|
|
|
| |
C++ 'bool' types to false.
llvm-svn: 124356
|
| |
|
|
| |
llvm-svn: 124352
|
| |
|
|
|
|
| |
My thanks to chapuni for his help in investigating this.
llvm-svn: 124351
|
| |
|
|
| |
llvm-svn: 124349
|
| |
|
|
|
|
| |
blocks that reference captured variables.
llvm-svn: 124348
|
| |
|
|
| |
llvm-svn: 124347
|
| |
|
|
|
|
|
|
|
|
| |
argument but doesn't (because previous template parameters had default
arguments), clear out all of the default arguments so that we maintain
the invariant that a template parameter has a default argument only if
subsequence template parameters also have default arguments.
Fixes a crash-on-invalid <rdar://problem/8913649>.
llvm-svn: 124345
|
| |
|
|
|
|
| |
diagnostic about ref-qualifiers where they do not belong.
llvm-svn: 124344
|
| |
|
|
|
|
|
|
|
|
|
| |
derived-to-base cast that also casts away constness (one of the cases
for static_cast followed by const_cast) would be treated as a bit-cast
rather than a derived-to-base class, causing miscompiles and
heartburn.
Fixes <rdar://problem/8913298>.
llvm-svn: 124340
|
| |
|
|
|
|
|
| |
referenced in the block-literal initializer
of that variable. // rdar://8893785
llvm-svn: 124332
|
| |
|
|
|
|
| |
documentation.
llvm-svn: 124322
|
| |
|
|
|
|
|
|
| |
overload a function without a ref-qualifier (C++0x
[over.load]p2). This, apparently, completes the implementation of
rvalue references for *this.
llvm-svn: 124321
|
| |
|
|
| |
llvm-svn: 124319
|
| |
|
|
|
|
|
| |
distinguish them from rvalue references. Using the rvalue-references
warning was weird when the ref-qualifier was '&'.
llvm-svn: 124316
|
| |
|
|
|
|
| |
element type. Fixes rdar://problem/8913416.
llvm-svn: 124315
|
| |
|
|
|
|
|
|
|
| |
reference binding is for the implicit object parameter of a member
function with a ref-qualifier. My previous comment, that we didn't
need to track this explicitly, was wrong: we do in fact get
rvalue-references-prefer-rvalues overloading with ref-qualifiers.
llvm-svn: 124313
|
| |
|
|
|
|
|
| |
for the implicit object argument to a non-static member function with
a ref-qualifier (C++0x [over.match.funcs]p4).
llvm-svn: 124311
|
| |
|
|
| |
llvm-svn: 124310
|
| |
|
|
|
|
| |
dtor cleanup use it.
llvm-svn: 124309
|
| |
|
|
|
|
|
|
|
| |
the presence and form of a ref-qualifier. Note that we do *not* yet
implement the restriction in C++0x [over.load]p2 that requires either
all non-static functions with a given parameter-type-list to have a
ref-qualifier or none of them to have a ref-qualifier.
llvm-svn: 124297
|
| |
|
|
|
|
|
|
| |
using rules that I just made up this morning. This encoding has now
been proposed to the Itanium C++ ABI group for inclusion, but of
course it's still possible that the mangling will change.
llvm-svn: 124296
|
| |
|
|
| |
llvm-svn: 124295
|
| |
|
|
|
|
|
| |
the restrictions on .* and ->* for ref-qualified pointer-to-member
functions.
llvm-svn: 124294
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
- Don't publicize a C++0x feature through __has_feature if we aren't
in C++0x mode (even if the feature is available only with a
warning).
- "auto" is not implemented well enough for its __has_feature to be
turned on.
- Fix the test of C++0x __has_feature to actually test what we're
trying to test. Searching for the substring "foo" when our options
are "foo" and "no_foo" doesn't work :)
llvm-svn: 124291
|
| |
|
|
|
|
| |
rules), now that we've actually have a clean build for me to sully.
llvm-svn: 124290
|
| |
|
|
|
|
|
|
|
|
|
|
| |
- Add ref-qualifiers to the type system; they are part of the
canonical type. Print & profile ref-qualifiers
- Translate the ref-qualifier from the Declarator chunk for
functions to the function type.
- Diagnose mis-uses of ref-qualifiers w.r.t. static member
functions, free functions, constructors, destructors, etc.
- Add serialization and deserialization of ref-qualifiers.
llvm-svn: 124281
|
| |
|
|
|
|
|
|
|
| |
after a 'return' in a CFGBlock. This accidentally
was working before, but the false assumption that
'return' always appeared at the end of the block
was uncovered by a recent change.
llvm-svn: 124280
|