Commit Graph

333 Commits

Author SHA1 Message Date
Anders Carlsson cc5de097a6 Minor cleanups to the empty subobject map.
llvm-svn: 105608
2010-06-08 15:56:03 +00:00
Anders Carlsson 7498b32117 And now for the best part: Removing the old code.
llvm-svn: 105162
2010-05-30 06:56:46 +00:00
Anders Carlsson b1fcdd063c Turn on the new empty base subobject tracking code. It's a bit faster than the previous code. However, it still has quadratic performance, something which I intend to fix shortly in a subsequent patch.
llvm-svn: 105161
2010-05-30 06:52:33 +00:00
Anders Carlsson a7774a685d Cleanup.
llvm-svn: 105114
2010-05-29 21:10:24 +00:00
Anders Carlsson a60b86a3fa Make EmptySubobjectMap::CanPlaceBaseAtOffset take a BaseSubobjectInfo as well.
llvm-svn: 105113
2010-05-29 20:49:49 +00:00
Anders Carlsson d7f3fcf248 Change RecordLayoutBuilder::LayoutBase to take a BaseSubobjectInfo. No functionality change.
llvm-svn: 105112
2010-05-29 20:47:33 +00:00
Anders Carlsson 6b0d914ad0 Rework the way virtual primary bases are added when laying out classes. Instead of doing it as a separate step, we now use the BaseSubobjectInfo and use it when laying out the bases. This fixes a bug where we would either not add a primary virtual base at all, or add it at the wrong offset.
llvm-svn: 105110
2010-05-29 19:44:50 +00:00
Anders Carlsson d6ff5d7787 Change LayoutVirtualBase to also take a BaseSubobjectInfo.
llvm-svn: 105104
2010-05-29 17:48:36 +00:00
Anders Carlsson bb0e6787b0 Change RecordLayoutBuilder::LayoutNonVirtualBase to take a BaseSubobjectInfo. No functionality change.
llvm-svn: 105103
2010-05-29 17:42:25 +00:00
Anders Carlsson e3c24c7033 Move computing the base subobject info for a class into the RecordLayoutBuilder because we're going to need it to be able to correctly add offsets for primary virtual bases.
llvm-svn: 105102
2010-05-29 17:35:14 +00:00
Anders Carlsson a7f3cdb0f2 Rename BaseInfo to BaseSubobjectInfo.
llvm-svn: 105007
2010-05-28 21:24:37 +00:00
Anders Carlsson 056818f8a2 Move BaseInfo outside of the EmptySubobject class.
llvm-svn: 105002
2010-05-28 21:13:31 +00:00
Anders Carlsson db319761e7 More work on the empty subobject map. This code is not yet used.
llvm-svn: 104861
2010-05-27 18:20:57 +00:00
Daniel Dunbar 6da1098b4b Sema: Add initial support for '#pragma options align=mac68k'.
- Docs are fairly sketchy, if someone wants to pore through gcc to look for
   holes I'd appreciate any failing test cases!

