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