diff options
author | Anders Carlsson <andersca@mac.com> | 2009-08-23 01:25:01 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2009-08-23 01:25:01 +0000 |
commit | fc3eaa47fa2ef70ab21131005c328adda3020737 (patch) | |
tree | 777338d19e91e829f91ac7bcad654dab0647c2a1 /lib/CodeGen/CGRecordLayoutBuilder.h | |
parent | 341bdf8d565f5282779a0ffd2d2b77f3a38b735e (diff) |
More work towards zero-initializing structs that contain member pointers in constant expressions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79805 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/CGRecordLayoutBuilder.h')
-rw-r--r-- | lib/CodeGen/CGRecordLayoutBuilder.h | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/CodeGen/CGRecordLayoutBuilder.h b/lib/CodeGen/CGRecordLayoutBuilder.h index ff551a4f13..63ddc10df5 100644 --- a/lib/CodeGen/CGRecordLayoutBuilder.h +++ b/lib/CodeGen/CGRecordLayoutBuilder.h @@ -36,6 +36,10 @@ class CGRecordLayoutBuilder { /// Packed - Whether the resulting LLVM struct will be packed or not. bool Packed; + /// ContainsMemberPointer - Whether one of the fields is a member pointer + /// or is a struct that contains a member pointer. + bool ContainsMemberPointer; + /// Alignment - Contains the alignment of the RecordDecl. unsigned Alignment; @@ -72,7 +76,8 @@ class CGRecordLayoutBuilder { llvm::SmallVector<LLVMBitFieldInfo, 16> LLVMBitFields; CGRecordLayoutBuilder(CodeGenTypes &Types) - : Types(Types), Packed(false), Alignment(0), AlignmentAsLLVMStruct(1) + : Types(Types), Packed(false), ContainsMemberPointer(false) + , Alignment(0), AlignmentAsLLVMStruct(1) , BitsAvailableInLastField(0), NextFieldOffsetInBytes(0) { } /// Layout - Will layout a RecordDecl. @@ -113,6 +118,9 @@ class CGRecordLayoutBuilder { unsigned getTypeAlignment(const llvm::Type *Ty) const; uint64_t getTypeSizeInBytes(const llvm::Type *Ty) const; + /// CheckForMemberPointer - Check if the field contains a member pointer. + void CheckForMemberPointer(const FieldDecl *FD); + public: /// ComputeLayout - Return the right record layout for a given record decl. static CGRecordLayout *ComputeLayout(CodeGenTypes &Types, |