Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | Improve key-function computation for templates. In particular: | Douglas Gregor | 2010-01-05 | 1 | -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 Friedman | 2009-12-08 | 1 | -1/+10 | |
| | | | | llvm-svn: 90831 | |||||
* | Instantiated or specialized class templates never have a key function. This ↵ | Anders Carlsson | 2009-12-07 | 1 | -0/+5 | |
| | | | | | | (and the previous check-in) fixes PR5557. llvm-svn: 90753 | |||||
* | Move key functions to a separate map. | Anders Carlsson | 2009-12-07 | 1 | -33/+35 | |
| | | | | llvm-svn: 90745 | |||||
* | Move helper onto CXXMethodDecl. | Eli Friedman | 2009-12-06 | 1 | -17/+2 | |
| | | | | llvm-svn: 90716 | |||||
* | Tweak "key function" rules so that they work for templates with virtual | Eli Friedman | 2009-12-05 | 1 | -1/+15 | |
| | | | | | | inline functions. llvm-svn: 90645 | |||||
* | In Sema, whenever we think that a function is going to cause a vtable to be ↵ | Anders Carlsson | 2009-12-02 | 1 | -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 Carlsson | 2009-11-30 | 1 | -1/+29 | |
| | | | | | | fixing a synthetic ctor/dtor bug. llvm-svn: 90168 | |||||
* | Use a PointerIntPair for the PrimaryBaseInfo. Yay for clever LLVM data ↵ | Anders Carlsson | 2009-11-27 | 1 | -12/+13 | |
| | | | | | | structures! llvm-svn: 90020 | |||||
* | Add a new PrimaryBaseInfo struct that combines the record decl of a primary ↵ | Anders Carlsson | 2009-11-27 | 1 | -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 Carlsson | 2009-11-22 | 1 | -11/+19 | |
| | | | | | | a byte. This fixes PR5580. llvm-svn: 89611 | |||||
* | Move bit-field layout out into a separate function. No functionality change. | Anders Carlsson | 2009-11-22 | 1 | -69/+86 | |
| | | | | llvm-svn: 89604 | |||||
* | Added rudimentary C++0x attribute support. | Alexis Hunt | 2009-11-21 | 1 | -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 Stump | 2009-11-11 | 1 | -2/+1 | |
| | | | | llvm-svn: 86792 | |||||
* | Refine layout for indirect virtual base classes. | Mike Stump | 2009-11-05 | 1 | -37/+32 | |
| | | | | llvm-svn: 86116 | |||||
* | Audit the code for places where it is assumed that every base specifier ↵ | Sebastian Redl | 2009-10-25 | 1 | -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 Carlsson | 2009-09-26 | 1 | -1/+1 | |
| | | | | llvm-svn: 82865 | |||||
* | Rename NextOffset to DataSize. | Anders Carlsson | 2009-09-26 | 1 | -12/+12 | |
| | | | | llvm-svn: 82832 | |||||
* | Start at NextOffset when laying out bases as well. | Anders Carlsson | 2009-09-26 | 1 | -1/+1 | |
| | | | | llvm-svn: 82831 | |||||
* | Use NextOffset when laying out a field. | Anders Carlsson | 2009-09-26 | 1 | -1/+1 | |
| | | | | llvm-svn: 82828 | |||||
* | Even more work on empty classes. | Anders Carlsson | 2009-09-25 | 1 | -7/+31 | |
| | | | | llvm-svn: 82770 | |||||
* | Who would have thought that empty classes were so tricky? Handle cases where ↵ | Anders Carlsson | 2009-09-25 | 1 | -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 Carlsson | 2009-09-25 | 1 | -2/+22 | |
| | | | | llvm-svn: 82744 | |||||
* | More work on empty classes. | Anders Carlsson | 2009-09-25 | 1 | -0/+23 | |
| | | | | llvm-svn: 82736 | |||||
* | More improvements with laying out empty bases. | Anders Carlsson | 2009-09-24 | 1 | -9/+52 | |
| | | | | llvm-svn: 82682 | |||||
* | More work on empty classes. | Anders Carlsson | 2009-09-24 | 1 | -8/+23 | |
| | | | | llvm-svn: 82679 | |||||
* | Scaffolding for supporting empty bases/fields. | Anders Carlsson | 2009-09-24 | 1 | -16/+34 | |
| | | | | llvm-svn: 82678 | |||||
* | If we already set a primary base, don't set it to the first nearly empty ↵ | Anders Carlsson | 2009-09-22 | 1 | -2/+2 | |
| | | | | | | base class. llvm-svn: 82563 | |||||
* | Explicitly initialize the PrimaryBase and PrimaryBaseWasVirtual members. | Anders Carlsson | 2009-09-22 | 1 | -5/+3 | |
| | | | | llvm-svn: 82560 | |||||
* | Yes. | Mike Stump | 2009-09-22 | 1 | -1/+0 | |
| | | | | llvm-svn: 82559 | |||||
* | Store the set of indirect primary bases directly in the record layout builder. | Anders Carlsson | 2009-09-22 | 1 | -35/+35 | |
| | | | | llvm-svn: 82513 | |||||
* | Record layout builder cleanup. | Anders Carlsson | 2009-09-22 | 1 | -17/+6 | |
| | | | | llvm-svn: 82502 | |||||
* | Temporary band-aid for handling empty classes somewhat better. | Anders Carlsson | 2009-09-17 | 1 | -1/+3 | |
| | | | | llvm-svn: 82124 | |||||
* | Remove tabs, and whitespace cleanups. | Mike Stump | 2009-09-09 | 1 | -51/+51 | |
| | | | | llvm-svn: 81346 | |||||
* | Refine vbase offset calculations. WIP. | Mike Stump | 2009-08-16 | 1 | -13/+30 | |
| | | | | llvm-svn: 79198 | |||||
* | Cleanups and fixups for calculating the virtual base offsets. WIP. | Mike Stump | 2009-08-16 | 1 | -9/+48 | |
| | | | | llvm-svn: 79156 | |||||
* | Deconflate virtual base offsets from non-virtual base offsets. | Mike Stump | 2009-08-14 | 1 | -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 virtual | Mike Stump | 2009-08-13 | 1 | -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 of | Mike Stump | 2009-08-13 | 1 | -13/+18 | |
| | | | | | | primaries. WIP. llvm-svn: 78950 | |||||
* | Prep for vbase layout refinements. WIP. | Mike Stump | 2009-08-13 | 1 | -5/+13 | |
| | | | | llvm-svn: 78882 | |||||
* | Refine virtual base layout. WIP. | Mike Stump | 2009-08-13 | 1 | -1/+1 | |
| | | | | llvm-svn: 78873 | |||||
* | Remove another done audit FIXME. | Mike Stump | 2009-08-12 | 1 | -1/+0 | |
| | | | | llvm-svn: 78847 | |||||
* | Refactor a bit and remove some FIXME audit markers, now that the code | Mike Stump | 2009-08-12 | 1 | -3/+1 | |
| | | | | | | has been audited for correctness. llvm-svn: 78846 | |||||
* | Refine primary vbase selection ordering. WIP. | Mike Stump | 2009-08-12 | 1 | -15/+27 | |
| | | | | llvm-svn: 78844 | |||||
* | Implement more of the inductive case for vtable layout involving | Mike Stump | 2009-08-11 | 1 | -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 Carlsson | 2009-08-08 | 1 | -30/+26 | |
| | | | | | | rdar://problem/7095436. llvm-svn: 78490 | |||||
* | Introduce a new PragmaPack attribute, and use it for #pragma pack. The ↵ | Anders Carlsson | 2009-08-08 | 1 | -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 Stump | 2009-08-07 | 1 | -7/+8 | |
| | | | | llvm-svn: 78396 | |||||
* | Layout virtual bases. Work in progress. | Mike Stump | 2009-08-06 | 1 | -4/+23 | |
| | | | | llvm-svn: 78308 | |||||
* | Fix spell-o. | Mike Stump | 2009-08-06 | 1 | -1/+1 | |
| | | | | llvm-svn: 78303 |