llvm-svn: 104809
2010-05-27 05:45:51 +00:00
Anders Carlsson 439edd1aea More work on the new empty subobject map.
llvm-svn: 104808
2010-05-27 05:41:06 +00:00
Daniel Dunbar 592a85c137 Strip trailing whitespace.
llvm-svn: 104801
2010-05-27 02:25:46 +00:00
Daniel Dunbar 401304462a AST: Rename PragmaPackAttr to MaxFieldAlignmentAttr, which is more accurate.
llvm-svn: 104795
2010-05-27 01:12:46 +00:00
Anders Carlsson c121b4e59f More work on the empty subobjects map.
llvm-svn: 104787
2010-05-27 00:07:01 +00:00
Anders Carlsson c5ca1f7799 Move ComputeEmptySubobjectSizes to EmptySubobjectMap.
llvm-svn: 104702
2010-05-26 15:54:25 +00:00
Anders Carlsson f58de11b61 Stub out the EmptySubobjectsMap class.
llvm-svn: 104701
2010-05-26 15:32:58 +00:00
Anders Carlsson ce7f77729a Inline the RecordLayoutBuilder constructor.
llvm-svn: 104700
2010-05-26 15:20:08 +00:00
Anders Carlsson c28a6c9251 Add a Layout overload that takes a CXXRecordDecl.
llvm-svn: 104695
2010-05-26 15:10:00 +00:00
Benjamin Kramer c7656cdf83 Move RecordLayoutBuilder into an anonymous namespace.
llvm-svn: 104693
2010-05-26 09:58:31 +00:00
Anders Carlsson c222620adf Rename ASTRecordLayoutBuilder to RecordLayoutBuilder.
llvm-svn: 104688
2010-05-26 05:58:59 +00:00
Anders Carlsson 35a36eb78d Move the ASTRecordLayoutBuilder class declaration into the .cpp file.
llvm-svn: 104686
2010-05-26 05:41:04 +00:00
Anders Carlsson b48414f4cb Fix thinko and remove another unused function.
llvm-svn: 104683
2010-05-26 05:31:23 +00:00
Anders Carlsson 1d1e4cf04d Fix build.
llvm-svn: 104682
2010-05-26 05:25:15 +00:00
Anders Carlsson d20e7cd3c6 No need to use the PrimaryBaseInfo struct in the builder.
llvm-svn: 104681
2010-05-26 05:20:58 +00:00
Anders Carlsson 87209bb54b Remove FIXME.
llvm-svn: 104674
2010-05-26 05:11:02 +00:00
Anders Carlsson d295486012 Fold the other Layout overload into its sole call site.
llvm-svn: 104673
2010-05-26 05:10:47 +00:00
Anders Carlsson 6ed3a9a494 Fold the ASTRecordLayoutBuilder::ComputeLayout overload that takes an ObjCInterfaceDecl pointer into its only callsite.
llvm-svn: 104672
2010-05-26 05:04:25 +00:00
Anders Carlsson df291d8d8b Move the relevant ASTContext member functions that deal with ASTRecordLayoutBuilder into RecordLayoutBuilder.cpp. This matches the way we interact with other builder classes (CGRecordLayoutBuilder, VTableBuilder and VTTBuilder) and it also allows for making ASTRecordLayoutBuilder a private class without a header file.
llvm-svn: 104671
2010-05-26 04:56:53 +00:00
Anders Carlsson 5773205a8d When recording empty subobjects we should always look at the primary virtual base.
llvm-svn: 104464
2010-05-23 18:14:24 +00:00
Anders Carlsson 5f1a1704a2 Add an UpdateVBases parameter to UpdateEmptyClassOffsets. Not used just yet.
llvm-svn: 103403
2010-05-10 15:28:59 +00:00
Anders Carlsson d626cb74d1 More work on handling empty classes.
llvm-svn: 103402
2010-05-10 15:26:14 +00:00
Anders Carlsson 82828a31f6 Cleanup.
llvm-svn: 103370
2010-05-09 05:03:38 +00:00
Anders Carlsson 15837f8f63 Actually compute the empty subobject sizes. No functionality change yet.
llvm-svn: 103363
2010-05-08 23:06:26 +00:00
Anders Carlsson 2357bfd9d0 Add a SizeOfLargestEmptySubobject member to ASTRecordLayout. For C++ classes this will hold the largest empty subobject or 0 if the class doesn't have any empty subobjects.
llvm-svn: 103359
2010-05-08 22:35:05 +00:00
Daniel Dunbar ccabe48235 AST: Dump ASTRecordLayout objects when they are created with -fdump-record-layouts.
llvm-svn: 101815
2010-04-19 20:44:53 +00:00
Dan Gohman 145f3f1e83 Fix -Wcast-qual warnings.
llvm-svn: 101786
2010-04-19 16:39:44 +00:00
Anders Carlsson aad5fa85d0 If a wide bit-field is inside a union its offset should always be 0.
llvm-svn: 101668
2010-04-17 20:21:41 +00:00
Benjamin Kramer b11416d061 Add raw_ostream operators to NamedDecl for convenience. Switch over all users of getNameAsString on a stream.
The next step is to print the name directly into the stream, avoiding a temporary std::string copy.

llvm-svn: 101632
2010-04-17 09:33:03 +00:00
Anders Carlsson d9abbe56a5 Remove printfs.
llvm-svn: 101470
2010-04-16 15:59:41 +00:00
Anders Carlsson 5723516ce9 More work on wide bit-fields, WIP.
llvm-svn: 101467
2010-04-16 15:57:11 +00:00
Anders Carlsson 5efc56e36b Rename the ASTContext member 'Context'.
llvm-svn: 101462
2010-04-16 15:07:51 +00:00
Anders Carlsson ea7b18298e Split adding the primary virtual base offsets out into a separate pass. This fixes a bug where we would lay out virtual bases in the wrong order.
llvm-svn: 101373
2010-04-15 16:12:58 +00:00
Daniel Dunbar 1da6511b99 Tweak spelling (Bitfield -> BitField)
llvm-svn: 101369
2010-04-15 15:06:18 +00:00
Daniel Dunbar 3d9289c736 Add TargetInfo::useBitfieldTypeAlignment().
- Used to determine whether the alignment of the type in a bit-field is
   respected when laying out structures. The default is true, targets can
   override this as needed.

 - This is designed to correspond to the PCC_BITFIELD_TYPE_MATTERS macro in
   gcc. The AST/Sema implementation only affects one line, unless I have
   forgotten something. I'd appreciate further review.

 - IRgen still needs to be updated to fully support this (which is effectively
   PR5591).

