Eli Friedman
f481ccafd8
Cleanup; no functionality change.
...
llvm-svn: 137126
2011-08-09 17:38:12 +00:00
Chris Lattner
0e62c1cc0b
remove unneeded llvm:: namespace qualifiers on some core types now that LLVM.h imports
...
them into the clang namespace.
llvm-svn: 135852
2011-07-23 10:55:15 +00:00
Chris Lattner
2192fe50da
de-constify llvm::Type, patch by David Blaikie!
...
llvm-svn: 135370
2011-07-18 04:24:23 +00:00
John McCall
6549b31fe9
Arrays are permitted to be zero-length in some situations.
...
llvm-svn: 135036
2011-07-13 07:37:11 +00:00
John McCall
f677a8e99e
Convert the standard default-construction loops to use phis and
...
partial destruction.
llvm-svn: 135033
2011-07-13 06:10:41 +00:00
John McCall
f47c069162
Aggressive dead code elimination.
...
llvm-svn: 135029
2011-07-13 03:03:51 +00:00
John McCall
30317fda63
Generalize Cleanup::Emit's "isForEH" parameter into a set
...
of flags. No functionality change.
llvm-svn: 134997
2011-07-12 20:27:29 +00:00
John McCall
4bd0fb1f09
Switch field destruction over to use the new destroyer-based API
...
and kill a lot of redundant code.
llvm-svn: 134988
2011-07-12 16:41:08 +00:00
John McCall
82fe67bb82
A number of array-related IR-gen cleanups.
...
- Emit default-initialization of arrays that were partially initialized
with initializer lists with a loop, rather than emitting the default
initializer N times;
- support destroying VLAs of non-trivial type, although this is not
yet exposed to users; and
- support the partial destruction of arrays initialized with
initializer lists when an initializer throws an exception.
llvm-svn: 134784
2011-07-09 01:37:26 +00:00
John McCall
55e1fbc848
LValue carries a type now, so simplify the main EmitLoad/Store APIs
...
by removing the redundant type parameter.
llvm-svn: 133860
2011-06-25 02:11:03 +00:00
John McCall
1553b19067
Restore correct use of GC barriers.
...
llvm-svn: 133144
2011-06-16 04:16:24 +00:00
John McCall
31168b077c
Automatic Reference Counting.
...
Language-design credit goes to a lot of people, but I particularly want
to single out Blaine Garst and Patrick Beard for their contributions.
Compiler implementation credit goes to Argyrios, Doug, Fariborz, and myself,
in no particular order.
llvm-svn: 133103
2011-06-15 23:02:42 +00:00
Richard Smith
938f40b5aa
Implement support for C++11 in-class initialization of non-static data members.
...
llvm-svn: 132878
2011-06-11 17:19:42 +00:00
Anders Carlsson
d6f1518cc9
Fix another regression from the "skip vtable pointer initialization"
...
optimization. Make sure to require a vtable when trying to get the address
of a VTT, otherwise we would never end up emitting the VTT.
llvm-svn: 131400
2011-05-16 04:08:36 +00:00
Anders Carlsson
49c0bd2a25
Re-enable the fix for PR9181 now that all the edge cases are handled.
...
llvm-svn: 131385
2011-05-15 17:36:21 +00:00
Anders Carlsson
b55c8c127e
Disable the optimization until the bug noticed by Sean Hunt has been fixed.
...
llvm-svn: 131372
2011-05-15 01:50:14 +00:00
Anders Carlsson
9bd7d16440
When emitting the destructor for a class with a vtable, if we can determine
...
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
2011-05-14 23:26:09 +00:00
Anders Carlsson
c36783e8b9
Move code to emit the callee of an CXXOperatorCallExpr out into a separate function in CGClass.cpp
...
llvm-svn: 131075
2011-05-08 20:32:23 +00:00
Alexis Hunt
9d47faf686
Ensure that destructors are properly inovked when an exception leaves
...
the body of a delegating constructor call.
This means that the delegating constructor implementation should be
complete and correct, though there are some rough edges (diagnostic
quality with the cycle detection and using a deleted destructor).
llvm-svn: 130803
2011-05-03 23:05:34 +00:00
Alexis Hunt
271c36811d
Fix delegating constructors stylistic issues.
...
Material bugfixes to come this afternoon.
llvm-svn: 130782
2011-05-03 20:19:28 +00:00
Eli Friedman
43dca6a8d2
Simplify code a bit by using CallArgList::add. No intended functionality change.
...
llvm-svn: 130699
2011-05-02 17:57:46 +00:00
Alexis Hunt
61bc173784
Fully implement delegating constructors!
...
As far as I know, this implementation is complete but might be missing a
few optimizations. Exceptions and virtual bases are handled correctly.
Because I'm an optimist, the web page has appropriately been updated. If
I'm wrong, feel free to downgrade its support categories.
llvm-svn: 130642
2011-05-01 07:04:31 +00:00
John McCall
a85af56e66
When block-capturing a variable with a non-trivial destructor,
...
make sure to mark the destructor. This normally isn't required,
because the destructor should have been marked as part of the
declaration of the local, but it's necessary when the variable
is a parameter because it's the call sites that are responsible
for those destructors.
llvm-svn: 130372
2011-04-28 02:15:35 +00:00
Anders Carlsson
98981b10c8
Replace a couple of Builder.CreateICmpEQ with Builder.CreateIsNull. No functionality change.
...
llvm-svn: 129261
2011-04-11 00:30:07 +00:00
Ken Dyck
bb4e977218
[Reapply r128776, modified so that it does not break debug info.]
...
Change the return type of CodeGenVTables::getVirtualBaseOffsetOffset() to
CharUnits. No change in functionality intended.
llvm-svn: 129072
2011-04-07 12:37:09 +00:00
Devang Patel
84852bbb42
Revert r128770, r128771, r128773 and r128776 for now. It breaks debug info.
...
llvm-svn: 128842
2011-04-04 20:36:06 +00:00
Ken Dyck
1473c9a7c4
Change the return type of CodeGenVTables::getVirtualBaseOffsetOffset() to
...
CharUnits. No change in functionality intended.
llvm-svn: 128776
2011-04-02 17:52:22 +00:00
Jay Foad
20c0f02cc5
Remove PHINode::reserveOperandSpace(). Instead, add a parameter to
...
PHINode::Create() giving the (known or expected) number of operands.
llvm-svn: 128538
2011-03-30 11:28:58 +00:00
Ken Dyck
16ffcac1a2
Convert the BaseOffset member of BaseSubobject to CharUnits from bits. No
...
change in functionality intended.
llvm-svn: 128190
2011-03-24 01:21:01 +00:00
Ken Dyck
3fb4c8920d
Convert OffsetFromNearestVBast parameter of InitializeVTablePointer(s) to
...
CharUnits. No change in functionality intended.
llvm-svn: 128129
2011-03-23 01:04:18 +00:00
Ken Dyck
cfc332cc43
Convert NonVirtual parameter of ApplyNonVirtualAndVirtualOffset() to
...
CharUnits. No change in functionality intended.
llvm-svn: 128126
2011-03-23 00:45:26 +00:00
Ken Dyck
6aa767c18e
Convert Offset variable in GetAddressOfDirectBaseInCompleteClass() to
...
CharUnits. No change in functionality intended.
llvm-svn: 128060
2011-03-22 01:21:15 +00:00
Ken Dyck
a1a4ae34d0
Change return value of ComputeNonVirtualBaseClassOffset() to CharUnits. No
...
change in functionality intended.
llvm-svn: 128050
2011-03-22 00:53:26 +00:00
John McCall
32ea969415
Use a slightly more semantic interface for emitting call arguments.
...
llvm-svn: 127494
2011-03-11 20:59:21 +00:00
John McCall
a738c25f5e
Use the "undergoes default argument promotion" bit on parameters to
...
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
2011-03-09 04:27:21 +00:00
Anders Carlsson
6dc07d4e56
Get rid of the areExceptionsEnabled() getter from LangOptions.
...
llvm-svn: 126598
2011-02-28 00:33:03 +00:00
Devang Patel
b6ed369e77
A constructor call should force class's debug info even if -flimit-debug-info is enabled.
...
llvm-svn: 126246
2011-02-22 20:55:26 +00:00
Anders Carlsson
08ce5ed1b1
Add a LangOptions::areExceptionsEnabled and start using it.
...
llvm-svn: 126062
2011-02-20 00:20:27 +00:00
John McCall
ad7c5c1657
Reorganize CodeGen{Function,Module} to eliminate the unfortunate
...
Block{Function,Module} base class. Minor other refactorings.
Fixed a few address-space bugs while I was there.
llvm-svn: 125085
2011-02-08 08:22:06 +00:00
Fariborz Jahanian
7f6f81ba9b
Clean up of -fapple-kext abi code. No change otherwise.
...
llvm-svn: 124807
2011-02-03 19:27:17 +00:00
Fariborz Jahanian
0c12ed1429
-fapple-kext, elimination of all direct calls to virtual dtors.
...
llvm-svn: 124757
2011-02-02 23:12:46 +00:00
Fariborz Jahanian
265c325ef3
-fapple-kext support for indirect call to virtuals dtors - wip.
...
llvm-svn: 124701
2011-02-01 23:22:34 +00:00
Anders Carlsson
883fc72c3c
Make emitting a VTT a two-step process, much like emitting a VTable. You first get the address of the VTT, and then pass it to EmitVTTDefinition.
...
llvm-svn: 124539
2011-01-29 19:16:51 +00:00
Anders Carlsson
a376b53695
When doing a derived-to-base class through a virtual class, we don't have to get the vbase offset from the vtable if the derived class is marked final.
...
llvm-svn: 124523
2011-01-29 03:18:56 +00:00
Alexis Hunt
1d7926502f
Renamed CXXBaseOrMemberInitializer to CXXCtorInitializer. This is both shorter,
...
more accurate, and makes it make sense for it to hold a delegating constructor
call.
llvm-svn: 123084
2011-01-08 20:30:50 +00:00
Francois Pichet
d583da04d0
More anonymous struct/union redesign. This one deals with anonymous field used in a constructor initializer list:
...
struct X {
X() : au_i1(123) {}
union {
int au_i1;
float au_f1;
};
};
clang will now deal with au_i1 explicitly as an IndirectFieldDecl.
llvm-svn: 120900
2010-12-04 09:14:42 +00:00
Fariborz Jahanian
e988bdac44
Block API patch to do copy ctor of copied-in cxx objects in
...
copy helper function and dtor of copied cxx objects
in dispose helper functions. __block variables
TBD next.
llvm-svn: 119011
2010-11-13 21:53:34 +00:00
Anders Carlsson
fd88a6160d
Rename getBaseClassOffset to getBaseClassOffsetInBits and introduce a getBaseClassOffset which returns the offset in CharUnits. Do the same thing for getVBaseClassOffset.
...
llvm-svn: 117881
2010-10-31 23:22:37 +00:00
Dan Gohman
8fc50c296a
Factor out the code for emitting code to load vtable pointer members
...
so that it's done in one place.
llvm-svn: 117386
2010-10-26 18:44:08 +00:00
John McCall
1c9c3fd50a
Death to blocks, or at least the word "block" in one particular obnoxiously
...
ambiguous context.
llvm-svn: 116567
2010-10-15 04:57:14 +00:00