| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
reasons that honestly really, really need to be looked into.
llvm-svn: 131434
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
complete destructors for abstract classes unless the destructor is virtual
and thus needs to be in the vtable.
llvm-svn: 131068
|
|
|
|
|
|
| |
change in functionality intended.
llvm-svn: 128190
|
|
|
|
|
|
| |
recomputation.
llvm-svn: 127322
|
|
|
|
|
|
|
|
|
|
| |
simplify the logic of initializing function parameters so that we don't need
both a variable declaration and a type in FunctionArgList. This also means
that we need to propagate the CGFunctionInfo down in a lot of places rather
than recalculating it from the FAL. There's more we can do to eliminate
redundancy here, and I've left FIXMEs behind to do it.
llvm-svn: 127314
|
|
|
|
|
|
| |
destruction in the destructor-aliases logic. Fixes PR 9197.
llvm-svn: 125447
|
|
|
|
|
|
|
|
| |
Block{Function,Module} base class. Minor other refactorings.
Fixed a few address-space bugs while I was there.
llvm-svn: 125085
|
|
|
|
|
|
| |
We now emit everything except unused implicit virtual member functions when building the vtable.
llvm-svn: 124935
|
|
|
|
| |
llvm-svn: 124807
|
|
|
|
|
|
|
| |
This reopens PR99114, but that one at least can be avoided with an #include.
PR9130 cannot.
llvm-svn: 124780
|
|
|
|
|
|
|
|
|
|
|
| |
is not defined in the current translation unit. Doing so lead to compile errors
such as PR9114.
Instead, when CodeGen is building the vtable, don't try to emit a definition
for functions that aren't marked used in the current translation unit.
Fixes PR9114.
llvm-svn: 124768
|
|
|
|
| |
llvm-svn: 124701
|
|
|
|
|
|
|
| |
indirect vf calls and addition of extra entry
at bottom of vtbls.
llvm-svn: 124507
|
|
|
|
|
|
| |
vf calls, be made indirect. This patch is towards that goal.
llvm-svn: 123922
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
process, perform a number of refactorings:
- Move MiscNameMangler member functions to MangleContext
- Remove GlobalDecl dependency from MangleContext
- Make MangleContext abstract and move Itanium/Microsoft functionality
to their own classes/files
- Implement ASTContext::createMangleContext and have CodeGen use it
No (intended) functionality change.
llvm-svn: 123386
|
|
|
|
| |
llvm-svn: 120252
|
|
|
|
| |
llvm-svn: 120250
|
|
|
|
|
|
|
|
|
| |
data members by delaying the emission of the initializer until after
linkage and visibility have been set on the global. Also, don't
emit a guard unless the variable actually ends up with vague linkage,
and don't use thread-safe statics in any case.
llvm-svn: 118336
|
|
|
|
|
|
| |
getBaseClassOffset which returns the offset in CharUnits. Do the same thing for getVBaseClassOffset.
llvm-svn: 117881
|
|
|
|
|
|
| |
so that it's done in one place.
llvm-svn: 117386
|
|
|
|
|
|
|
|
| |
more closely parallel the computation of linkage. This gets us to a state
much closer to what gcc emits, modulo bugs, which will undoubtedly arise in
abundance.
llvm-svn: 117147
|
|
|
|
| |
llvm-svn: 115561
|
|
|
|
|
|
| |
Itanium guards and use a slightly different compiled-in API.
llvm-svn: 113330
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
implement ARM array cookies. Also fix a few unfortunate bugs:
- throwing dtors in deletes prevented the allocation from being deleted
- adding the cookie to the new[] size was not being considered for
overflow (and, more seriously, was screwing up the earlier checks)
- deleting an array via a pointer to array of class type was not
causing any destructors to be run and was passing the unadjusted
pointer to the deallocator
- lots of address-space problems, in case anyone wants to support
free store in a variant address space :)
llvm-svn: 112814
|
|
|
|
|
|
| |
member-pointer refactoring: dereferencing a member data pointer.
llvm-svn: 112640
|
|
|
|
|
|
| |
under the ARM ABI.
llvm-svn: 112588
|
|
|
|
|
|
|
|
|
|
|
| |
class; they should just be completely opaque throughout IR gen now,
although I haven't really audited that.
Fix a bug apparently inherited from gcc-4.2 where we failed to null-check
member data pointers when performing derived-to-base or base-to-derived
conversions on them.
llvm-svn: 111789
|
|
|
|
|
|
|
|
|
| |
Make CGT defer to the ABI on all member pointer types.
This requires giving CGT a handle to the ABI.
It's way easier to make that work if we avoid lazily creating the ABI.
Make it so.
llvm-svn: 111786
|
|
|
|
|
|
|
|
|
|
| |
pointers. I find the resulting code to be substantially cleaner, and it
makes it very easy to use the same APIs for data member pointers (which I have
conscientiously avoided here), and it avoids a plethora of potential
inefficiencies due to excessive memory copying, but we'll have to see if it
actually works.
llvm-svn: 111776
|
|
|
|
|
|
|
|
|
|
|
|
| |
the ABI code. Implement correct semantics for these on ARM.
I believe this completes the implementation of member function pointers
on ARM.
I think I'm going to switch member function pointers over to be
non-aggregates while I have all this in mind.
llvm-svn: 111774
|
|
|
|
|
|
|
|
| |
duplication between the constant and non-constant paths in all of this.
Implement ARM ABI semantics for member pointer constants and conversion.
llvm-svn: 111772
|
|
|
|
| |
llvm-svn: 111771
|
|
|
|
|
|
| |
Pretty much everything having to do with member pointers is ABI-specific.
llvm-svn: 111770
|
|
|
|
|
|
| |
No functionality change.
llvm-svn: 111752
|
|
|
|
|
|
|
|
| |
AST library.
This also adds infrastructure for supporting multiple C++ ABIs in the AST.
llvm-svn: 111117
|
|
|
|
|
|
|
|
| |
of getBody() when we are just checking the existence of a body, to avoid de-serialization of the body from PCH.
Makes de-serialization of the function body even more "lazier".
llvm-svn: 107768
|
|
|
|
|
|
| |
CXXRecordDecl::getDestructor(); no functionality change.
llvm-svn: 107394
|
|
|
|
| |
llvm-svn: 106549
|
|
|
|
|
|
| |
dependency edge was reversed such that CodeGen depends on Frontend.
llvm-svn: 106065
|
|
|
|
| |
llvm-svn: 105673
|
|
|
|
| |
llvm-svn: 105672
|
|
|
|
|
|
|
|
|
|
|
| |
isn't possible to compute.
This patch is mostly refactoring; the key change is the addition of the code
starting with the comment, "Check whether the function has a computable LLVM
signature." The solution here is essentially the same as the way the
vtable code handles such functions.
llvm-svn: 105151
|
|
|
|
|
|
|
|
| |
This class only supports name mangling (which is apparently used during C/ObjC
codegen). For now only the Itanium C++ ABI is supported. Patches to add a
second C++ ABI are forthcoming.
llvm-svn: 104630
|
|
|
|
|
|
|
|
|
| |
variables within blocks. We loosely follow GCC's mangling, but since
these are always internal symbols the names don't really matter. I
intend to revisit block mangling later, because GCC's mangling is
rather verbose. <rdar://problem/8015719>.
llvm-svn: 104610
|
|
|
|
|
|
|
|
|
|
|
|
| |
variables should have that linkage. Otherwise, its static local
variables should have internal linkage. To avoid computing this excessively,
set a function's linkage before we emit code for it.
Previously we were assigning weak linkage to the static variables of
static inline functions in C++, with predictably terrible results. This
fixes that and also gives better linkage than 'weak' when merging is required.
llvm-svn: 104581
|
|
|
|
| |
llvm-svn: 101666
|
|
|
|
| |
llvm-svn: 99869
|
|
|
|
| |
llvm-svn: 99374
|
|
|
|
|
|
| |
for noticing.
llvm-svn: 99260
|