| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
to the new constants.
llvm-svn: 112047
|
|
|
|
| |
llvm-svn: 112044
|
|
|
|
| |
llvm-svn: 112026
|
|
|
|
| |
llvm-svn: 111997
|
|
|
|
|
|
|
|
| |
only form pointers-to-member if the expression has the appropriate
form. This avoids assertions later on on invalid code, but also
allows us to properly resolve mixed-staticity overloads.
llvm-svn: 111987
|
|
|
|
|
|
| |
some of it off completely.
llvm-svn: 111957
|
|
|
|
| |
llvm-svn: 111904
|
|
|
|
|
|
|
| |
M-x query-replace-regexp
\(Sema::\|Action::\|Parser::\|\)Owning\(Expr\|Stmt\)Result -> \2Result
llvm-svn: 111903
|
|
|
|
| |
llvm-svn: 111902
|
|
|
|
| |
llvm-svn: 111863
|
|
|
|
|
|
|
|
| |
contain a ObjCObjectPointerType since r111699.
Don't assume that they are only PointerTypes or we will crash.
llvm-svn: 111798
|
|
|
|
| |
llvm-svn: 111795
|
|
|
|
|
|
|
| |
Build qualified version of ObjC pointers (not pointers) when
doing overload resolution.
llvm-svn: 111740
|
|
|
|
|
|
| |
objctive-c pointer conversions. Fixes pr7936.
llvm-svn: 111699
|
|
|
|
| |
llvm-svn: 111693
|
|
|
|
| |
llvm-svn: 111680
|
|
|
|
|
|
|
|
|
| |
conversion a second time for a conversion candidate (with the real
acting context), because the only problems we would find are access or
ambiguity issues that won't be diagnosed until we pick this
candidate. Add a test case to prove it to myself.
llvm-svn: 111526
|
|
|
|
|
|
|
|
|
|
|
| |
conversion functions as if their acting context were the class that
we're converting from (the implicit object argument's
type). Retroactively tweaking the implicit conversion sequence, as we
were trying to do before, breaks the invariants of that implicit
conversion sequence (e.g., the types and conversions don't match
up). Fixes <rdar://problem/8018274>.
llvm-svn: 111520
|
|
|
|
|
|
| |
functions and the implicit object parameter type. No functionality change.
llvm-svn: 111519
|
|
|
|
|
|
|
| |
type ignoring cv-qualifiers). These are qualification
conversions. Fixes PR7934.
llvm-svn: 111428
|
|
|
|
| |
llvm-svn: 110945
|
|
|
|
|
|
| |
Fixes PR7859.
llvm-svn: 110906
|
|
|
|
| |
llvm-svn: 110860
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
implicit conversion sequences. In particular, model the "standard
conversion" from a class to its own type (or a base type) directly as
a standard conversion in the normal path *without* trying to determine
if there is a valid copy constructor. This appears to match the intent
of C++ [over.best.ics]p6 and more closely matches GCC and EDG.
As part of this, model non-lvalue reference initialization via
user-defined conversion in overloading the same way we handle it in
InitializationSequence, separating the "general user-defined
conversion" and "conversion to compatible class type" cases.
The churn in the overload-call-copycon.cpp test case is because the
test case was originally wrong; it assumed that we should do more
checking for copy constructors that we actually should, which affected
overload resolution.
Fixes PR7055. Bootstrapped okay.
llvm-svn: 110773
|
|
|
|
| |
llvm-svn: 110537
|
|
|
|
|
|
|
|
| |
an lvalue of another, compatible Objective-C object type (e.g., a
subclass). Introduce a new initialization sequence step kind to
describe this binding, along with a new cast kind. Fixes PR7741.
llvm-svn: 110513
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This takes some trickery since CastExpr has subclasses (and indeed,
is abstract).
Also, smoosh the CastKind into the bitfield from Expr.
Drops two words of storage from Expr in the common case of expressions
which don't need inheritance paths. Avoids a separate allocation and
another word of overhead in cases needing inheritance paths. Also has
the advantage of not leaking memory, since destructors for AST nodes are
never run.
llvm-svn: 110507
|
|
|
|
|
|
| |
vectors, from Anton Yartsev!
llvm-svn: 110437
|
|
|
|
|
|
|
| |
Rename it to TDK_Underqualified to avoid this sort of confusion and give it
its own diagnostic.
llvm-svn: 110318
|
|
|
|
|
|
|
| |
just means "not a function type", not "not a function type or void". This
changes behavior slightly, but generally in a way which accepts more code.
llvm-svn: 110303
|
|
|
|
|
|
| |
since we aren't going to be calling them ever.
llvm-svn: 109377
|
|
|
|
| |
llvm-svn: 108807
|
|
|
|
|
|
|
| |
arguments only resolves to a single specialization, make sure to look
through using declarations. Fixes PR7641.
llvm-svn: 108376
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(e.g., a call, cast, etc.), immediately adjust the expression's type
to strip cv-qualifiers off of all non-class types (in C++) or all
types (in C). This effectively extends my previous fix for PR7463,
which was restricted to calls, to other kinds of expressions within
similar characteristics. I've audited every use of
getNonReferenceType() in the code base, switching to the newly-renamed
getNonLValueExprType() where necessary.
Big thanks to Eli for pointing out just how incomplete my original fix
for PR7463 actually was. We've been handling cv-qualifiers on rvalues
wrong for a very, very long time. Fixes PR7463.
llvm-svn: 108253
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
strip cv-qualifiers from the expression's type when the language calls
for it: in C, that's all the time, while C++ only does it for
non-class types.
Centralized the computation of the call expression type in
QualType::getCallResultType() and some helper functions in other nodes
(FunctionDecl, ObjCMethodDecl, FunctionType), and updated all relevant
callers of getResultType() to getCallResultType().
Fixes PR7598 and PR7463, along with a bunch of getResultType() call
sites that weren't stripping references off the result type (nothing
stripped cv-qualifiers properly before this change).
llvm-svn: 108234
|
|
|
|
|
|
| |
constructor-name lookup.
llvm-svn: 107536
|
|
|
|
|
|
| |
pointer" diagnostic to handle references, too.
llvm-svn: 107372
|
|
|
|
|
|
| |
require a base-to-derived pointer conversion.
llvm-svn: 107349
|
|
|
|
|
|
|
| |
would work.
Sebastian: figure out which one you want :)
llvm-svn: 107305
|
|
|
|
|
|
| |
classification functions, and updated them for N3092.
llvm-svn: 107301
|
|
|
|
|
|
|
|
|
|
|
| |
type to an integral or enumeration type in the size of an array new
expression, e.g.,
new int[ConvertibleToInt(10)];
This is a GNU and C++0x extension.
llvm-svn: 107229
|
|
|
|
|
|
|
|
| |
have integral or enumeration type, so that we still check the contents
of the switch body. My previous patch made this worse; now we're back
to where we were previously.
llvm-svn: 107223
|
|
|
|
|
|
|
|
| |
enumeration type out into a separate, reusable routine. The only
functionality change here is that we recover a little more
aggressively from ill-formed switch conditions.
llvm-svn: 107222
|
|
|
|
|
|
|
|
|
| |
__real myvec and __imag myvec, since they aren't all that useful (it's
just an identity function) but we might want to use them in more
restricted cases in the future (e.g., "__real mycomplexvec" could
extract the real parts of a vector of complex numbers).
llvm-svn: 106601
|
|
|
|
|
|
|
|
|
| |
types, updating callers of both isFloatingType() and
isRealFloatingType() accordingly. Caught at least one issue where we
allowed one to declare a vector of vectors (!), along with cleaning up
the standard-conversion logic for C++.
llvm-svn: 106595
|
|
|
|
|
|
|
|
|
|
|
| |
"floating type" in C, which does not include vector types. Introduce
Type::hasFloatingRepresentation() for the places where we want to know
whether the underlying representation is one or more floating-point
values. Remove some hacks we had where the former behavior of
Type::isFloatingType() was at odds with the language definition of the
term.
llvm-svn: 106584
|
|
|
|
|
|
|
|
| |
floating-point conversions or floating-integral conversions. We
really, really, really need to make isFloatingType() and friends not
apply to vector types.
llvm-svn: 106551
|
|
|
|
|
|
|
| |
no overloaded operators were found in scope, mirroring what we already
do for BinaryOperator.
llvm-svn: 106222
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
introduced by using decls are hidden even if their template parameter lists
or return types differ from the "overriding" declaration.
Propagate using shadow declarations around more effectively when looking up
template-ids. Reperform lookup for template-ids in member expressions so that
access control is properly set up.
Fix some number of latent bugs involving template-ids with totally invalid
base types. You can only actually get these with a scope specifier, since
otherwise the template-id won't parse as a template-id.
Fixes PR7384.
llvm-svn: 106093
|
|
|
|
|
|
|
|
|
|
|
|
| |
provides C "integer type" semantics in C and C++ "integral type"
semantics in C++.
Note that I still need to update isIntegerType (and possibly other
predicates) using the same approach I've taken for
isIntegralType(). The two should have the same meaning, but currently
don't (!).
llvm-svn: 106074
|