| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
| |
wrong class, make sure to drop it immediately; we don't want that
constructor to be available within the DeclContext. Fixes
<rdar://problem/9677163>.
llvm-svn: 143506
|
| |
|
|
|
|
|
| |
does not match any declaration in the class (or class template), be
sure to mark it as invalid. Fixes PR10924 / <rdar://problem/10119422>.
llvm-svn: 143504
|
| |
|
|
|
|
| |
c++ object into block descriptor. // rdar://9971124
llvm-svn: 143475
|
| |
|
|
| |
llvm-svn: 143471
|
| |
|
|
|
|
| |
code. We will reconsider promoting it back to an error later.
llvm-svn: 143470
|
| |
|
|
|
|
| |
aggregate class type and initializer list arguments.
llvm-svn: 143462
|
| |
|
|
|
|
|
|
|
|
| |
native representation of integers for the elements. This fixes a bunch of nastiness involving
treating wide strings as a series of bytes.
Patch by Seth Cantrell.
llvm-svn: 143417
|
| |
|
|
|
|
|
|
|
| |
that it retains source location information for the type. Aside from
general goodness (being able to walk the types described in that
information), we now have a proper representation for dependent
delegating constructors. Fixes PR10457 (for real).
llvm-svn: 143410
|
| |
|
|
| |
llvm-svn: 143364
|
| |
|
|
| |
llvm-svn: 143295
|
| |
|
|
|
|
|
|
| |
implicitly perform an lvalue-to-rvalue conversion if used on an lvalue
expression. Also improve the documentation of Expr::Evaluate* to indicate which
of them will accept expressions with side-effects.
llvm-svn: 143263
|
| |
|
|
|
|
|
| |
ownership qualifier cast which won't work.
// rdar://10244607
llvm-svn: 143258
|
| |
|
|
|
|
| |
in which case the ownership is redundant. Thanks to John for the suggestion.
llvm-svn: 143240
|
| |
|
|
|
|
|
| |
an rvalue retainable object type with life-time qualifier has no
effect and wil be diagnosed as error. // rdar://10244607
llvm-svn: 143219
|
| |
|
|
| |
llvm-svn: 143192
|
| |
|
|
|
|
| |
to catch some future implicit lvalue-to-rvalue casts of inappropriate kinds.
llvm-svn: 143182
|
| |
|
|
|
|
| |
a binary operator involving a dependently-typed overload set.
llvm-svn: 143172
|
| |
|
|
|
|
|
|
|
|
|
| |
string is part of the function call, then there is no difference. If the
format string is not, the warning will point to the call site and a note
will point to where the format string is.
Fix-it hints for strings are moved to the note if a note is emitted. This will
prevent changes to format strings that may be used in multiple places.
llvm-svn: 143168
|
| |
|
|
| |
llvm-svn: 143166
|
| |
|
|
|
|
|
|
|
| |
rvalue. An assertion to catch this is in ImpCastExprToType will follow, but
vector operations currently trip over this (due to omitting the usual arithmetic
conversions). Also add an assert to catch missing lvalue-to-rvalue conversions
on the LHS of ->.
llvm-svn: 143155
|
| |
|
|
|
|
| |
property refactoring. // rdar://10327068
llvm-svn: 143139
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
AST file more lazy, so that we don't eagerly load that information for
all known identifiers each time a new AST file is loaded. The eager
reloading made some sense in the context of precompiled headers, since
very few identifiers were defined before PCH load time. With modules,
however, a huge amount of code can get parsed before we see an
@import, so laziness becomes important here.
The approach taken to make this information lazy is fairly simple:
when we load a new AST file, we mark all of the existing identifiers
as being out-of-date. Whenever we want to access information that may
come from an AST (e.g., whether the identifier has a macro definition,
or what top-level declarations have that name), we check the
out-of-date bit and, if it's set, ask the AST reader to update the
IdentifierInfo from the AST files. The update is a merge, and we now
take care to merge declarations before/after imports with declarations
from multiple imports.
The results of this optimization are fairly dramatic. On a small
application that brings in 14 non-trivial modules, this takes modules
from being > 3x slower than a "perfect" PCH file down to 30% slower
for a full rebuild. A partial rebuild (where the PCH file or modules
can be re-used) is down to 7% slower. Making the PCH file just a
little imperfect (e.g., adding two smallish modules used by a bunch of
.m files that aren't in the PCH file) tips the scales in favor of the
modules approach, with 24% faster partial rebuilds.
This is just a first step; the lazy scheme could possibly be improved
by adding versioning, so we don't search into modules we already
searched. Moreover, we'll need similar lazy schemes for all of the
other lookup data structures, such as DeclContexts.
llvm-svn: 143100
|
| |
|
|
| |
llvm-svn: 143088
|
| |
|
|
| |
llvm-svn: 143085
|
| |
|
|
|
|
| |
of '@'.
llvm-svn: 143084
|
| |
|
|
|
|
|
| |
decl. in Darwin due to certain projects requirement.
// rdar://10277579
llvm-svn: 143082
|
| |
|
|
|
|
|
| |
implicitly in LookupMemberExpr and explicitly in cases where template
instantiation doesn't redo the lookup.
llvm-svn: 143046
|
| |
|
|
|
|
| |
inspection.
llvm-svn: 143021
|
| |
|
|
|
|
| |
member expression. Refactoring to follow.
llvm-svn: 143017
|
| |
|
|
|
|
| |
instantiations too.
llvm-svn: 143016
|
| |
|
|
|
|
| |
GCC compiler workaround.
llvm-svn: 142931
|
| |
|
|
|
|
| |
r142914: "Introduce a placeholder type for "pseudo object""
r142915: "Pull the pseudo-object stuff into its own file."
llvm-svn: 142921
|
| |
|
|
|
|
|
| |
Tidy up some marginally related code just to annoy
single-purpose-commit lovers. No functionality change.
llvm-svn: 142915
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
expressions: expressions which refer to a logical rather
than a physical l-value, where the logical object is
actually accessed via custom getter/setter code.
A subsequent patch will generalize the AST for these
so that arbitrary "implementing" sub-expressions can
be provided.
Right now the only client is ObjC properties, but
this should be generalizable to similar language
features, e.g. Managed C++'s __property methods.
llvm-svn: 142914
|
| |
|
|
|
|
|
| |
dependent ->, where the member being referred to is an anonymous struct or
union. This path was missed by the fix in r142890.
llvm-svn: 142910
|
| |
|
|
|
|
|
|
|
| |
Microsoft __if_exists/__if_not_exists statement. Also note that we
weren't traversing DeclarationNameInfo *at all* within the
RecursiveASTVisitor, which would be rather fatal for variadic
templates.
llvm-svn: 142906
|
| |
|
|
|
|
|
|
|
|
| |
statements. As noted in the documentation for the AST node, the
semantics of __if_exists/__if_not_exists are somewhat different from
the way Visual C++ implements them, because our parsed-template
representation can't accommodate VC++ semantics without serious
contortions. Hopefully this implementation is "good enough".
llvm-svn: 142901
|
| |
|
|
|
|
| |
it during template instantiation, for a known RHS decl.
llvm-svn: 142890
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
analysis to separate dependent names from non-dependent names. For
dependent names, we'll behave differently from Visual C++:
- For __if_exists/__if_not_exists at class scope, we'll just warn
and then ignore them.
- For __if_exists/__if_not_exists in statements, we'll treat the
inner statement as a compound statement, which we only instantiate
in templates where the dependent name (after instantiation)
exists. This behavior is different from VC++, but it's as close as
we can get without encroaching ridiculousness.
The latter part (dependent statements) is not yet implemented.
llvm-svn: 142864
|
| |
|
|
|
|
|
|
| |
unknown specialization, treat this the same way as if the name were
not found in the current instantiation. No actual functionality
change, since apparently nothing depends on this.
llvm-svn: 142862
|
| |
|
|
| |
llvm-svn: 142807
|
| |
|
|
|
|
| |
accurate, but it frees up the name AnalysisContext for other uses.
llvm-svn: 142782
|
| |
|
|
| |
llvm-svn: 142760
|
| |
|
|
|
|
| |
in-class member initialisers).
llvm-svn: 142758
|
| |
|
|
| |
llvm-svn: 142757
|
| |
|
|
| |
llvm-svn: 142756
|
| |
|
|
|
|
|
|
|
| |
instead of silently discarding them.
As a side effect, this improves diagnostics for constexpr class
templates slightly.
llvm-svn: 142755
|
| |
|
|
|
|
|
|
| |
change clients to use AnalysisContext instead.
WIP to remove/reduce ExprEngine's usage of AnalysisManager.
llvm-svn: 142739
|
| |
|
|
|
|
| |
code. Apparently this is what GCC does, and some code depends on this. Fixes <rdar://problem/10321089>.
llvm-svn: 142716
|
| |
|
|
| |
llvm-svn: 142711
|