diff options
author | Anders Carlsson <andersca@mac.com> | 2009-04-10 05:31:15 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2009-04-10 05:31:15 +0000 |
commit | 2f1169f45b915c40c6f330af69e4e13dd18a5084 (patch) | |
tree | 3a998897724ecc2482d9acb03239d5ce3c0bddc5 /lib/AST/ASTContext.cpp | |
parent | 4df211412c87df3a5e2ae8330d6c7ff521df2646 (diff) |
Use correct alignment and size for references in records as well.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68769 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/ASTContext.cpp')
-rw-r--r-- | lib/AST/ASTContext.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp index ef4ff1526e..25ab97e7c7 100644 --- a/lib/AST/ASTContext.cpp +++ b/lib/AST/ASTContext.cpp @@ -580,6 +580,10 @@ void ASTRecordLayout::LayoutField(const FieldDecl *FD, unsigned FieldNo, FieldSize = 0; const ArrayType* ATy = Context.getAsArrayType(FD->getType()); FieldAlign = Context.getTypeAlign(ATy->getElementType()); + } else if (const ReferenceType *RT = FD->getType()->getAsReferenceType()) { + unsigned AS = RT->getPointeeType().getAddressSpace(); + FieldSize = Context.Target.getPointerWidth(AS); + FieldAlign = Context.Target.getPointerAlign(AS); } else { std::pair<uint64_t, unsigned> FieldInfo = Context.getTypeInfo(FD->getType()); |