diff options
author | Devang Patel <dpatel@apple.com> | 2008-02-05 02:39:50 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2008-02-05 02:39:50 +0000 |
commit | eae1560d4fb99b9df814bc12c0419825996156cd (patch) | |
tree | b7d0f265c933266b30b112c9e5b303295dfe213e /CodeGen/CodeGenTypes.h | |
parent | 0ded75bc88b40607aa5baced6e4729774ed2df56 (diff) |
Cleanup InitListExpr code generation code.
Handle padding fields while initializing struct (fix PR 1962)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46736 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'CodeGen/CodeGenTypes.h')
-rw-r--r-- | CodeGen/CodeGenTypes.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/CodeGen/CodeGenTypes.h b/CodeGen/CodeGenTypes.h index 5ae49553ab..2ca3d3478c 100644 --- a/CodeGen/CodeGenTypes.h +++ b/CodeGen/CodeGenTypes.h @@ -15,6 +15,7 @@ #define CODEGEN_CODEGENTYPES_H #include "llvm/ADT/DenseMap.h" +#include "llvm/ADT/SmallSet.h" #include <vector> namespace llvm { @@ -42,7 +43,8 @@ namespace CodeGen { class CGRecordLayout { CGRecordLayout(); // DO NOT IMPLEMENT public: - CGRecordLayout(llvm::Type *T) : STy(T) { + CGRecordLayout(llvm::Type *T, llvm::SmallSet<unsigned, 8> &PF) + : STy(T), PaddingFields(PF) { // FIXME : Collect info about fields that requires adjustments // (i.e. fields that do not directly map to llvm struct fields.) } @@ -52,8 +54,17 @@ namespace CodeGen { return STy; } + bool isPaddingField(unsigned No) const { + return PaddingFields.count(No) != 0; + } + + unsigned getNumPaddingFields() { + return PaddingFields.size(); + } + private: llvm::Type *STy; + llvm::SmallSet<unsigned, 8> PaddingFields; }; /// CodeGenTypes - This class organizes the cross-module state that is used |