| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
return types.
llvm-svn: 178081
|
|
|
|
| |
llvm-svn: 177721
|
|
|
|
|
|
|
|
|
|
|
|
| |
picking up cleanups from earlier in the statement. Also fix a
crash-on-invalid where a reference to an invalid decl from an
enclosing scope was causing an expression to fail to build, but
only *after* a cleanup was registered from that statement,
causing an assertion downstream.
The crash-on-valid is rdar://13459289.
llvm-svn: 177692
|
|
|
|
|
|
|
|
| |
we expect a related result type.
rdar://12493140
llvm-svn: 177378
|
|
|
|
| |
llvm-svn: 177354
|
|
|
|
|
|
|
|
|
| |
reports, and implement implicit definition of inheriting constructors.
Remaining missing features: inheriting constructor templates, implicit
exception specifications for inheriting constructors, inheriting constructors
from dependent bases.
llvm-svn: 177320
|
|
|
|
|
|
| |
No functionality change.
llvm-svn: 177185
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Before this patch we would compute the linkage lazily and cache it. When the
AST was modified in ways that could change the value, we would invalidate the
cache.
That was fairly brittle, since any code could ask for the a linkage before
the correct value was available.
We should change the API to one where the linkage is computed explicitly and
trying to get it when it is not available asserts.
This patch is a first step in that direction. We still compute the linkage
lazily, but instead of invalidating a cache, we assert that the AST
modifications didn't change the result.
llvm-svn: 176999
|
|
|
|
|
|
| |
No (intended) functionality change.
llvm-svn: 176726
|
|
|
|
|
|
|
| |
using object subscripting without declaring objectForKeyedSubscript:
// rdar://13333205
llvm-svn: 176539
|
|
|
|
|
|
|
|
|
| |
and be sure to apply them whether or not the debugger gave
us a method declaration.
rdar://12565338
llvm-svn: 176432
|
|
|
|
|
|
|
|
| |
to a subscript operator.
rdar://13332183
llvm-svn: 176428
|
|
|
|
| |
llvm-svn: 175807
|
|
|
|
|
|
|
|
| |
Along the way, improve a diagnostic for "previous declaration here" for implicit parameters.
Fixes <rdar://problem/13211384>.
llvm-svn: 175802
|
|
|
|
| |
llvm-svn: 175734
|
|
|
|
|
|
|
| |
This is a precursor to making Optional<T>'s operator bool 'explicit' when
building Clang & LLVM as C++11.
llvm-svn: 175722
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The TypeLoc hierarchy used the llvm::cast machinery to perform undefined
behavior by casting pointers/references to TypeLoc objects to derived types
and then using the derived copy constructors (or even returning pointers to
derived types that actually point to the original TypeLoc object).
Some context is in this thread:
http://lists.cs.uiuc.edu/pipermail/llvmdev/2012-December/056804.html
Though it's spread over a few months which can be hard to read in the mail
archive.
llvm-svn: 175462
|
|
|
|
|
|
| |
a small test case). // rdar://13178483.
llvm-svn: 175450
|
|
|
|
|
|
|
| |
cast<ObjCObjectPointerType> doesn't look through sugar, getAs does.
Fixes PR15257.
llvm-svn: 175272
|
|
|
|
|
|
|
|
| |
a property, the -Wdirect-ivar-access should not warn when
accessing the property's synthesized instance variable.
// rdar://13142820
llvm-svn: 175195
|
|
|
|
|
|
|
| |
instantiation in order to permit devirtualization later in codegen, skip over
pure functions since those can't be devirtualization targets.
llvm-svn: 175116
|
|
|
|
|
|
|
|
|
|
|
|
| |
MarkMemberReferenced instead of marking functions referenced directly. An audit
of callers to MarkFunctionReferenced and DiagnoseUseOfDecl also caused a few
other changes:
* don't mark functions odr-used when considering them for an initialization
sequence. Do mark them referenced though.
* the function nominated by the cleanup attribute should be diagnosed.
* operator new/delete should be diagnosed when building a 'new' expression.
llvm-svn: 174951
|
|
|
|
|
|
| |
expression.
llvm-svn: 174930
|
|
|
|
|
|
| |
Patch by Joey Gouly!
llvm-svn: 174928
|
|
|
|
|
|
| |
claims it will improve performance.
llvm-svn: 174341
|
|
|
|
|
|
| |
vector initialization. Patch by John Stratton!
llvm-svn: 174339
|
|
|
|
| |
llvm-svn: 174337
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
designator" diagnostic with more correct and more human-friendly "cannot take
address of rvalue of type 'T'".
For the case of & &T::f, provide a custom diagnostic, rather than unhelpfully
saying "cannot take address of rvalue of type '<overloaded function type>'".
For the case of &array_temporary, treat it just like a class temporary
(including allowing it as an extension); the existing diagnostic wording
for the class temporary case works fine.
llvm-svn: 174262
|
|
|
|
|
|
|
|
|
| |
says, but that's a defect (to be filed). "Cls::purevfn()" is still an odr use.
Also fixes a bug that caused us to not mark the function referenced just
because we didn't want to mark it odr used.
llvm-svn: 174242
|
|
|
|
|
|
| |
nsstringis are compared without. // rdar://12716301
llvm-svn: 174214
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Prior to the patch, Clang does not properly promote types when a complex
integer operand is combined with an integer via a binary operator, or when
one is assigned to the other in either order. This patch detects when
promotion is needed (and permissible) and generates the necessary code.
The test assmes no target has the same size operands for "char" and
"long long," and that no target performs arithmetic on char operands without
extending them to a larger format first. If there are any targets for
which this is not the case, they should be XFAILed.
llvm-svn: 174181
|
|
|
|
|
|
| |
defined. Fixes PR14993!
llvm-svn: 174158
|
|
|
|
| |
llvm-svn: 174033
|
|
|
|
|
|
| |
a workaround for this bug from the -Wundefined-internals warning.
llvm-svn: 174020
|
|
|
|
|
|
| |
Just makes the code a little cleaner, and easier to reason about.
llvm-svn: 173953
|
|
|
|
|
|
|
|
| |
__fp16 isn't covered by the standard, but this resolves the oddity that float
gets promoted when passed variadically, but not the smaller type. This is
required by the AArch64 ABI, and a sane action elsewhere.
llvm-svn: 173918
|
|
|
|
|
|
|
| |
type of the string literal implicitly used for a raw user-defined literal call.
No test; this has no semantic impact.
llvm-svn: 173309
|
|
|
|
|
|
|
|
| |
operations (as opposed to storage only half/fp16).
Also add some semantic checks for OpenCL half types.
llvm-svn: 173254
|
|
|
|
|
|
|
| |
expressions which have undefined behavior due to multiple unsequenced
modifications or an unsequenced modification and use of a variable.
llvm-svn: 172690
|
|
|
|
|
|
| |
brought into 'clang' namespace by clang/Basic/LLVM.h
llvm-svn: 172323
|
|
|
|
|
|
| |
in lambdas.
llvm-svn: 171921
|
|
|
|
| |
llvm-svn: 171917
|
|
|
|
| |
llvm-svn: 171915
|
|
|
|
| |
llvm-svn: 171913
|
|
|
|
|
|
|
|
| |
struct variables with flexiable array members in
blocks (and lambdas). Issue error instead of
crashing in IRGen. // rdar://12655829
llvm-svn: 171912
|
|
|
|
|
|
| |
Thanks to Dmitri Gribenko for the suggestion.
llvm-svn: 171889
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In the source
static void f();
static void f();
template<typename T>
static void g() {
f();
}
static void f() {
}
void h() {
g<int>();
}
the call to f refers to the second decl, but it is only marked used at the end
of the translation unit during instantiation, after the third f decl has been
linked in.
With this patch we mark all subsequent decls used, so that it is easy to check
if a symbol is used or not.
llvm-svn: 171888
|
|
|
|
|
|
| |
Fixes <rdar://problem/12322000>.
llvm-svn: 171831
|
|
|
|
|
|
|
|
|
|
| |
with respect to the lower "left-hand-side bitwidth" bits, even when negative);
see OpenCL spec 6.3j. This patch both implements this behaviour in the code
generator and "constant folding" bits of Sema, and also prevents tests
to detect undefinedness in terms of the weaker C99 or C++ specifications
from being applied.
llvm-svn: 171755
|
|
|
|
|
|
| |
nearby 'C++0x' comments.
llvm-svn: 171372
|