| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
when synthesizing a copy constructor. Fixes PR6628.
llvm-svn: 99864
|
|
|
|
|
|
| |
verified that clang bootstraps with this.
llvm-svn: 99800
|
|
|
|
| |
llvm-svn: 99798
|
|
|
|
| |
llvm-svn: 99791
|
|
|
|
|
|
| |
vtable.
llvm-svn: 99790
|
|
|
|
|
|
| |
-fdump-vtable-layouts since it doesn't work 100% yet :)
llvm-svn: 99787
|
|
|
|
|
|
| |
pointer for all bases, even those without a vtable pointer :)
llvm-svn: 99777
|
|
|
|
| |
llvm-svn: 99776
|
|
|
|
|
|
| |
vtable pointer for non-virtual primary bases. We also do a pre-order traversal of the class hierarchy; this is necessary in order to get the right vbase offset offsets in base ctors/dtors.
llvm-svn: 99775
|
|
|
|
| |
llvm-svn: 99773
|
|
|
|
| |
llvm-svn: 99614
|
|
|
|
|
|
| |
initialized.
llvm-svn: 99612
|
|
|
|
|
|
| |
construction vtables.
llvm-svn: 99609
|
|
|
|
| |
llvm-svn: 99385
|
|
|
|
|
|
| |
(finally).
llvm-svn: 99381
|
|
|
|
|
|
| |
VTableInfo class.
llvm-svn: 99250
|
|
|
|
|
|
| |
what it actually does.
llvm-svn: 98248
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1) emit base destructors as aliases to their unique base class destructors
under some careful conditions. This is enabled for the same targets that can
support complete-to-base aliases, i.e. not darwin.
2) Emit non-variadic complete constructors for classes with no virtual bases
as calls to the base constructor. This is enabled on all targets and in
theory can trigger in situations that the alias optimization can't (mostly
involving virtual bases, mostly not yet supported).
These are bundled together because I didn't think it worthwhile to split them,
not because they really need to be.
llvm-svn: 96842
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix some bugs with function-try-blocks and simplify normal try-block
code generation.
This implementation excludes a deleting destructor's call to
operator delete() from the function-try-block, which I believe
is correct but which I can't find straightforward support for at
a moment's glance.
llvm-svn: 96670
|
|
|
|
|
|
|
|
| |
calling them as subroutines. This triggers whenever the alias optimization
doesn't, i.e. when the dtor has linkonce linkage or there are virtual bases
or it's the deleting dtor.
llvm-svn: 96605
|
|
|
|
|
|
| |
change.
llvm-svn: 96564
|
|
|
|
|
|
|
|
| |
repeatedly reloading from an alloca. We still need to create the alloca
for debug info purposes (although we currently create it in all cases
because of some abstraction boundaries that're hard to break down).
llvm-svn: 96403
|
|
|
|
|
|
|
|
|
|
|
|
| |
the offset to the virtual bases statically inside of relying on the virtual
base offsets in the object's vtable(s). This is both more efficient and
sound against the destructor's manipulation of the vtables.
Also extract a few helper routines.
Oh and we seem to pass all tests with an optimized clang now.
llvm-svn: 96327
|
|
|
|
| |
llvm-svn: 95525
|
|
|
|
| |
llvm-svn: 95502
|
|
|
|
|
|
| |
all fully constructed members. Fixes ctor_dtor_count.cpp in the test suite.
llvm-svn: 95501
|
|
|
|
| |
llvm-svn: 95476
|
|
|
|
|
|
| |
taken for non-trivial constructors.
llvm-svn: 95457
|
|
|
|
|
|
|
|
|
|
|
|
| |
follows (as conservatively as possible) gcc's current behavior: attributes
written on return types that don't apply there are applied to the function
instead, etc. Only parse CC attributes as type attributes, not as decl attributes;
don't accepet noreturn as a decl attribute on ValueDecls, either (it still
needs to apply to other decls, like blocks). Consistently consume CC/noreturn
information throughout codegen; enforce this by removing their default values
in CodeGenTypes::getFunctionInfo().
llvm-svn: 95436
|
|
|
|
|
|
| |
for the reference binding bug that is preventing self-hosting.
llvm-svn: 95223
|
|
|
|
|
|
| |
initializers. Fixes about ~2000 clang/LLVM tests in the clang-on-clang build.
llvm-svn: 95116
|
|
|
|
| |
llvm-svn: 94965
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(necessarily simultaneous) changes:
- CXXBaseOrMemberInitializer now contains only a single initializer
rather than a set of initialiation arguments + a constructor. The
single initializer covers all aspects of initialization, including
constructor calls as necessary but also cleanup of temporaries
created by the initializer (which we never handled
before!).
- Rework + simplify code generation for CXXBaseOrMemberInitializers,
since we can now just emit the initializer as an initializer.
- Switched base and member initialization over to the new
initialization code (InitializationSequence), so that it
- Improved diagnostics for the new initialization code when
initializing bases and members, to match the diagnostics produced
by the previous (special-purpose) code.
- Simplify the representation of type-checked constructor initializers in
templates; instead of keeping the fully-type-checked AST, which is
rather hard to undo at template instantiation time, throw away the
type-checked AST and store the raw expressions in the AST. This
simplifies instantiation, but loses a little but of information in
the AST.
- When type-checking implicit base or member initializers within a
dependent context, don't add the generated initializers into the
AST, because they'll look like they were explicit.
- Record in CXXConstructExpr when the constructor call is to
initialize a base class, so that CodeGen does not have to infer it
from context. This ensures that we call the right kind of
constructor.
There are also a few "opportunity" fixes here that were needed to not
regress, for example:
- Diagnose default-initialization of a const-qualified class that
does not have a user-declared default constructor. We had this
diagnostic specifically for bases and members, but missed it for
variables. That's fixed now.
- When defining the implicit constructors, destructor, and
copy-assignment operator, set the CurContext to that constructor
when we're defining the body.
llvm-svn: 94952
|
|
|
|
|
|
| |
offset, we don't need to null check the input pointer. Fixes PR5965.
llvm-svn: 94942
|
|
|
|
|
|
| |
value if the class offset is 0.
llvm-svn: 94939
|
|
|
|
| |
llvm-svn: 94938
|
|
|
|
| |
llvm-svn: 94800
|
|
|
|
|
|
| |
initializing fields (and reference type fields in particular).
llvm-svn: 94799
|
|
|
|
|
|
| |
union or not from the FieldDecl (through its DeclContext).
llvm-svn: 94798
|
|
|
|
| |
llvm-svn: 93546
|
|
|
|
| |
llvm-svn: 92420
|
|
|
|
|
|
| |
aren't yet used in the ctors/dtors, but that will follow.
llvm-svn: 92409
|
|
|
|
| |
llvm-svn: 92399
|
|
|
|
| |
llvm-svn: 92148
|
|
|
|
| |
llvm-svn: 90401
|
|
|
|
| |
llvm-svn: 90026
|
|
|
|
|
|
| |
GetCXXBaseClassOffset to actually pass the test.
llvm-svn: 90025
|
|
CGTemporaries.
llvm-svn: 89742
|