llvm-svn: 101356
2010-04-15 06:18:39 +00:00
Daniel Dunbar fe53aaef51 Remove unnecessary cast.
llvm-svn: 101176
2010-04-13 20:52:05 +00:00
Anders Carlsson 7a148f7141 Fix another vbase layout bug.
llvm-svn: 100952
2010-04-10 21:35:33 +00:00
Anders Carlsson 5b441d73b7 Add a simple debug-only verification pass to the record layout builder.
llvm-svn: 100951
2010-04-10 21:24:48 +00:00
Anders Carlsson 291279e3a6 Simplify the virtual base layout code and fix a bug where we wouldn't store the offset for a virtual base.
llvm-svn: 100940
2010-04-10 18:42:27 +00:00
Daniel Dunbar aa423afffc AST: Move C++ record layout dumping to ASTContext::DumpRecordLayout.
llvm-svn: 100746
2010-04-08 02:59:49 +00:00
Anders Carlsson fe9009635d More record layout builder cleanup and simplification.
llvm-svn: 98238
2010-03-11 05:42:17 +00:00
Anders Carlsson de710c9125 Get rid of the PrimaryBase parameter from LayoutVirtualBases.
llvm-svn: 98233
2010-03-11 04:33:54 +00:00
Anders Carlsson f7b7a1e781 More cleanup towards fixing the real bug.
llvm-svn: 98232
2010-03-11 04:24:02 +00:00
Anders Carlsson 6a84889d3f Replace the class offset vectors in RecordLayoutBuilder with maps instead so we'll have faster lookup and so we can detect duplicates.
llvm-svn: 98231
2010-03-11 04:10:39 +00:00
Anders Carlsson f2fa75bdbb More cleanup.
llvm-svn: 98230
2010-03-11 03:39:12 +00:00
Anders Carlsson c4c00ec41b More record layout builder cleanup.
llvm-svn: 98229
2010-03-11 02:41:30 +00:00
Anders Carlsson aa87b4eab1 Remove the IndirectPrimary parameter in LayoutVirtualBases; it's already there as a member variable.
llvm-svn: 98211
2010-03-11 00:21:21 +00:00
Anders Carlsson 8630b5b09b More cleanup and simplification of the record layout builder.
llvm-svn: 98208
2010-03-11 00:15:35 +00:00
Anders Carlsson 0d0b588fb2 Get rid of the LayoutBaseNonVirtually; it was used to lay out a base either as a non-virtual base or a virtual base.
llvm-svn: 98198
2010-03-10 22:26:24 +00:00
Anders Carlsson 09ffa32b92 More shuffling.
llvm-svn: 98197
2010-03-10 22:21:28 +00:00
Anders Carlsson f08e681ba8 Cleanups, no functionality change yet.
llvm-svn: 98196
2010-03-10 22:16:06 +00:00
Ted Kremenek c3015a914f Allocate ASTRecordLayout objects using the allocator associated with ASTContext.
This allows them to be allocated using a BumpPtrAllocated
in the common case.

llvm-svn: 97978
2010-03-08 20:56:29 +00:00
Fariborz Jahanian aef662206b Patch removes IVars list from ObjCInterfaceDecl and
instead relies on their DeclContext for iteration, etc.

llvm-svn: 96638
2010-02-19 00:31:17 +00:00
Zhongxing Xu ec345b7ecb Simplify code. If we can reach here, the base must be virtual.
llvm-svn: 96211
2010-02-15 04:28:35 +00:00
Mike Stump 0a2754ed8a Be sure to select primary bases among the nearly empties in preorder,
not just among the direct bases.  Before we where missing nearly
empties that were bases of virtual base classes.

llvm-svn: 94208
2010-01-22 20:27:17 +00:00
Douglas Gregor a318efd1f2 Improve key-function computation for templates. In particular:
- All classes can have a key function; templates don't change that.
  non-template classes when computing the key function.
  - We always mark all of the virtual member functions of class
  template instantiations. 
  - The vtable for an instantiation of a class template has weak
  linkage. 

