diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2019-12-18 18:30:39 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2019-12-19 19:32:45 +0100 |
| commit | 20c6855484620eda011e4e4002c6f7f272a878c4 (patch) | |
| tree | e8143cbd4d72702e02a91cd68883c7117681954b /prog/prog.go | |
| parent | af9047c60a3db32d5e43c29321f8f531db051a63 (diff) | |
prog: refactor bitfields representation
All callers of BitfieldMiddle just want static size (0 for middle).
Make it so: Size for middle bitfields just returns 0. Removes lots of if's.
Introduce Type.UnitSize, which now holds the underlying type for bitfields.
This will be needed to fix #1542 b/c even if UnitSize=4 for last bitfield
Size can be anywhere from 0 to 4 (not necessary equal to UnitSize due to overlapping).
Diffstat (limited to 'prog/prog.go')
| -rw-r--r-- | prog/prog.go | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/prog/prog.go b/prog/prog.go index 83e5991d8..575f0da9b 100644 --- a/prog/prog.go +++ b/prog/prog.go @@ -193,9 +193,7 @@ func (arg *GroupArg) Size() uint64 { case *StructType: var size uint64 for _, fld := range arg.Inner { - if !fld.Type().BitfieldMiddle() { - size += fld.Size() - } + size += fld.Size() } if typ.AlignAttr != 0 && size%typ.AlignAttr != 0 { size += typ.AlignAttr - size%typ.AlignAttr |
