| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 100210
|
| |
|
|
| |
llvm-svn: 100200
|
| |
|
|
|
|
| |
type.
llvm-svn: 100197
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
poor (and wrong) approximation of the actual rules governing when to
build a copy and when it can be elided.
The correct implementation is actually simpler than the
approximation. When we only enumerate constructors as part of
initialization (e.g., for direct initialization or when we're copying
from a class type or one of its derived classes), we don't create a
copy. When we enumerate all conversion functions, we do create a
copy. Before, we created some extra copies and missed some
others. The new test copy-initialization.cpp shows a case where we
missed creating a (required, non-elidable) copy as part of a
user-defined conversion, which resulted in a miscompile. This commit
also fixes PR6757, where the missing copy made us reject well-formed
code in the ternary operator.
This commit also cleans up our handling of copy elision in the case
where we create an extra copy of a temporary object, which became
necessary now that we produce the right copies. The code that seeks to
find the temporary object being copied has moved into
Expr::getTemporaryObject(); it used to have two different
not-quite-the-same implementations, one in Sema and one in CodeGen.
Note that we still do not attempt to perform the named return value
optimization, so we miss copy elisions for return values and throw
expressions.
llvm-svn: 100196
|
| |
|
|
|
|
| |
field to memcpy, memmove, and memset.
llvm-svn: 100193
|
| |
|
|
|
|
| |
am about to refactor based on, following some testing.
llvm-svn: 100188
|
| |
|
|
|
|
| |
initializers as they are written. Fixes a bug where we wouldn't show initialization order warnings when instantiating.
llvm-svn: 100180
|
| |
|
|
| |
llvm-svn: 100179
|
| |
|
|
| |
llvm-svn: 100175
|
| |
|
|
| |
llvm-svn: 100174
|
| |
|
|
| |
llvm-svn: 100173
|
| |
|
|
|
|
| |
the standard.
llvm-svn: 100155
|
| |
|
|
| |
llvm-svn: 100144
|
| |
|
|
|
|
| |
take'id' or return 'id' in their type. Fixes radar 7814131.
llvm-svn: 100129
|
| |
|
|
|
|
|
|
|
|
|
| |
an object or function. Our previous checking was too lax, and ended up
allowing missing or extraneous address-of operators, among other
evils. The new checking provides better diagnostics and adheres more
closely to the standard.
Fixes PR6563 and PR6749.
llvm-svn: 100125
|
| |
|
|
|
|
| |
Clang++ support, even in "Production" mode (for testing purposes).
llvm-svn: 100119
|
| |
|
|
| |
llvm-svn: 100115
|
| |
|
|
|
|
|
|
| |
VarRegion.
Patch by Jordy Rose.
llvm-svn: 100099
|
| |
|
|
| |
llvm-svn: 100098
|
| |
|
|
| |
llvm-svn: 100093
|
| |
|
|
| |
llvm-svn: 100080
|
| |
|
|
| |
llvm-svn: 100079
|
| |
|
|
| |
llvm-svn: 100077
|
| |
|
|
|
|
| |
array values with a non-zero offset would get prematurely pruned from the store.
llvm-svn: 100067
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
nested-name-specifier (e.g., "class T::foo") fails to find a tag
member in the scope nominated by the
nested-name-specifier. Previously, we gave a bland
error: 'Nested' does not name a tag member in the specified scope
which didn't actually say where we were looking, which was rather
horrible when the nested-name-specifier was instantiated. Now, we give
something a bit better:
error: no class named 'Nested' in 'NoDepBase<T>'
llvm-svn: 100060
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
(such as "class T::foo") from an ElaboratedType of a TypenameType to a
DependentNameType, which more accurately models the underlying
concept.
Improve template instantiation for DependentNameType nodes that
represent nested-name-specifiers, by performing tag name lookup and
checking the resulting tag appropriately. Fixes PR5681.
There is still much testing and cleanup to do in this area.
llvm-svn: 100054
|
| |
|
|
|
|
| |
ares are not separated by ':' (radar 7030268).
llvm-svn: 100040
|
| |
|
|
|
|
|
| |
this was parsed as a typename-specifier, elaborated-type-specifier
(including the kind), or just a dependent qualified type name.
llvm-svn: 100039
|
| |
|
|
|
|
|
| |
instantiating a template, which ensures the destructor is called. This fixes
PR6671.
llvm-svn: 100029
|
| |
|
|
|
|
|
| |
on unimplemented methods in protocols adopted by a class.
(radar 7056600).
llvm-svn: 100028
|
| |
|
|
| |
llvm-svn: 100027
|
| |
|
|
|
|
| |
the C-only "optimization".
llvm-svn: 100022
|
| |
|
|
|
|
| |
refactoring work in this area.
llvm-svn: 100019
|
| |
|
|
| |
llvm-svn: 100018
|
| |
|
|
|
|
|
| |
term "fix-it" everywhere and even *I* get tired of long names
sometimes. No functionality change.
llvm-svn: 100008
|
| |
|
|
| |
llvm-svn: 100007
|
| |
|
|
|
|
|
|
| |
addition to the inherent win, this eliminates the pointless
cost of going through the name -> mdkind stringmap that we
were paying.
llvm-svn: 99983
|
| |
|
|
|
|
| |
a lot for me on selfhosts, I dunno why.
llvm-svn: 99981
|
| |
|
|
| |
llvm-svn: 99980
|
| |
|
|
| |
llvm-svn: 99979
|
| |
|
|
|
|
|
|
| |
of CodeGenTypes, to per-record CGRecordLayout structures.
- I did a cursory check that this was perf neutral, FWIW.
llvm-svn: 99978
|
| |
|
|
|
|
|
|
| |
field and bit-field info as structs.
- Anders, please check.
llvm-svn: 99977
|
| |
|
|
| |
llvm-svn: 99973
|
| |
|
|
| |
llvm-svn: 99972
|
| |
|
|
|
|
|
|
| |
the existing (and already well-tested) linkage computation for types,
with minor tweaks for dynamic classes and (pointers to) incomplete
types. Fixes PR6597.
llvm-svn: 99968
|
| |
|
|
| |
llvm-svn: 99967
|
| |
|
|
| |
llvm-svn: 99964
|
| |
|
|
|
|
|
| |
null checks, and make sure we elide null checks when accessing base class
members.
llvm-svn: 99963
|
| |
|
|
|
|
| |
on retain properties. (radar 7809468).
llvm-svn: 99951
|
| |
|
|
| |
llvm-svn: 99949
|