We could probably use available_externally linkage for vtables of
classes instantiated by explicit instantiation declarations (extern
templates), but GCC doesn't do this and I'm not 100% that the ABI
permits it.

llvm-svn: 92753
2010-01-05 19:06:31 +00:00
Eli Friedman f2c79b6b9c Misc key function fixes.
llvm-svn: 90831
2009-12-08 03:56:49 +00:00
Anders Carlsson 8e0317bf05 Instantiated or specialized class templates never have a key function. This (and the previous check-in) fixes PR5557.
llvm-svn: 90753
2009-12-07 08:29:39 +00:00
Anders Carlsson 5ebf8b44e9 Move key functions to a separate map.
llvm-svn: 90745
2009-12-07 04:35:11 +00:00
Eli Friedman 71a26d8f82 Move helper onto CXXMethodDecl.
llvm-svn: 90716
2009-12-06 20:50:05 +00:00
Eli Friedman 0846d52f70 Tweak "key function" rules so that they work for templates with virtual
inline functions.

llvm-svn: 90645
2009-12-05 04:55:55 +00:00
Anders Carlsson f98849eb8a In Sema, whenever we think that a function is going to cause a vtable to be generated, we mark any virtual implicit member functions as referenced.
llvm-svn: 90327
2009-12-02 17:15:43 +00:00
Anders Carlsson b1d3f7c909 Have ASTRecordLayout keep track of the key function, in preparation of fixing a synthetic ctor/dtor bug.
llvm-svn: 90168
2009-11-30 23:41:22 +00:00
Anders Carlsson a30c0d3ace Use a PointerIntPair for the PrimaryBaseInfo. Yay for clever LLVM data structures!
llvm-svn: 90020
2009-11-27 22:14:40 +00:00
Anders Carlsson 03ff379911 Add a new PrimaryBaseInfo struct that combines the record decl of a primary base with whether it's virtual or not.
llvm-svn: 90018
2009-11-27 22:05:05 +00:00
Anders Carlsson ba958400a2 When laying out bitfields, make sure that the data size is always aligned to a byte. This fixes PR5580.
llvm-svn: 89611
2009-11-22 19:13:51 +00:00
Anders Carlsson 072094407d Move bit-field layout out into a separate function. No functionality change.
llvm-svn: 89604
2009-11-22 17:37:31 +00:00
Alexis Hunt 96d5c76498 Added rudimentary C++0x attribute support.
The following attributes are currently supported in C++0x attribute
lists (and in GNU ones as well):
 - align() - semantics believed to be conformant to n3000, except for
   redeclarations and what entities it may apply to
 - final - semantics believed to be conformant to CWG issue 817's proposed
   wording, except for redeclarations
 - noreturn - semantics believed to be conformant to n3000, except for
   redeclarations
 - carries_dependency - currently ignored (this is an optimization hint)

