summaryrefslogtreecommitdiffstats
path: root/clang/CodeGen/CodeGenTypes.h
diff options
context:
space:
mode:
Diffstat (limited to 'clang/CodeGen/CodeGenTypes.h')
-rw-r--r--clang/CodeGen/CodeGenTypes.h13
1 files changed, 10 insertions, 3 deletions
diff --git a/clang/CodeGen/CodeGenTypes.h b/clang/CodeGen/CodeGenTypes.h
index 68dcd21b42f..a5b540188f4 100644
--- a/clang/CodeGen/CodeGenTypes.h
+++ b/clang/CodeGen/CodeGenTypes.h
@@ -78,12 +78,19 @@ class CodeGenTypes {
class BitFieldInfo {
public:
- explicit BitFieldInfo(unsigned N, unsigned B, unsigned E)
- : No(N), Begin(B), End(E) {}
+ explicit BitFieldInfo(unsigned N, unsigned B, unsigned E, unsigned A)
+ : No(N), Begin(B), End(E), AccessFieldNo(A) {}
private:
+ // No - Field number in llvm struct.
unsigned No;
unsigned Begin;
unsigned End;
+ // AccessFieldNo - llvm struct field number that is used to
+ // access this field. It may be not same as No. For example,
+ // struct S { char a; short b:2; }
+ // Here field 'b' is second field however it is accessed as
+ // 9th and 10th bitfield of first field whose type is short.
+ unsigned AccessFieldNo;
};
llvm::DenseMap<const FieldDecl *, BitFieldInfo> BitFields;
@@ -125,7 +132,7 @@ public:
/// addFieldInfo - Assign field number to field FD.
void addFieldInfo(const FieldDecl *FD, unsigned No, unsigned Begin,
- unsigned End);
+ unsigned End, unsigned AccessNo);
};
} // end namespace CodeGen
OpenPOWER on IntegriCloud