200 Commits

Author SHA1 Message Date
Anders Carlsson
6ce51fdf43 Move our (non-existing) RTTI emission code into CGRtti.cpp. No functionality change.
llvm-svn: 83732
2009-10-10 20:49:04 +00:00
Mike Stump
0d479e6653 Avoid warning.
llvm-svn: 83609
2009-10-09 01:25:47 +00:00
Anders Carlsson
ff971e8bf4 Add a MangleContext and pass it to all mangle functions. It will be used for keeping state, such as identifiers assigned to anonymous structs as well as scope encoding.
llvm-svn: 83442
2009-10-07 01:06:45 +00:00
Anders Carlsson
b703fd2216 Uncomment some commented out code.
llvm-svn: 83428
2009-10-06 23:02:00 +00:00
Anders Carlsson
c6d171ec77 Change GetAddressCXXOfBaseClass to use CXXBasePaths for calculating base class offsets. Fix the code to handle virtual bases as well.
llvm-svn: 83426
2009-10-06 22:43:30 +00:00
Anders Carlsson
80ef6f1a46 Pass the right type to GetAddrOfFunction when getting functions for the VTable. Fixes PR5021.
llvm-svn: 83395
2009-10-06 17:54:23 +00:00
Anders Carlsson
2ee3c011d9 Implement code generation of member function pointer calls. Fixes PR5121.
llvm-svn: 83271
2009-10-03 19:43:08 +00:00
Anders Carlsson
32bfb1ce8f Move some functions from CodeGenFunctions to CodeGenModule so they can be used by CGExprConstant.
llvm-svn: 83263
2009-10-03 14:56:57 +00:00
Anders Carlsson
8f4fd60c47 Handle CXXMemberCallExprs that point to a static method. Fixes PR5093.
llvm-svn: 83045
2009-09-29 03:54:11 +00:00
Mike Stump
e7a2b48572 Fix http://llvm.org/PR5090.
llvm-svn: 83035
2009-09-29 00:50:50 +00:00
Anders Carlsson
52d78a518a CodeGen for try statements. (We just emit the body for now).
llvm-svn: 82910
2009-09-27 18:58:34 +00:00
John McCall
8ccfcb51ee Refactor the representation of qualifiers to bring ExtQualType out of the
Type hierarchy.  Demote 'volatile' to extended-qualifier status.  Audit our
use of qualifiers and fix a few places that weren't dealing with qualifiers
quite right;  many more remain.

llvm-svn: 82705
2009-09-24 19:53:00 +00:00
Anders Carlsson
d49844b715 Add a new variant of EmitCXXAggrConstructorCall that takes a Value that holds the number of elements to construct, to be used when implementing new[].
llvm-svn: 82602
2009-09-23 02:45:36 +00:00
Anders Carlsson
cc52f65500 Move codegen of new and delete to CGCXXExpr.cpp
llvm-svn: 82585
2009-09-22 22:53:17 +00:00
John McCall
9dd450bb78 Change all the Type::getAsFoo() methods to specializations of Type::getAs().
Several of the existing methods were identical to their respective
specializations, and so have been removed entirely.  Several more 'leaf'
optimizations were introduced.

The getAsFoo() methods which imposed extra conditions, like
getAsObjCInterfacePointerType(), have been left in place.