llvm-svn: 89543
2009-11-21 08:43:09 +00:00
Mike Stump 4e16d05dc4 Fixup spacing.
llvm-svn: 86792
2009-11-11 02:49:00 +00:00
Mike Stump 2b84dd39be Refine layout for indirect virtual base classes.
llvm-svn: 86116
2009-11-05 04:02:15 +00:00
Sebastian Redl 1054faed32 Audit the code for places where it is assumed that every base specifier refers to a RecordType. Add assertions or conditions as appropriate. This fixes another crash in the Apache stdlib vector.
llvm-svn: 85055
2009-10-25 17:03:50 +00:00
Anders Carlsson 534b0639db Address comment from Daniel.
llvm-svn: 82865
2009-09-26 16:55:29 +00:00
Anders Carlsson 47680d8040 Rename NextOffset to DataSize.
llvm-svn: 82832
2009-09-26 01:34:51 +00:00
Anders Carlsson 7f78d85be4 Start at NextOffset when laying out bases as well.
llvm-svn: 82831
2009-09-26 01:29:10 +00:00
Anders Carlsson a6d95b5a3e Use NextOffset when laying out a field.
llvm-svn: 82828
2009-09-26 01:09:35 +00:00
Anders Carlsson d7d358a65e Even more work on empty classes.
llvm-svn: 82770
2009-09-25 15:39:00 +00:00
Anders Carlsson e1883100a3 Who would have thought that empty classes were so tricky? Handle cases where an empty virtual base class needs to be moved aside because it conflicts with the first field.
llvm-svn: 82746
2009-09-25 01:54:38 +00:00
Anders Carlsson 4bf82141e7 Handle array fields that contain empty structs.
llvm-svn: 82744
2009-09-25 01:23:32 +00:00
Anders Carlsson 6f95c705ea More work on empty classes.
llvm-svn: 82736
2009-09-25 00:02:51 +00:00
Anders Carlsson bb66bc8e84 More improvements with laying out empty bases.
llvm-svn: 82682
2009-09-24 05:21:31 +00:00
Anders Carlsson f24b18fb06 More work on empty classes.
llvm-svn: 82679
2009-09-24 03:22:10 +00:00
Anders Carlsson 6522b05db7 Scaffolding for supporting empty bases/fields.
llvm-svn: 82678
2009-09-24 03:13:30 +00:00
Anders Carlsson 55640546e4 If we already set a primary base, don't set it to the first nearly empty base class.
llvm-svn: 82563
2009-09-22 19:16:59 +00:00
Anders Carlsson 96cff1fc10 Explicitly initialize the PrimaryBase and PrimaryBaseWasVirtual members.
llvm-svn: 82560
2009-09-22 18:21:58 +00:00
Mike Stump 865715442e Yes.
llvm-svn: 82559
2009-09-22 17:38:02 +00:00
Anders Carlsson 8143069417 Store the set of indirect primary bases directly in the record layout builder.
llvm-svn: 82513
2009-09-22 03:02:06 +00:00
Anders Carlsson d6020c321a Record layout builder cleanup.
llvm-svn: 82502
2009-09-22 00:04:45 +00:00
Anders Carlsson 93b6d5e85e Temporary band-aid for handling empty classes somewhat better.
llvm-svn: 82124
2009-09-17 04:42:56 +00:00
Mike Stump 11289f4280 Remove tabs, and whitespace cleanups.
llvm-svn: 81346
2009-09-09 15:08:12 +00:00
Mike Stump 996576f3aa Refine vbase offset calculations. WIP.
llvm-svn: 79198
2009-08-16 19:04:13 +00:00
Mike Stump 22ea1f8a30 Cleanups and fixups for calculating the virtual base offsets. WIP.
llvm-svn: 79156
2009-08-16 01:46:26 +00:00
Mike Stump bcf756cbac Deconflate virtual base offsets from non-virtual base offsets.
Deconflate a virtual base primary from a non-virtual base.

llvm-svn: 78971
2009-08-14 01:44:03 +00:00
Mike Stump 590a7c780c We can't avoid doing the work to find all the indirect primary virtual
base classes as we'll need that to layout the virtual bases...

llvm-svn: 78954
2009-08-13 23:26:06 +00:00
Mike Stump c2f591b1e6 Refine vtable layout for virtual bases and keep better track of
primaries.  WIP.

llvm-svn: 78950
2009-08-13 22:53:07 +00:00
Mike Stump 1300754fdd Prep for vbase layout refinements. WIP.
llvm-svn: 78882
2009-08-13 02:02:14 +00:00
Mike Stump 6bb66bbd06 Refine virtual base layout. WIP.
llvm-svn: 78873
2009-08-13 00:34:14 +00:00
Mike Stump cb2752bb5d Remove another done audit FIXME.
llvm-svn: 78847
2009-08-12 22:10:00 +00:00
Mike Stump aa08da7906 Refactor a bit and remove some FIXME audit markers, now that the code
has been audited for correctness.

llvm-svn: 78846
2009-08-12 22:06:55 +00:00
Mike Stump 6f3793b406 Refine primary vbase selection ordering. WIP.
llvm-svn: 78844
2009-08-12 21:50:08 +00:00
Mike Stump 78696a70bf Implement more of the inductive case for vtable layout involving
virtual base primaries and improve the layout of classes with virtual
bases.  WIP.

Hey, I've decided I want a change to FileCheck, I need to ensure that
the group is together, nothing in between.  Can we change it to check
the match line is from the line immediately following the last matched
line, if the source for the matched line is immediately after the
source for the previously matched line?

// CHECK: 1
// CHECK: 2
// CHECK: 3

// CHECK: 4
// CHECK: 5
// CHECK: 6

would require 1 2 and 3 to be continuous in the output, and 4 5 and 6
to be continuous.

