| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 90940
|
|
|
|
|
|
| |
pointer.
llvm-svn: 90840
|
|
|
|
| |
llvm-svn: 90817
|
|
|
|
|
|
| |
to a memset or a memcpy from a global when possible.
llvm-svn: 90658
|
|
|
|
| |
llvm-svn: 90622
|
|
|
|
|
|
|
| |
directly into the sret pointer. This is an optimization in C, but is required
for correctness in C++ for classes with a non-trivial copy constructor.
llvm-svn: 90526
|
|
|
|
| |
llvm-svn: 90411
|
|
|
|
| |
llvm-svn: 90409
|
|
|
|
|
|
|
|
|
|
|
| |
Highlights include:
Add a helper to generate __cxa_free_exception and _ZSt9terminatev.
Add a region to handle EH object deallocation for ctor failures for throw.
Add a terminate handler for __cxa_end_catch.
A framework for adding cleanup actions for the exceptional edges only.
llvm-svn: 90305
|
|
|
|
| |
llvm-svn: 90152
|
|
|
|
|
|
| |
for a covariant thunk.
llvm-svn: 89933
|
|
|
|
|
|
| |
adjustment offset. Start using it. General cleanup in Mangle.cpp.
llvm-svn: 89925
|
|
|
|
|
|
| |
yet).
llvm-svn: 89835
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
All statements that involve conditions can now hold on to a separate
condition declaration (a VarDecl), and will use a DeclRefExpr
referring to that VarDecl for the condition expression. ForStmts now
have such a VarDecl (I'd missed those in previous commits).
Also, since this change reworks the Action interface for
if/while/switch/for, use FullExprArg for the full expressions in those
expressions, to ensure that we're emitting
Note that we are (still) not generating the right cleanups for
condition variables in for statements. That will be a follow-on
commit.
llvm-svn: 89817
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
cleanups for while loops:
1) Make sure that we destroy the condition variable of a while statement each time through the loop for, e.g.,
while (shared_ptr<WorkInt> p = getWorkItem()) {
// ...
}
2) Make sure that we always enter a new cleanup scope for the body of the while loop, even when there is no compound expression, e.g.,
while (blah)
RAIIObject raii(blah+1);
llvm-svn: 89800
|
|
|
|
|
|
| |
constructor has default arguments.
llvm-svn: 89783
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Outside the "if", to ensure that we destroy the condition variable
at the end of the "if" statement rather than at the end of the
block containing the "if" statement.
- Inside the "then" and "else" branches, so that we emit then- or
else-local cleanups at the end of the corresponding block when the
block is not a compound statement.
To make adding these new cleanup scopes easier (and since
switch/do/while will all need the same treatment), added the
CleanupScope RAII object to introduce a new cleanup scope and make
sure it gets cleaned up.
llvm-svn: 89773
|
|
|
|
| |
llvm-svn: 89769
|
|
|
|
| |
llvm-svn: 89678
|
|
|
|
| |
llvm-svn: 89467
|
|
|
|
| |
llvm-svn: 89190
|
|
|
|
| |
llvm-svn: 89174
|
|
|
|
| |
llvm-svn: 89033
|
|
|
|
| |
llvm-svn: 88901
|
|
|
|
| |
llvm-svn: 88843
|
|
|
|
| |
llvm-svn: 88680
|
|
|
|
| |
llvm-svn: 87087
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
destructors. This is needed because when compiling:
struct A {
virtual ~A();
};
void f(A* a) {
delete a;
}
A's deleting destructor should be called.
llvm-svn: 87083
|
|
|
|
|
|
| |
global array of objects.
llvm-svn: 86701
|
|
|
|
|
|
|
|
| |
being generated.
Add the most derived vtable pointer to the VTT.
llvm-svn: 86671
|
|
|
|
|
|
| |
Start implementing VTTs. WIP.
llvm-svn: 86650
|
|
|
|
|
|
| |
functionality change.
llvm-svn: 86407
|
|
|
|
| |
llvm-svn: 86256
|
|
|
|
|
|
| |
of array objects on block exit. Patch is by Anders Calrsson.
llvm-svn: 86032
|
|
|
|
|
|
|
| |
type to look at the volatile specifier. I found these all from just
hand auditing the code.
llvm-svn: 85967
|
|
|
|
| |
llvm-svn: 85905
|
|
|
|
| |
llvm-svn: 85560
|
|
|
|
| |
llvm-svn: 85453
|
|
|
|
|
|
|
|
| |
using the new LLVM support for this. This is temporarily hiding
behind horrible and ugly #ifdefs until the time when the optimizer
is stable (hopefully a week or so). Until then, lets make it "opt in" :)
llvm-svn: 85446
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
qualified reference to a declaration that is not a non-static data
member or non-static member function, e.g.,
namespace N { int i; }
int j = N::i;
Instead, extend DeclRefExpr to optionally store the qualifier. Most
clients won't see or care about the difference (since
QualifierDeclRefExpr inherited DeclRefExpr). However, this reduces the
number of top-level expression types that clients need to cope with,
brings the implementation of DeclRefExpr into line with MemberExpr,
and simplifies and unifies our handling of declaration references.
Extended DeclRefExpr to (optionally) store explicitly-specified
template arguments. This occurs when naming a declaration via a
template-id (which will be stored in a TemplateIdRefExpr) that,
following template argument deduction and (possibly) overload
resolution, is replaced with a DeclRefExpr that refers to a template
specialization but maintains the template arguments as written.
llvm-svn: 84962
|
|
|
|
|
|
| |
both scalar and aggregates.
llvm-svn: 84910
|
|
|
|
| |
llvm-svn: 84771
|
|
|
|
|
|
|
| |
generate the debug information for the first parameter to the block
invoke functions. WIP.
llvm-svn: 84737
|
|
|
|
|
|
| |
as argument to a function call. Removes a FIXME.
llvm-svn: 84694
|
|
|
|
| |
llvm-svn: 84456
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. CGF now has fewer bytes of state (one pointer instead of a vector).
2. The generated code is determinstic, instead of getting labels in
'map order' based on pointer addresses.
3. Clang now emits one 'indirect goto switch' for each function, instead
of one for each indirect goto. This fixes an M*N = N^2 IR size issue
when there are lots of address-taken labels and lots of indirect gotos.
4. This also makes the default cause do something useful, reducing the
size of the jump table needed (by one).
llvm-svn: 83952
|
|
|
|
|
|
| |
class offsets. Fix the code to handle virtual bases as well.
llvm-svn: 83426
|
|
|
|
| |
llvm-svn: 83271
|
|
|
|
|
|
| |
used by CGExprConstant.
llvm-svn: 83263
|
|
|
|
| |
llvm-svn: 83041
|