summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/RecordLayoutBuilder.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Improve key-function computation for templates. In particular:Douglas Gregor2010-01-051-8/+3
| | | | | | | | | | | | | | | | - 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
* Misc key function fixes.Eli Friedman2009-12-081-1/+10
| | | | llvm-svn: 90831
* Instantiated or specialized class templates never have a key function. This ↵Anders Carlsson2009-12-071-0/+5
| | | | | | (and the previous check-in) fixes PR5557. llvm-svn: 90753
* Move key functions to a separate map.Anders Carlsson2009-12-071-33/+35
| | | | llvm-svn: 90745
* Move helper onto CXXMethodDecl.Eli Friedman2009-12-061-17/+2
| | | | llvm-svn: 90716
* Tweak "key function" rules so that they work for templates with virtualEli Friedman2009-12-051-1/+15
| | | | | | inline functions. llvm-svn: 90645
* In Sema, whenever we think that a function is going to cause a vtable to be ↵Anders Carlsson2009-12-021-0/+5
| | | | | | generated, we mark any virtual implicit member functions as referenced. llvm-svn: 90327
* Have ASTRecordLayout keep track of the key function, in preparation of ↵Anders Carlsson2009-11-301-1/+29
| | | | | | fixing a synthetic ctor/dtor bug. llvm-svn: 90168
* Use a PointerIntPair for the PrimaryBaseInfo. Yay for clever LLVM data ↵Anders Carlsson2009-11-271-12/+13
| | | | | | structures! llvm-svn: 90020
* Add a new PrimaryBaseInfo struct that combines the record decl of a primary ↵Anders Carlsson2009-11-271-28/+31
| | | | | | base with whether it's virtual or not. llvm-svn: 90018
* When laying out bitfields, make sure that the data size is always aligned to ↵Anders Carlsson2009-11-221-11/+19
| | | | | | a byte. This fixes PR5580. llvm-svn: 89611
* Move bit-field layout out into a separate function. No functionality change.Anders Carlsson2009-11-221-69/+86
| | | | llvm-svn: 89604
* Added rudimentary C++0x attribute support.Alexis Hunt2009-11-211-6/+8
| | | | | | | | | | | | | | 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
* Fixup spacing.Mike Stump2009-11-111-2/+1
| | | | llvm-svn: 86792
* Refine layout for indirect virtual base classes.Mike Stump2009-11-051-37/+32
| | | | llvm-svn: 86116
* Audit the code for places where it is assumed that every base specifier ↵Sebastian Redl2009-10-251-0/+14
| | | | | | refers to a RecordType. Add assertions or conditions as appropriate. This fixes another crash in the Apache stdlib vector. llvm-svn: 85055
* Address comment from Daniel.Anders Carlsson2009-09-261-1/+1
| | | | llvm-svn: 82865
* Rename NextOffset to DataSize.Anders Carlsson2009-09-261-12/+12
| | | | llvm-svn: 82832
* Start at NextOffset when laying out bases as well.Anders Carlsson2009-09-261-1/+1
| | | | llvm-svn: 82831
* Use NextOffset when laying out a field.Anders Carlsson2009-09-261-1/+1
| | | | llvm-svn: 82828
* Even more work on empty classes.Anders Carlsson2009-09-251-7/+31
| | | | llvm-svn: 82770
* Who would have thought that empty classes were so tricky? Handle cases where ↵Anders Carlsson2009-09-251-0/+35
| | | | | | an empty virtual base class needs to be moved aside because it conflicts with the first field. llvm-svn: 82746
* Handle array fields that contain empty structs.Anders Carlsson2009-09-251-2/+22
| | | | llvm-svn: 82744
* More work on empty classes.Anders Carlsson2009-09-251-0/+23
| | | | llvm-svn: 82736
* More improvements with laying out empty bases.Anders Carlsson2009-09-241-9/+52
| | | | llvm-svn: 82682
* More work on empty classes.Anders Carlsson2009-09-241-8/+23
| | | | llvm-svn: 82679
* Scaffolding for supporting empty bases/fields.Anders Carlsson2009-09-241-16/+34
| | | | llvm-svn: 82678
* If we already set a primary base, don't set it to the first nearly empty ↵Anders Carlsson2009-09-221-2/+2
| | | | | | base class. llvm-svn: 82563
* Explicitly initialize the PrimaryBase and PrimaryBaseWasVirtual members.Anders Carlsson2009-09-221-5/+3
| | | | llvm-svn: 82560
* Yes.Mike Stump2009-09-221-1/+0
| | | | llvm-svn: 82559
* Store the set of indirect primary bases directly in the record layout builder.Anders Carlsson2009-09-221-35/+35
| | | | llvm-svn: 82513
* Record layout builder cleanup.Anders Carlsson2009-09-221-17/+6
| | | | llvm-svn: 82502
* Temporary band-aid for handling empty classes somewhat better.Anders Carlsson2009-09-171-1/+3
| | | | llvm-svn: 82124
* Remove tabs, and whitespace cleanups.Mike Stump2009-09-091-51/+51
| | | | llvm-svn: 81346
* Refine vbase offset calculations. WIP.Mike Stump2009-08-161-13/+30
| | | | llvm-svn: 79198
* Cleanups and fixups for calculating the virtual base offsets. WIP.Mike Stump2009-08-161-9/+48
| | | | llvm-svn: 79156
* Deconflate virtual base offsets from non-virtual base offsets.Mike Stump2009-08-141-11/+23
| | | | | | Deconflate a virtual base primary from a non-virtual base. llvm-svn: 78971
* We can't avoid doing the work to find all the indirect primary virtualMike Stump2009-08-131-16/+12
| | | | | | base classes as we'll need that to layout the virtual bases... llvm-svn: 78954
* Refine vtable layout for virtual bases and keep better track ofMike Stump2009-08-131-13/+18
| | | | | | primaries. WIP. llvm-svn: 78950
* Prep for vbase layout refinements. WIP.Mike Stump2009-08-131-5/+13
| | | | llvm-svn: 78882
* Refine virtual base layout. WIP.Mike Stump2009-08-131-1/+1
| | | | llvm-svn: 78873
* Remove another done audit FIXME.Mike Stump2009-08-121-1/+0
| | | | llvm-svn: 78847
* Refactor a bit and remove some FIXME audit markers, now that the codeMike Stump2009-08-121-3/+1
| | | | | | has been audited for correctness. llvm-svn: 78846
* Refine primary vbase selection ordering. WIP.Mike Stump2009-08-121-15/+27
| | | | llvm-svn: 78844
* Implement more of the inductive case for vtable layout involvingMike Stump2009-08-111-23/+22
| | | | | | | | | | | | | | | | | | | | | | | | 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
* Take #pragma pack into account when laying out structs. Fixes ↵Anders Carlsson2009-08-081-30/+26
| | | | | | rdar://problem/7095436. llvm-svn: 78490
* Introduce a new PragmaPack attribute, and use it for #pragma pack. The ↵Anders Carlsson2009-08-081-7/+9
| | | | | | | | 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
* Add ability to generate vcall offsets for primary virtual base.Mike Stump2009-08-071-7/+8
| | | | llvm-svn: 78396
* Layout virtual bases. Work in progress.Mike Stump2009-08-061-4/+23
| | | | llvm-svn: 78308
* Fix spell-o.Mike Stump2009-08-061-1/+1
| | | | llvm-svn: 78303
OpenPOWER on IntegriCloud