llvm-svn: 78638
2009-08-11 04:03:59 +00:00
Anders Carlsson 28a5fa29f3 Take #pragma pack into account when laying out structs. Fixes rdar://problem/7095436.
llvm-svn: 78490
2009-08-08 19:38:24 +00:00
Anders Carlsson 68e0b68289 Introduce a new PragmaPack attribute, and use it for #pragma pack. The PackedAttr now only represents __attribute__((packed)).
This is necessary because #pragma pack and __attribute__((packed)) have different semantics. No functionality change yet, but this lays the groundwork for fixing a record layout bug.

llvm-svn: 78483
2009-08-08 18:23:56 +00:00
Mike Stump c266c6d797 Add ability to generate vcall offsets for primary virtual base.
llvm-svn: 78396
2009-08-07 19:00:50 +00:00
Mike Stump 6b2556f829 Layout virtual bases. Work in progress.
llvm-svn: 78308
2009-08-06 13:41:24 +00:00
Mike Stump e9c85a7f58 Fix spell-o.
llvm-svn: 78303
2009-08-06 12:52:13 +00:00
Mike Stump 2509480813 Fixup object layout when we have a primary base (it goes first). Start preping for
virtual base layout.

llvm-svn: 78265
2009-08-06 00:38:46 +00:00
Mike Stump d8fe7b2792 Calculate the primary base class better and use that when laying down
the vtable.  Still a work in progress.

llvm-svn: 78252
2009-08-05 22:37:18 +00:00
Mike Stump bc78a728ee Add code to setup the vtable pointer in the constructor. Work in progress.
llvm-svn: 77699
2009-07-31 18:25:34 +00:00
Mike Stump 57724c2f7e Update based upon comments. Explain why we have an assert.
llvm-svn: 77612
2009-07-30 18:01:44 +00:00
Mike Stump 44b8e90369 We'll also need a vtable pointer if we have virtual bases.
llvm-svn: 77610
2009-07-30 17:53:53 +00:00
Mike Stump 3dc7eb9440 Add ability to layout the vtable pointer in trivial cases. I noticed
that we would silently do bad things with virtual bases in the layout
code, so, we just turn them off.  When people do better things with
them, we can turn them back on.

llvm-svn: 77556
2009-07-30 00:22:38 +00:00
Ted Kremenek c23c7e6a51 Change uses of:
Type::getAsReferenceType() -> Type::getAs<ReferenceType>()
  Type::getAsRecordType() -> Type::getAs<RecordType>()
  Type::getAsPointerType() -> Type::getAs<PointerType>()
  Type::getAsBlockPointerType() -> Type::getAs<BlockPointerType>()
  Type::getAsLValueReferenceType() -> Type::getAs<LValueReferenceType>()
  Type::getAsRValueReferenceType() -> Type::getAs<RValueReferenceType>()
  Type::getAsMemberPointerType() -> Type::getAs<MemberPointerType>()
  Type::getAsReferenceType() -> Type::getAs<ReferenceType>()
  Type::getAsTagType() -> Type::getAs<TagType>()
  
And remove Type::getAsReferenceType(), etc.

This change is similar to one I made a couple weeks ago, but that was partly
reverted pending some additional design discussion. With Doug's pending smart
pointer changes for Types, it seemed natural to take this approach.

llvm-svn: 77510
2009-07-29 21:53:49 +00:00
Fariborz Jahanian 7be1ad814b No longer need to keep base class offsets in the offset
table as it has its own place now.

llvm-svn: 77491
2009-07-29 18:50:06 +00:00
Anders Carlsson fc8cfa8b9f Add a field for C++ specific data to ASTRecordLayout. Use it to store the non-virtual size and alignment + base offsets.
llvm-svn: 77352
2009-07-28 19:24:15 +00:00
Fariborz Jahanian dedf1e4b1a ir-gen for non-virtual base class initialization
in constructors.

llvm-svn: 77087
2009-07-25 21:12:28 +00:00
Anders Carlsson 6d9f6f326d Handle layout of non-virtual base classes.
llvm-svn: 76348
2009-07-19 00:18:47 +00:00
Anders Carlsson 118ce16bf5 Refactor field layout into a separate function.
llvm-svn: 76343
2009-07-18 21:48:39 +00:00
Anders Carlsson 27b50135ee Rename NextOffset to DataSize, which better matches the Itanium C++ ABI
llvm-svn: 76339
2009-07-18 21:26:44 +00:00
Anders Carlsson 4f51628b02 More layout builder work.
llvm-svn: 76333
2009-07-18 20:50:59 +00:00
Anders Carlsson 7947433411 Add a new ASTRecordLayoutBuilder class. Not used yet.
llvm-svn: 76330
2009-07-18 20:20:21 +00:00