diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2018-06-30 13:27:24 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2018-06-30 13:27:24 +0200 |
| commit | 5012ddc8ebeb996abdf6da94fbd489420860d5e9 (patch) | |
| tree | f1a03b439e94c3c2a6b4427c13b3db5765272562 /pkg/compiler | |
| parent | 906b9e38f1042fb822a8b568e3633b575a8bc71d (diff) | |
prog: detect when flags are a bitmask
Diffstat (limited to 'pkg/compiler')
| -rw-r--r-- | pkg/compiler/types.go | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/pkg/compiler/types.go b/pkg/compiler/types.go index 97f7d18c4..c41ce4bdf 100644 --- a/pkg/compiler/types.go +++ b/pkg/compiler/types.go @@ -244,9 +244,20 @@ var typeFlags = &typeDesc{ Kind: prog.IntPlain, } } + bitmask := true + var combined uint64 + values := genIntArray(f.Values) + for _, v := range values { + if v&combined != 0 { + bitmask = false + break + } + combined |= v + } return &prog.FlagsType{ IntTypeCommon: base, - Vals: genIntArray(f.Values), + Vals: values, + BitMask: bitmask, } }, } |