llvm-svn: 82501
2009-09-21 23:43:11 +00:00
Mike Stump
f9c95be2f6 Generate more of the vbase virtual offset for covariant thunks. WIP.
llvm-svn: 82253
2009-09-18 19:06:35 +00:00
Anders Carlsson
ddf57d3df9 Remove an unnecessary FunctionDecl parameter to the synthesizing functions.
llvm-svn: 81759
2009-09-14 05:32:02 +00:00
Anders Carlsson
8783737029 Handle delete where the class has a virtual destructor.
llvm-svn: 81733
2009-09-14 00:16:25 +00:00
Anders Carlsson
864d525533 Rename AddressCXXOfBaseClass to GetAddressCXXOfBaseClass. Add a NullCheckValue argument (currently unused).
llvm-svn: 81606
2009-09-12 04:26:35 +00:00
Anders Carlsson
307408d2af Add CGCXXClass.cpp. and move CodeGenFunction::AddressCXXOfBaseClass there.
llvm-svn: 81604
2009-09-12 03:29:09 +00:00
Anders Carlsson
97c7eda14a Fix a crash when generating vtables that contain destructors.
llvm-svn: 81587
2009-09-12 00:00:29 +00:00
Mike Stump
80f6ac5a4f Add basic covariant thunk generation support. WIP.
llvm-svn: 81585
2009-09-11 23:25:56 +00:00
Anders Carlsson
73fcc95f0f Pass GlobalDecls to GenerateCode and StartFunction.
llvm-svn: 81485
2009-09-11 00:07:24 +00:00
Anders Carlsson
ecf9bf0158 GlobalDecl doesn't have an explicit constructor anymore.
llvm-svn: 81481
2009-09-10 23:43:36 +00:00
Anders Carlsson
1ca52689e7 Use the right GlobalDecl type for destructors.
llvm-svn: 81398
2009-09-09 23:17:18 +00:00
Anders Carlsson
e9766d559b If a cast expression needs either a conversion function or a constructor to be called, generate implicit child expressions that call them.
llvm-svn: 81383
2009-09-09 21:33:21 +00:00
Mike Stump
11289f4280 Remove tabs, and whitespace cleanups.
llvm-svn: 81346
2009-09-09 15:08:12 +00:00
Mike Stump
e73d5ca9a8 Refine vcall offsets. Cleanups. WIP.
llvm-svn: 81143
2009-09-07 04:27:52 +00:00
Mike Stump
b82db12b35 Refine overrides and thunks for virtual bases. Cleanups. WIP.
llvm-svn: 81080
2009-09-05 11:28:33 +00:00
Mike Stump
c9eb1727db Cleanup.
llvm-svn: 81078
2009-09-05 09:24:43 +00:00
Mike Stump
69bbd6ce84 Cleanups.
llvm-svn: 81077
2009-09-05 09:10:58 +00:00
Mike Stump
6363021ab9 Cleanups.
llvm-svn: 81075
2009-09-05 08:47:24 +00:00
Mike Stump
3cdb051425 Cleanups.
llvm-svn: 81074
2009-09-05 08:45:02 +00:00
Mike Stump
5e3ac0249c Cleanups.
llvm-svn: 81073
2009-09-05 08:40:18 +00:00
Mike Stump
ea8eea2c45 Cleanups.
llvm-svn: 81072
2009-09-05 08:37:03 +00:00
Mike Stump
db14a73606 Cleanups.
llvm-svn: 81071
2009-09-05 08:07:32 +00:00
Mike Stump
001ad31c9a Cleanups. WIP.
llvm-svn: 81069
2009-09-05 07:49:12 +00:00
Mike Stump
453fe4285d Install thunks later to fixup overrides. Track space taken by vbase
offsets better for thunk refinements.  Cleanups.  WIP.

llvm-svn: 81067
2009-09-05 07:20:32 +00:00
Douglas Gregor
d94105a1c2 Don't generate any code for an explicit call to a trivial destructor.
Now that parsing, semantic analysis, and (I think) code generation of
pseudo-destructor expressions and explicit destructor calls works,
update the example-dynarray.cpp test to destroy the objects it
allocates and update the test to actually compile + link.
The code seems correct, but the Clang-compiled version dies with a
malloc error. Time to debug!

llvm-svn: 81025
2009-09-04 19:04:08 +00:00
Mike Stump
5a522353c3 Add overidding for methods for vtable building for the secondary
vtables.  Add thunk generation.  WIP.

llvm-svn: 81014
2009-09-04 18:27:16 +00:00
Anders Carlsson
35dca26835 Fix an assertion when initializing a union using a member initializer. (We weren't casting from the union type to the initializer type correctly).
llvm-svn: 80837
2009-09-02 21:14:47 +00:00
Mike Stump
2348e62498 More overriding base work and some cleanups. WIP.
llvm-svn: 80737
2009-09-01 23:22:44 +00:00
Mike Stump
40dc64bcfc Split out overriding. WIP.
llvm-svn: 80732
2009-09-01 22:20:28 +00:00
Anders Carlsson
783ab50b33 Assert that we don't have any virtual bases. We can emit dtors for polymorphics classes just fune.
llvm-svn: 80722
2009-09-01 21:12:16 +00:00
Anders Carlsson
6b8b4b459d We can generate constructors/destructors with base classes and non-trivial fields just fine now.
llvm-svn: 80701
2009-09-01 18:33:46 +00:00
Douglas Gregor
96ee789d33 Rename CXXQualifiedMemberExpr -> CXXAdornedMemberExpr, since we will
also be adding explicit template arguments as an additional
"adornment". No functionality change.

llvm-svn: 80628
2009-08-31 21:41:48 +00:00
Eli Friedman
033e8d4ae6 Make IRGen for initializing a member reference work correctly.
llvm-svn: 80439
2009-08-29 20:58:20 +00:00
Mike Stump
beefdc8948 iGenerate vcalls as we build up the methods. WIP.
llvm-svn: 80405
2009-08-28 23:22:54 +00:00
Fariborz Jahanian
8b899e4247 ir-gen related patch for type conversion
with class type conversion methods. WIP.

llvm-svn: 80365
2009-08-28 15:11:24 +00:00
Mike Stump
a0d0e6fcb1 Fixup codegen for static dispatch to a virtual function that was
almost correct.  :-)

llvm-svn: 80181
2009-08-26 23:38:08 +00:00