| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 131435
|
| |
|
|
|
|
| |
reasons that honestly really, really need to be looked into.
llvm-svn: 131434
|
| |
|
|
|
|
| |
my defaulted constructor tests stop yelling at me about them.
llvm-svn: 131432
|
| |
|
|
|
|
| |
tools to be implemented without duplicating the boilerplate.
llvm-svn: 131425
|
| |
|
|
|
|
|
|
|
|
| |
Preserve the original triple in the NetBSD toolchain when using -m32 or
-m64 and the resulting effective target is different from the triple it
started with. This allows -m32 to use the same assembler/linking in
cross-compiling mode and avoids confusion about passing down target
specific flags in that case like --32.
llvm-svn: 131404
|
| |
|
|
|
|
| |
131365 caused PR9927.
llvm-svn: 131401
|
| |
|
|
|
|
|
| |
optimization. Make sure to require a vtable when trying to get the address
of a VTT, otherwise we would never end up emitting the VTT.
llvm-svn: 131400
|
| |
|
|
|
|
|
|
|
| |
operators; their semantics are guaranteed by the language.
If someone wants to argue that freestanding compiles shouldn't recognize
this, I might be convinceable.
llvm-svn: 131395
|
| |
|
|
|
|
| |
build.
llvm-svn: 131390
|
| |
|
|
|
|
|
|
| |
placement allocation or deallocation functions. These functions cannot be
replaced by the user and are exempt from the normal requirements on
allocation functions (e.g. that they must return unaliased memory).
llvm-svn: 131386
|
| |
|
|
| |
llvm-svn: 131385
|
| |
|
|
|
|
|
|
|
| |
nested-name-specifier, re-evaluate the nested-name-specifier as if we
were entering that context (which we did!), so that we'll resolve a
template-id to a particular class template partial
specialization. Fixes PR9913.
llvm-svn: 131383
|
| |
|
|
|
|
|
| |
It can be larger, it can be smaller, it can be signed, whatever. Handle
all the crazy cases with grace and spirit.
llvm-svn: 131378
|
| |
|
|
| |
llvm-svn: 131377
|
| |
|
|
|
|
| |
hasAggregateLLVMType.
llvm-svn: 131375
|
| |
|
|
| |
llvm-svn: 131374
|
| |
|
|
|
|
|
| |
types. Also, cache a translation of 'void' in CGM and provide a ptrdiff_t
alias. No functionality change.
llvm-svn: 131373
|
| |
|
|
| |
llvm-svn: 131372
|
| |
|
|
|
|
| |
Also follow gcc in that arrays of elements with zero size are encoded as arrays with zero elements.
llvm-svn: 131369
|
| |
|
|
|
|
|
|
|
|
| |
that the destructor body is trivial and that all member variables also have either
trivial destructors or trivial destructor bodies, we don't need to initialize the
vtable pointers since no virtual member functions will be called on the destructor.
Fixes PR9181.
llvm-svn: 131368
|
| |
|
|
| |
llvm-svn: 131367
|
| |
|
|
|
|
|
|
|
| |
send if the receiver is null. Normally it's not worthwhile to check this,
but avoiding the null-initialization is nice, and this also avoids nasty
problems where the null-initialization is visible within the call because
we use an aliased result buffer. rdar://problem/9402992
llvm-svn: 131366
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Go through and expand the members of bases into the encoding string (and encode the VTable as well).
Unlike gcc which expands virtual bases as many times as they appear in the
hierarchy, clang will only expand them once at the end, to reflect the actual layout.
Note that there doesn't seem to be a way to indicate in the encoding that
packing/alignment of members is different that normal, in which case
the encoding will be out-of-sync with the real layout.
If the runtime switches to just consider the size of types without
taking into account alignment, we could easily make padding explicit in the
encoding (e.g. using arrays of chars). The encoding strings would be
longer then though.
Also encode a flexible array member as array of 0 size, like gcc, not as a pointer.
llvm-svn: 131365
|
| |
|
|
|
|
|
|
| |
There are APIs, e.g. [NSValue valueWithBytes:objCType:], which use the encoding to find out
the size of an object pointed to by a pointer. Make things safer by making it illegal to @encode
incomplete types.
llvm-svn: 131364
|
| |
|
|
|
|
|
|
|
|
|
|
| |
template<class U>
struct X1 {
template<class T> void f(T*);
template<> void f(int*) { }
};
Won't be so simple. I need to think more about it.
llvm-svn: 131362
|
| |
|
|
|
|
| |
Howard Hinnant. Thanks!
llvm-svn: 131349
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
scope.
Necessary to parse MFC and MSVC standard lib code.
Example:
struct X {
template<class T> void f(T) { }
template<> void f(int) { }
}
llvm-svn: 131347
|
| |
|
|
|
|
|
|
| |
the right order.
Also, don't reject alias templates in all ElaboratedTypes: some ElaboratedTypes do not correspond to elaborated-type-specifiers.
llvm-svn: 131342
|
| |
|
|
|
|
| |
operators.
llvm-svn: 131338
|
| |
|
|
| |
llvm-svn: 131337
|
| |
|
|
| |
llvm-svn: 131336
|
| |
|
|
|
|
|
|
|
| |
out as "v-table" message sends and stop calling normal messages "legacy"
message sends.
Also, fix some comments to reveal the true state of affairs.
llvm-svn: 131335
|
| |
|
|
|
|
| |
and to decrease the amount of effort in appending strings.
llvm-svn: 131323
|
| |
|
|
| |
llvm-svn: 131321
|
| |
|
|
|
|
|
| |
mangled to avoid doing it twice for platforms that use prefixes like
Darwin.
llvm-svn: 131311
|
| |
|
|
| |
llvm-svn: 131310
|
| |
|
|
|
|
| |
This fixes PR9910
llvm-svn: 131309
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
__has_extension is a function-like macro which takes the same set
of feature identifiers as __has_feature. It evaluates to 1 if the
feature is supported by Clang in the current language (either as a
language extension or a standard language feature) or 0 if not.
At the same time, add support for the C1X feature identifiers
c_generic_selections (renamed from generic_selections) and
c_static_assert, and document them.
Patch by myself and Jean-Daniel Dupas.
llvm-svn: 131308
|
| |
|
|
| |
llvm-svn: 131301
|
| |
|
|
|
|
| |
*mmintrin.h files.
llvm-svn: 131300
|
| |
|
|
|
|
| |
-fno-constant-cfstrings. Patch by Jonathan Schleifer.
llvm-svn: 131298
|
| |
|
|
|
|
| |
'true' on detecting protocol cycles. No functionality change.
llvm-svn: 131297
|
| |
|
|
|
|
| |
One more special member to go
llvm-svn: 131287
|
| |
|
|
|
|
|
|
|
| |
This introduces a generic base class for the expression evaluator
classes, which handles a few common expression types which were
previously handled separately in each class. Also, the expression
evaluator now uses ConstStmtVisitor.
llvm-svn: 131281
|
| |
|
|
| |
llvm-svn: 131278
|
| |
|
|
|
|
|
| |
constant, also consider whether it's a class type that has any mutable
fields. If so, it can't be a global constant.
llvm-svn: 131276
|
| |
|
|
|
|
|
|
| |
template parameter lists to scope specifiers for friend declarations
about injected class name types. Fixes the
g++.dg/template/memfriend5.C regression in the GCC testsuite.
llvm-svn: 131272
|
| |
|
|
| |
llvm-svn: 131270
|
| |
|
|
|
|
| |
correct unaligned load.
llvm-svn: 131268
|
| |
|
|
| |
llvm-svn: 131260
|