| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 100778
|
| |
|
|
| |
llvm-svn: 100776
|
| |
|
|
| |
llvm-svn: 100775
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
__cxxabiv1::__fundamental_type_info in every translation
unit. Previously, we would perform name lookup for
__cxxabiv1::__fundamental_type_info at the end of IRGen for a each
translation unit, to determine whether it was present. If so, we we
produce type information for all of the fundamental types. However,
this name lookup causes PCH deserialization of a significant part of the
translation unit, which has a woeful impact on performance.
With this change, we now look at each record type after we've
generated its vtable to see if it is
__cxxabiv1::__fundamental_type_info. If so, we generate type info for
all of the fundamental types. This works because
__cxxabiv1::__fundamental_type_info should always have a key function
(typically the virtual destructor), that will be defined once in the
support library. The fundamental type information will end up there.
Fixes <rdar://problem/7840011>.
llvm-svn: 100772
|
| |
|
|
|
|
| |
bit-field LValues to just store the base address of object containing the bit-field.
llvm-svn: 100745
|
| |
|
|
|
|
|
|
| |
to the intrinsic, even when math-errno is off.
Fixes rdar://problem/7828230 by falling back on the library function.
llvm-svn: 100613
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
have the code generate slap a srcloc metadata on inline asm nodes.
This allows us to diagnose invalid inline asms with such nice
diagnostics as:
<inline asm>:1:2: error: unrecognized instruction
abc incl %eax
^
asm.c:2:12: note: generated from here
__asm__ ("abc incl %0" : "+r" (X));
^
2 diagnostics generated.
llvm-svn: 100608
|
| |
|
|
| |
llvm-svn: 100534
|
| |
|
|
| |
llvm-svn: 100513
|
| |
|
|
| |
llvm-svn: 100512
|
| |
|
|
| |
llvm-svn: 100511
|
| |
|
|
|
|
|
|
|
| |
- Unfortunately, this requires some horrible code in CGObjCMac which always
allocats a CGBitFieldInfo because we don't currently build a proper layout
for Objective-C classes. It needs to be cleaned up, but I don't want the
bit-field cleanups to be blocked on that.
llvm-svn: 100474
|
| |
|
|
| |
llvm-svn: 100462
|
| |
|
|
| |
llvm-svn: 100433
|
| |
|
|
| |
llvm-svn: 100432
|
| |
|
|
|
|
| |
field to memcpy, memmove, and memset.
llvm-svn: 100305
|
| |
|
|
|
|
|
|
| |
instantiation declaration and no key function. We will produce the vtable at the explicit template instantiation.
Fixes PR6748
llvm-svn: 100266
|
| |
|
|
| |
llvm-svn: 100237
|
| |
|
|
|
|
|
|
| |
DeclContexts (-2 FIXMEs). We still have an annoying linear scan + hidden dependency on how Obj-C layout is done.
- This is also an algorithmic improvement in IRgen for Obj-C, although it probably doesn't matter in practice.
llvm-svn: 100228
|
| |
|
|
| |
llvm-svn: 100219
|
| |
|
|
| |
llvm-svn: 100200
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 100093
|
| |
|
|
|
|
|
| |
this was parsed as a typename-specifier, elaborated-type-specifier
(including the kind), or just a dependent qualified type name.
llvm-svn: 100039
|
| |
|
|
|
|
| |
refactoring work in this area.
llvm-svn: 100019
|
| |
|
|
| |
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
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
null checks, and make sure we elide null checks when accessing base class
members.
llvm-svn: 99963
|
| |
|
|
| |
llvm-svn: 99949
|
| |
|
|
| |
llvm-svn: 99946
|
| |
|
|
| |
llvm-svn: 99945
|
| |
|
|
| |
llvm-svn: 99944
|
| |
|
|
|
|
| |
Fixes PR3782.
llvm-svn: 99940
|
| |
|
|
|
|
| |
memmove, and memset
llvm-svn: 99930
|
| |
|
|
|
|
|
|
| |
This introduces FunctionType::ExtInfo to hold the calling convention and the
noreturn attribute. The next patch will extend it to include the regparm
attribute and fix the bug.
llvm-svn: 99920
|
| |
|
|
|
|
|
|
| |
class has no key function.
Fix PR6738.
llvm-svn: 99900
|
| |
|
|
| |
llvm-svn: 99884
|
| |
|
|
| |
llvm-svn: 99869
|
| |
|
|
| |
llvm-svn: 99868
|
| |
|
|
|
|
| |
as seen in PR6628 but for arrays this time.
llvm-svn: 99867
|
| |
|
|
| |
llvm-svn: 99866
|
| |
|
|
|
|
| |
temporaries code.
llvm-svn: 99865
|
| |
|
|
|
|
| |
when synthesizing a copy constructor. Fixes PR6628.
llvm-svn: 99864
|
| |
|
|
|
|
| |
verified that this passes a self-host but I'll let the bots self host as well before removing the now dead code.
llvm-svn: 99861
|