| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
getVtableAddressPoint, it's not used.
llvm-svn: 99252
|
| |
|
|
|
|
| |
VTableInfo class.
llvm-svn: 99250
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
shadowing it in the GlobalDeclMap. Eliminates the string-uniquing
requirement for mangled names, which should help C++ codegen times a little.
Forces us to do string lookups instead of pointer lookups, which might hurt
codegen times a little across the board. We'll see how it plays out.
Removing the string-uniquing requirement implicitly fixes any bugs like
PR6635 which arose from the fact that we had multiple uniquing tables for
different kinds of identifiers.
llvm-svn: 99012
|