aboutsummaryrefslogtreecommitdiff
path: root/lib/AST/RecordLayoutBuilder.cpp
AgeCommit message (Collapse)Author
2009-08-05Calculate the primary base class better and use that when laying downMike Stump
the vtable. Still a work in progress. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78252 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-31Add code to setup the vtable pointer in the constructor. Work in progress.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77699 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-30Update based upon comments. Explain why we have an assert.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77612 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-30We'll also need a vtable pointer if we have virtual bases.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77610 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-30Add ability to layout the vtable pointer in trivial cases. I noticedMike Stump
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77556 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-29Change uses of:Ted Kremenek
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77510 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-29No longer need to keep base class offsets in the offsetFariborz Jahanian
table as it has its own place now. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77491 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-28Add a field for C++ specific data to ASTRecordLayout. Use it to store the ↵Anders Carlsson
non-virtual size and alignment + base offsets. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77352 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-25ir-gen for non-virtual base class initializationFariborz Jahanian
in constructors. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77087 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-19Handle layout of non-virtual base classes.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76348 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-18Refactor field layout into a separate function.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76343 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-18Rename NextOffset to DataSize, which better matches the Itanium C++ ABIAnders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76339 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-18More layout builder work.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76333 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-18Add a new ASTRecordLayoutBuilder class. Not used yet.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76330 91177308-0d34-0410-b5e6-96231b3b80d8